kaseyaws 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa55ab6fd4e0e3dd702df0c3b29bd1775afb6e3a
4
- data.tar.gz: 6eab6b4fcb01edaa4e69f5698b7881d58fc11242
3
+ metadata.gz: 780aecac9c46c96b12234d9e8cb5f6a910077a8b
4
+ data.tar.gz: e4a9e46956778d2e4ee53fc7cf48608b40a1dd4f
5
5
  SHA512:
6
- metadata.gz: d69947ee91373caa8f9a23f1889ad00bd4a50ff2d1830fd91e4809cbb20912c490414902208225c00f731cad4aa1ea48ec315fc7c38bb23d51ca02b3e7e78956
7
- data.tar.gz: 5b6153c44c1d017c213be11ece6bb273d22eec05aaf965b239ad2ad700552cca036c6c8f5df1ca5d1f541e686987182b6dff22b348dcb5f05f2b5ad42ce72d78
6
+ metadata.gz: 1c265dc2bad37597cdc232942e2a6b6f3e967b30c9c6070dd9676cf5f66db206a64fab4028690e166849fdfe18ad1d36fcd6b57cf1f47fac9be57a098834ea44
7
+ data.tar.gz: 9ce9d480b7cd7e1983b5f16021c0d28bac3645aac7650c616fefd0c9fd8789c009cc8af37a4f80705cff7b6bf45d944772ce21a29708e0f73db313b4efed262b
data/.yardopts ADDED
@@ -0,0 +1,4 @@
1
+ --readme README.md
2
+ --title 'kaseyaws documentation'
3
+ --charset utf-8
4
+ 'lib/**/*.rb'
data/kaseyaws.gemspec CHANGED
@@ -6,10 +6,10 @@ require 'kaseyaws/version'
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "kaseyaws"
8
8
  s.version = KaseyaWS::VERSION
9
- s.authors = ["Phillip Henslee"]
10
- s.email = ["phenslee@towerdigital.us"]
11
- s.description = ["A Ruby client for Kaseya web services"]
12
- s.summary = ["A simple client for the Kaseya VSA web service"]
9
+ s.authors = "Phillip Henslee"
10
+ s.email = "phenslee@towerdigital.us"
11
+ s.description = "A Ruby Gem for Kaseya's VSA web services"
12
+ s.summary = "A simple client for the Kaseya VSA web service"
13
13
  s.homepage = "https://github.com/towerdigital/kaseyaws"
14
14
  s.license = "MIT"
15
15
 
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright 2013 by Phillip Henslee (phenslee@towerdigital.us).
4
+ # All rights reserved.
5
+
6
+ # Permission is granted for use, copying, modification, distribution,
7
+ # and distribution of modified versions of this work as long as the
8
+ # above copyright notice is included.
9
+ #
10
+
11
+ # Provides a simple client for the Kaseya VSA web service.
12
+
13
+ require "savon"
14
+
15
+ module KaseyaWS
16
+
17
+ class Client
18
+ HASH_ALGORITHM = "SHA-256"
19
+ attr_accessor :client
20
+
21
+ def initialize (username,password,hostname)
22
+
23
+ @vsa_serviceurl = "https://" + hostname + "/vsaWS/kaseyaWS.asmx?WSDL"
24
+ @client_ip = KaseyaWS::Security.client_ip
25
+ @savon_options={
26
+ wsdl: @vsa_serviceurl,
27
+ convert_request_keys_to: :camelcase,
28
+ env_namespace: :soap,
29
+ open_timeout: 30,
30
+ log: false
31
+ }
32
+ @sessionid = self.authenticate(username,password)
33
+
34
+ end
35
+
36
+ def add_mach_group_to_scope(group_name,scope_name)
37
+
38
+ response = self.client.call(:add_mach_group_to_scope, message: {req:[{
39
+ group_name: group_name,
40
+ scope_name: scope_name,
41
+ browser_ip: @client_ip,
42
+ session_i_d: @sessionid}]}
43
+ )
44
+ response.body[:add_mach_group_to_scope_response][:add_mach_group_to_scope_result]
45
+ end
46
+
47
+ def add_org_to_scope(company_id,scope_id)
48
+
49
+ response = self.client.call(:add_org_to_scope, message: {req:[{
50
+ company_i_d: company_id,
51
+ scope_i_d: scope_id,
52
+ session_i_d: @sessionid}]}
53
+ )
54
+ response.body[:add_org_to_scope_response][:add_org_to_scope_result]
55
+ end
56
+
57
+ def add_user_to_role(username,role_id)
58
+
59
+ response = self.client.call(:add_user_to_role, message: {req:[{
60
+ user_name: user_name,
61
+ role_i_d: role_id,
62
+ session_i_d: @sessionid}]}
63
+ )
64
+ response.body[:add_user_to_role_response][:add_user_to_role_result]
65
+ end
66
+
67
+ def authenticate(username,password)
68
+
69
+ random_number = KaseyaWS::Security.secure_random
70
+ covered_password = KaseyaWS::Security.compute_covered_password(username,password, random_number, HASH_ALGORITHM)
71
+ browser_ip = @client_ip
72
+
73
+ self.client = Savon::Client.new(@savon_options)
74
+
75
+ response = self.client.call(:authenticate, message: {req:[{
76
+ user_name: username,
77
+ covered_password: covered_password,
78
+ random_number: random_number,
79
+ browser_ip: browser_ip,
80
+ hashing_algorithm: HASH_ALGORITHM}]}
81
+ )
82
+ @sessionid = response.body[:authenticate_response][:authenticate_result][:session_id]
83
+ end
84
+
85
+ def close_alarm (monitor_alarm_id, notes)
86
+
87
+ response = self.client.call(:close_alarm, message: {req:[{
88
+ monitor_alarm_i_d: monitor_alarm_id,
89
+ notes: notes,
90
+ browser_ip: @client_ip,
91
+ session_i_d: @sessionid}]}
92
+ )
93
+ response.body[:close_alarm_response][:close_alarm_result]
94
+ end
95
+
96
+ def create_machine_group (group_name,org_name,parent_name)
97
+
98
+ response = self.client.call(:create_machine_group, message: {req:[{
99
+ group_name: group_name,
100
+ org_name: org_name,
101
+ parent_name: parent_name,
102
+ browser_ip: @client_ip,
103
+ session_i_d: @sessionid}]}
104
+ )
105
+ response.body[:create_machine_group_response][:create_machine_group_result]
106
+ end
107
+
108
+ def create_role (role_name,role_type,parent_role_name)
109
+
110
+ response = self.client.call(:create_role, message: {req:[{
111
+ role_name: role_name,
112
+ role_type: role_type,
113
+ parent_role_name: parent_role_name,
114
+ browser_ip: @client_ip,
115
+ session_i_d: @sessionid}]}
116
+ )
117
+ response.body[:create_role_response][:create_role_result]
118
+ end
119
+
120
+ def delete_admin (user_name)
121
+
122
+ response = self.client.call(:delete_admin, message: {req:[{
123
+ user_name: user_name,
124
+ browser_ip: @client_ip,
125
+ session_i_d: @sessionid}]}
126
+ )
127
+ response.body[:delete_admin_response][:delete_admin_result]
128
+ end
129
+
130
+ def get_alarm (monitor_alarm_id)
131
+
132
+ response = self.client.call(:get_alarm, message: {req:[{
133
+ monitor_alarm_i_d: monitor_alarm_id,
134
+ browser_ip: @client_ip,
135
+ session_i_d: @sessionid}]}
136
+ )
137
+ response.body[:get_alarm_response][:get_alarm_result]
138
+ end
139
+
140
+ def get_alarm_list (get_all_records=true)
141
+
142
+ response = self.client.call(:get_alarm_list, message: {req:[{
143
+ return_all_records: get_all_records,
144
+ browser_ip: @client_ip,
145
+ session_i_d: @sessionid}]}
146
+ )
147
+ response.body[:get_alarm_list_response][:get_alarm_list_result]
148
+ end
149
+
150
+ def get_machine(machine_group_id)
151
+
152
+ response = self.client.call(:get_machine, message: {req:[{
153
+ machine___group_i_d: machine_group_id,
154
+ browser_ip: @client_ip,
155
+ session_i_d: @sessionid}]}
156
+ )
157
+ response.body[:get_machine_response][:get_machine_result]
158
+ end
159
+
160
+ def get_machine_group_list
161
+
162
+ response = self.client.call(:get_machine_group_list, message: {req:[{
163
+ browser_ip: @client_ip,
164
+ session_i_d: @sessionid}]}
165
+ )
166
+ response.body[:get_machine_group_list_response][:get_machine_group_list_result]
167
+ end
168
+
169
+ def get_machine_list(machine_group,machine_collection)
170
+
171
+ response = self.client.call(:get_machine_list, message: {req:[{
172
+ machine_group: machine_group,
173
+ machine_collection: machine_collection,
174
+ browser_ip: @client_ip,
175
+ session_i_d: @sessionid}]}
176
+ )
177
+ response.body[:get_machine_list_response][:get_machine_list_result]
178
+ end
179
+
180
+ end
181
+ end
@@ -2,7 +2,7 @@ module KaseyaWS
2
2
  VERSION_NUMBERS = [
3
3
  VERSION_MAJOR = 0,
4
4
  VERSION_MINOR = 0,
5
- VERSION_BUILD = 2,
5
+ VERSION_BUILD = 3,
6
6
  ]
7
7
  VERSION = VERSION_NUMBERS.join(".")
8
8
  end
data/lib/kaseyaws.rb CHANGED
@@ -12,167 +12,6 @@
12
12
 
13
13
  require "kaseyaws/version"
14
14
  require "kaseyaws/security"
15
- require "savon"
15
+ require "kaseyaws/client"
16
16
 
17
- module KaseyaWS
18
17
 
19
- class Client
20
- HASH_ALGORITHM = "SHA-256"
21
- attr_accessor :client
22
-
23
- def initialize (username,password,hostname)
24
-
25
- @vsa_serviceurl = "https://" + hostname + "/vsaWS/kaseyaWS.asmx?WSDL"
26
- @client_ip = KaseyaWS::Security.client_ip
27
- @savon_options={
28
- wsdl: @vsa_serviceurl,
29
- convert_request_keys_to: :camelcase,
30
- env_namespace: :soap,
31
- open_timeout: 30,
32
- log: false
33
- }
34
- @sessionid = self.authenticate(username,password)
35
-
36
- end
37
-
38
- # TODO To be added...
39
- # def add_org(org_ref, org_name, default_dept_name, default_mg_name, website, no_emps, ann_revenue,
40
- # method_of_contact, org_parent_ref, addr1, city, state, postal_code, country_ref, org_type
41
- # primary_email, primary_phone, primary_fax, primary_staff_fk, browser_ip, sesion_id)
42
-
43
- # client = Savon.client(@savon_options)
44
-
45
- # response = client.call(:add_org, message: {req:[{
46
- # group_name: group_name,
47
- # scope_name: scope_name,
48
- # browser_ip: @client_ip,
49
- # session_i_d: @sessionid}]}
50
- # )
51
- # response.body[:get_machine_list_response][:get_machine_list_result]
52
- # end
53
-
54
-
55
- def add_mach_group_to_scope(group_name,scope_name)
56
-
57
- response = self.client.call(:add_mach_group_to_scope, message: {req:[{
58
- group_name: group_name,
59
- scope_name: scope_name,
60
- browser_ip: @client_ip,
61
- session_i_d: @sessionid}]}
62
- )
63
- response.body[:add_mach_group_to_scope_response][:add_mach_group_to_scope_result]
64
- end
65
-
66
- def add_org_to_scope(company_id,scope_id)
67
-
68
- response = self.client.call(:add_org_to_scope, message: {req:[{
69
- company_i_d: company_id,
70
- scope_i_d: scope_id,
71
- session_i_d: @sessionid}]}
72
- )
73
- response.body[:add_org_to_scope_response][:add_org_to_scope_result]
74
- end
75
-
76
- def add_user_to_role(username,role_id)
77
-
78
- response = self.client.call(:add_user_to_role, message: {req:[{
79
- user_name: user_name,
80
- role_i_d: role_id,
81
- session_i_d: @sessionid}]}
82
- )
83
- response.body[:add_user_to_role_response][:add_user_to_role_result]
84
- end
85
-
86
- def authenticate(username,password)
87
-
88
- random_number = KaseyaWS::Security.secure_random
89
- covered_password = KaseyaWS::Security.compute_covered_password(username,password, random_number, HASH_ALGORITHM)
90
- browser_ip = @client_ip
91
-
92
- self.client = Savon::Client.new(@savon_options)
93
-
94
- response = self.client.call(:authenticate, message: {req:[{
95
- user_name: username,
96
- covered_password: covered_password,
97
- random_number: random_number,
98
- browser_ip: browser_ip,
99
- hashing_algorithm: HASH_ALGORITHM}]}
100
- )
101
- @sessionid = response.body[:authenticate_response][:authenticate_result][:session_id]
102
- end
103
-
104
- def close_alarm (monitor_alarm_id, notes)
105
-
106
- response = self.client.call(:close_alarm, message: {req:[{
107
- monitor_alarm_i_d: monitor_alarm_id,
108
- notes: notes,
109
- browser_ip: @client_ip,
110
- session_i_d: @sessionid}]}
111
- )
112
- response.body[:close_alarm_response][:close_alarm_result]
113
- end
114
-
115
- def create_role (role_name,role_type,parent_role_name)
116
-
117
- response = self.client.call(:create_role, message: {req:[{
118
- role_name: role_name,
119
- role_type: role_type,
120
- parent_role_name: parent_role_name,
121
- browser_ip: @client_ip,
122
- session_i_d: @sessionid}]}
123
- )
124
- response.body[:create_role_response][:create_role_result]
125
- end
126
-
127
- def get_alarm (monitor_alarm_id)
128
-
129
- response = self.client.call(:get_alarm, message: {req:[{
130
- monitor_alarm_i_d: monitor_alarm_id,
131
- browser_ip: @client_ip,
132
- session_i_d: @sessionid}]}
133
- )
134
- response.body[:get_alarm_response][:get_alarm_result]
135
- end
136
-
137
- def get_alarm_list (get_all_records=true)
138
-
139
- response = self.client.call(:get_alarm_list, message: {req:[{
140
- return_all_records: get_all_records,
141
- browser_ip: @client_ip,
142
- session_i_d: @sessionid}]}
143
- )
144
- response.body[:get_alarm_list_response][:get_alarm_list_result]
145
- end
146
-
147
- def get_machine(machine_group_id)
148
-
149
- response = self.client.call(:get_machine, message: {req:[{
150
- machine___group_i_d: machine_group_id,
151
- browser_ip: @client_ip,
152
- session_i_d: @sessionid}]}
153
- )
154
- response.body[:get_machine_response][:get_machine_result]
155
- end
156
-
157
- def get_machine_group_list
158
-
159
- response = self.client.call(:get_machine_group_list, message: {req:[{
160
- browser_ip: @client_ip,
161
- session_i_d: @sessionid}]}
162
- )
163
- response.body[:get_machine_group_list_response][:get_machine_group_list_result]
164
- end
165
-
166
- def get_machine_list(machine_group,machine_collection)
167
-
168
- response = self.client.call(:get_machine_list, message: {req:[{
169
- machine_group: machine_group,
170
- machine_collection: machine_collection,
171
- browser_ip: @client_ip,
172
- session_i_d: @sessionid}]}
173
- )
174
- response.body[:get_machine_list_response][:get_machine_list_result]
175
- end
176
-
177
- end
178
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaseyaws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phillip Henslee
@@ -66,20 +66,21 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: '["A Ruby client for Kaseya web services"]'
70
- email:
71
- - phenslee@towerdigital.us
69
+ description: A Ruby Gem for Kaseya's VSA web services
70
+ email: phenslee@towerdigital.us
72
71
  executables: []
73
72
  extensions: []
74
73
  extra_rdoc_files: []
75
74
  files:
76
75
  - .gitignore
76
+ - .yardopts
77
77
  - Gemfile
78
78
  - LICENSE.txt
79
79
  - README.md
80
80
  - Rakefile
81
81
  - kaseyaws.gemspec
82
82
  - lib/kaseyaws.rb
83
+ - lib/kaseyaws/client.rb
83
84
  - lib/kaseyaws/security.rb
84
85
  - lib/kaseyaws/version.rb
85
86
  homepage: https://github.com/towerdigital/kaseyaws
@@ -105,5 +106,6 @@ rubyforge_project:
105
106
  rubygems_version: 2.0.3
106
107
  signing_key:
107
108
  specification_version: 4
108
- summary: '["A simple client for the Kaseya VSA web service"]'
109
+ summary: A simple client for the Kaseya VSA web service
109
110
  test_files: []
111
+ has_rdoc: