nexpose 7.0.0 → 7.0.1

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -3
  3. data/Gemfile.lock +1 -1
  4. data/lib/nexpose/ajax.rb +12 -16
  5. data/lib/nexpose/alert.rb +20 -21
  6. data/lib/nexpose/api.rb +3 -3
  7. data/lib/nexpose/asset.rb +23 -23
  8. data/lib/nexpose/blackout.rb +6 -14
  9. data/lib/nexpose/common.rb +87 -92
  10. data/lib/nexpose/connection.rb +8 -10
  11. data/lib/nexpose/console.rb +9 -9
  12. data/lib/nexpose/dag.rb +2 -2
  13. data/lib/nexpose/data_table.rb +8 -12
  14. data/lib/nexpose/device.rb +35 -34
  15. data/lib/nexpose/discovery.rb +69 -69
  16. data/lib/nexpose/discovery/filter.rb +7 -8
  17. data/lib/nexpose/engine.rb +22 -21
  18. data/lib/nexpose/error.rb +7 -5
  19. data/lib/nexpose/external.rb +21 -16
  20. data/lib/nexpose/filter.rb +51 -52
  21. data/lib/nexpose/global_blackout.rb +6 -7
  22. data/lib/nexpose/global_settings.rb +2 -3
  23. data/lib/nexpose/group.rb +25 -19
  24. data/lib/nexpose/json_serializer.rb +4 -14
  25. data/lib/nexpose/maint.rb +8 -9
  26. data/lib/nexpose/manage.rb +2 -2
  27. data/lib/nexpose/multi_tenant_user.rb +42 -42
  28. data/lib/nexpose/password_policy.rb +14 -14
  29. data/lib/nexpose/pool.rb +6 -5
  30. data/lib/nexpose/report.rb +30 -34
  31. data/lib/nexpose/report_template.rb +17 -18
  32. data/lib/nexpose/role.rb +64 -55
  33. data/lib/nexpose/scan.rb +77 -60
  34. data/lib/nexpose/scan_template.rb +17 -17
  35. data/lib/nexpose/scheduled_backup.rb +8 -8
  36. data/lib/nexpose/scheduled_maintenance.rb +9 -9
  37. data/lib/nexpose/shared_credential.rb +30 -33
  38. data/lib/nexpose/shared_secret.rb +5 -5
  39. data/lib/nexpose/silo.rb +68 -66
  40. data/lib/nexpose/silo_profile.rb +47 -50
  41. data/lib/nexpose/site.rb +101 -123
  42. data/lib/nexpose/site_credentials.rb +15 -17
  43. data/lib/nexpose/tag.rb +73 -80
  44. data/lib/nexpose/ticket.rb +45 -42
  45. data/lib/nexpose/user.rb +45 -45
  46. data/lib/nexpose/util.rb +1 -1
  47. data/lib/nexpose/version.rb +1 -1
  48. data/lib/nexpose/vuln.rb +45 -43
  49. data/lib/nexpose/vuln_def.rb +7 -7
  50. data/lib/nexpose/vuln_exception.rb +35 -36
  51. data/lib/nexpose/wait.rb +32 -28
  52. data/lib/nexpose/web_credentials.rb +34 -36
  53. metadata +2 -2
@@ -97,17 +97,15 @@ module Nexpose
97
97
 
98
98
  # Establish a new connection and Session ID
99
99
  def login
100
- begin
101
- login_hash = { 'sync-id' => 0, 'password' => @password, 'user-id' => @username, 'token' => @token }
102
- login_hash['silo-id'] = @silo_id if @silo_id
103
- r = execute(make_xml('LoginRequest', login_hash))
104
- if r.success
105
- @session_id = r.sid
106
- true
107
- end
108
- rescue APIError
109
- raise AuthenticationFailed.new(r)
100
+ login_hash = { 'sync-id' => 0, 'password' => @password, 'user-id' => @username, 'token' => @token }
101
+ login_hash['silo-id'] = @silo_id if @silo_id
102
+ r = execute(make_xml('LoginRequest', login_hash))
103
+ if r.success
104
+ @session_id = r.sid
105
+ true
110
106
  end
107
+ rescue APIError
108
+ raise AuthenticationFailed.new(r)
111
109
  end
112
110
 
113
111
  # Logout of the current connection
@@ -1,3 +1,4 @@
1
+ # here uh what
1
2
  module Nexpose
2
3
 
3
4
  # Nexpose console configuration class.
@@ -32,13 +33,12 @@ module Nexpose
32
33
  #
33
34
  def initialize(xml)
34
35
  @xml = xml
35
-
36
- nsc = REXML::XPath.first(@xml, 'NeXposeSecurityConsole')
37
- @scan_threads_limit = nsc.attributes['scanThreadsLimit'].to_i
36
+ nsc = REXML::XPath.first(@xml, 'NeXposeSecurityConsole')
37
+ @scan_threads_limit = nsc.attributes['scanThreadsLimit'].to_i
38
38
  @incremental_scan_results = nsc.attributes['realtimeIntegration'] == '1'
39
39
 
40
- web_server = REXML::XPath.first(nsc, 'WebServer')
41
- @session_timeout = web_server.attributes['sessionTimeout'].to_i
40
+ web_server = REXML::XPath.first(nsc, 'WebServer')
41
+ @session_timeout = web_server.attributes['sessionTimeout'].to_i
42
42
  end
43
43
 
44
44
  # Load existing Nexpose security console configuration.
@@ -56,15 +56,15 @@ module Nexpose
56
56
  # @return [Boolean] true if configuration successfully saved.
57
57
  #
58
58
  def save(connection)
59
- nsc = REXML::XPath.first(@xml, 'NeXposeSecurityConsole')
60
- nsc.attributes['scanThreadsLimit'] = @scan_threads_limit.to_i
59
+ nsc = REXML::XPath.first(@xml, 'NeXposeSecurityConsole')
60
+ nsc.attributes['scanThreadsLimit'] = @scan_threads_limit.to_i
61
61
  nsc.attributes['realtimeIntegration'] = @incremental_scan_results ? '1' : '0'
62
62
 
63
- web_server = REXML::XPath.first(nsc, 'WebServer')
63
+ web_server = REXML::XPath.first(nsc, 'WebServer')
64
64
  web_server.attributes['sessionTimeout'] = @session_timeout.to_i
65
65
 
66
66
  response = REXML::Document.new(Nexpose::AJAX.post(connection, '/data/admin/config/nsc', @xml))
67
- saved = REXML::XPath.first(response, 'SaveConfig')
67
+ saved = REXML::XPath.first(response, 'SaveConfig')
68
68
  saved.attributes['success'] == '1'
69
69
  end
70
70
  end
@@ -32,8 +32,8 @@ module Nexpose
32
32
  admins = nsc.users.select { |u| u.is_admin }.map { |u| u.id }
33
33
  @users.reject! { |id| admins.member? id }
34
34
  params = @id ? { 'entityid' => @id, 'mode' => 'edit' } : { 'entityid' => false, 'mode' => false }
35
- uri = AJAX.parameterize_uri('/data/assetGroup/saveAssetGroup', params)
36
- data = JSON.parse(AJAX.post(nsc, uri, _to_entity_details, AJAX::CONTENT_TYPE::JSON))
35
+ uri = AJAX.parameterize_uri('/data/assetGroup/saveAssetGroup', params)
36
+ data = JSON.parse(AJAX.post(nsc, uri, _to_entity_details, AJAX::CONTENT_TYPE::JSON))
37
37
  data['response'] == 'success.'
38
38
  end
39
39
 
@@ -32,30 +32,26 @@ module Nexpose
32
32
  # 'siteID' => site_id })
33
33
  #
34
34
  def _get_json_table(console, address, parameters = {}, page_size = 500, records = nil, post = true)
35
- parameters['dir'] = 'DESC'
35
+ parameters['dir'] = 'DESC'
36
36
  parameters['startIndex'] = -1
37
- parameters['results'] = -1
38
-
37
+ parameters['results'] = -1
39
38
  if post
40
39
  request = lambda { |p| AJAX.form_post(console, address, p) }
41
40
  else
42
41
  request = lambda { |p| AJAX.get(console, address.dup, AJAX::CONTENT_TYPE::JSON, p) }
43
42
  end
44
43
 
45
- response = request.(parameters)
46
- data = JSON.parse(response)
47
-
44
+ response = request.call(parameters)
45
+ data = JSON.parse(response)
48
46
  # Don't attept to grab more records than there are.
49
47
  total = data['totalRecords']
50
- return [] if total == 0
48
+ return [] if total.zero?
51
49
  total = records.nil? ? total : [records, total].min
52
-
53
- rows = []
50
+ rows = []
54
51
  parameters['results'] = page_size
55
52
  while rows.length < total
56
53
  parameters['startIndex'] = rows.length
57
-
58
- data = JSON.parse(request.(parameters))
54
+ data = JSON.parse(request.call(parameters))
59
55
  rows.concat data['records']
60
56
  end
61
57
  rows
@@ -80,7 +76,7 @@ module Nexpose
80
76
  response = REXML::Document.new(response)
81
77
 
82
78
  headers = _dyn_headers(response)
83
- rows = _dyn_rows(response)
79
+ rows = _dyn_rows(response)
84
80
  rows.map { |row| Hash[headers.zip(row)] }
85
81
  end
86
82
 
@@ -18,16 +18,18 @@ module Nexpose
18
18
  r = execute(make_xml('SiteDeviceListingRequest', { 'site-id' => site_id }))
19
19
  if r.success
20
20
  device = REXML::XPath.first(r.res, "SiteDeviceListingResponse/SiteDevices/device[@address='#{address}']")
21
- return Device.new(device.attributes['id'].to_i,
22
- device.attributes['address'],
23
- device.parent.attributes['site-id'],
24
- device.attributes['riskfactor'].to_f,
25
- device.attributes['riskscore'].to_f) if device
21
+ if device
22
+ return Device.new(device.attributes['id'].to_i,
23
+ device.attributes['address'],
24
+ device.parent.attributes['site-id'],
25
+ device.attributes['riskfactor'].to_f,
26
+ device.attributes['riskscore'].to_f)
27
+ end
26
28
  end
27
29
  nil
28
30
  end
29
31
 
30
- alias_method :find_asset_by_address, :find_device_by_address
32
+ alias find_asset_by_address find_device_by_address
31
33
 
32
34
  # Retrieve a list of all of the assets in a site.
33
35
  #
@@ -57,10 +59,10 @@ module Nexpose
57
59
  devices
58
60
  end
59
61
 
60
- alias_method :devices, :list_site_devices
61
- alias_method :list_devices, :list_site_devices
62
- alias_method :assets, :list_site_devices
63
- alias_method :list_assets, :list_site_devices
62
+ alias devices list_site_devices
63
+ alias list_devices list_site_devices
64
+ alias assets list_site_devices
65
+ alias list_assets list_site_devices
64
66
 
65
67
  # Get a list of all assets currently associated with a group.
66
68
  #
@@ -89,9 +91,9 @@ module Nexpose
89
91
  json.map { |vuln| VulnFinding.new(vuln) }
90
92
  end
91
93
 
92
- alias_method :list_asset_vulns, :list_device_vulns
93
- alias_method :asset_vulns, :list_device_vulns
94
- alias_method :device_vulns, :list_device_vulns
94
+ alias list_asset_vulns list_device_vulns
95
+ alias asset_vulns list_device_vulns
96
+ alias device_vulns list_device_vulns
95
97
 
96
98
  # Retrieve a list of assets which completed in a given scan. If called
97
99
  # during a scan, this method returns currently completed assets. A
@@ -129,7 +131,7 @@ module Nexpose
129
131
  r.success
130
132
  end
131
133
 
132
- alias_method :delete_asset, :delete_device
134
+ alias delete_asset delete_device
133
135
 
134
136
  # Retrieve the scan history for an asset.
135
137
  # Note: This is not optimized for querying many assets.
@@ -174,11 +176,11 @@ module Nexpose
174
176
  attr_reader :site_id
175
177
 
176
178
  def initialize(id, address, site_id, risk_factor = 1.0, risk_score = 0.0)
177
- @id = id.to_i
178
- @address = address
179
- @site_id = site_id.to_i
179
+ @id = id.to_i
180
+ @address = address
181
+ @site_id = site_id.to_i
180
182
  @risk_factor = risk_factor.to_f
181
- @risk_score = risk_score.to_f
183
+ @risk_score = risk_score.to_f
182
184
  end
183
185
  end
184
186
 
@@ -220,13 +222,13 @@ module Nexpose
220
222
  # object.
221
223
  def self.parse_json(json)
222
224
  new do
223
- @id = json['assetID'].to_i
224
- @ip = json['ipAddress']
225
+ @id = json['assetID'].to_i
226
+ @ip = json['ipAddress']
225
227
  @host_name = json['hostName']
226
- @os = json['operatingSystem']
227
- @vulns = json['vulnerabilityCount']
228
- @status = json['scanStatusTranslation'].downcase.to_sym
229
- @duration = json['duration']
228
+ @os = json['operatingSystem']
229
+ @vulns = json['vulnerabilityCount']
230
+ @status = json['scanStatusTranslation'].downcase.to_sym
231
+ @duration = json['duration']
230
232
  end
231
233
  end
232
234
  end
@@ -236,7 +238,6 @@ module Nexpose
236
238
  class IncompleteAsset < CompletedAsset
237
239
  end
238
240
 
239
-
240
241
  # Summary object of a scan for a particular asset.
241
242
  #
242
243
  class AssetScan
@@ -268,15 +269,15 @@ module Nexpose
268
269
 
269
270
  def self.parse_json(json)
270
271
  new do
271
- @asset_id = json['assetID'].to_i
272
- @scan_id = json['scanID'].to_i
273
- @site_id = json['siteID'].to_i
274
- @ip = json['ipAddress']
275
- @host_name = json['hostname']
276
- @os = json['operatingSystem']
277
- @vulns = json['vulnCount']
278
- @end_time = Time.at(json['completed'].to_i / 1000)
279
- @site_name = json['siteName']
272
+ @asset_id = json['assetID'].to_i
273
+ @scan_id = json['scanID'].to_i
274
+ @site_id = json['siteID'].to_i
275
+ @ip = json['ipAddress']
276
+ @host_name = json['hostname']
277
+ @os = json['operatingSystem']
278
+ @vulns = json['vulnCount']
279
+ @end_time = Time.at(json['completed'].to_i / 1000)
280
+ @site_name = json['siteName']
280
281
  @engine_name = json['scanEngineName']
281
282
  end
282
283
  end
@@ -6,22 +6,22 @@ module Nexpose
6
6
  # discovery of assets, including whether or not connections are active.
7
7
  #
8
8
  def list_discovery_connections
9
- xml = make_xml('DiscoveryConnectionListingRequest')
10
- response = execute(xml, '1.2')
9
+ xml = make_xml('DiscoveryConnectionListingRequest')
10
+ response = execute(xml, '1.2')
11
11
  connections = []
12
12
  response.res.elements.each('DiscoveryConnectionListingResponse/DiscoveryConnectionSummary') do |conn|
13
13
  connections << DiscoveryConnection.parse(conn)
14
14
  end
15
15
  connections
16
16
  end
17
- alias_method :discovery_connections, :list_discovery_connections
17
+ alias discovery_connections list_discovery_connections
18
18
 
19
19
  # Delete an existing connection to a target used for dynamic discovery of assets.
20
20
  #
21
21
  # @param [Fixnum] id ID of an existing discovery connection.
22
22
  #
23
23
  def delete_discovery_connection(id)
24
- xml = make_xml('DiscoveryConnectionDeleteRequest', { 'id' => id })
24
+ xml = make_xml('DiscoveryConnectionDeleteRequest', { 'id' => id })
25
25
  response = execute(xml, '1.2')
26
26
  response.success
27
27
  end
@@ -32,22 +32,22 @@ module Nexpose
32
32
 
33
33
  module CollectionMethod
34
34
  DIRECTORY_WATCHER = 'DIRECTORY_WATCHER'
35
- SYSLOG = 'SYSLOG'
35
+ SYSLOG = 'SYSLOG'
36
36
  end
37
37
 
38
38
  module EventSource
39
39
  INFOBLOX_TRINZIC = 'INFOBLOX_TRINZIC'
40
- MICROSOFT_DHCP = 'MICROSOFT_DHCP'
40
+ MICROSOFT_DHCP = 'MICROSOFT_DHCP'
41
41
  end
42
42
 
43
43
  module Protocol
44
- HTTP = 'HTTP'
45
- HTTPS = 'HTTPS'
46
- LDAP = 'LDAP'
47
- LDAPS = 'LDAPS'
44
+ HTTP = 'HTTP'
45
+ HTTPS = 'HTTPS'
46
+ LDAP = 'LDAP'
47
+ LDAPS = 'LDAPS'
48
48
  SERVICE_PROXY = 'SERVICE_PROXY'
49
- TCP = 'TCP'
50
- UDP = 'UDP'
49
+ TCP = 'TCP'
50
+ UDP = 'UDP'
51
51
  end
52
52
 
53
53
  module Type
@@ -56,51 +56,37 @@ module Nexpose
56
56
  ACTIVESYNC = 'ACTIVESYNC'
57
57
  ACTIVESYNC_POWERSHELL = 'ACTIVESYNC_POWERSHELL'
58
58
  ACTIVESYNC_OFFICE365 = 'ACTIVESYNC_OFFICE365'
59
- DHCP_SERVICE = 'DHCP_SERVICE'
59
+ DHCP_SERVICE = 'DHCP_SERVICE'
60
60
  end
61
61
 
62
62
  # A unique identifier for this connection.
63
63
  attr_accessor :id
64
-
65
64
  # A unique name for this connection.
66
65
  attr_accessor :name
67
-
68
66
  # Type of discovery connection
69
67
  attr_accessor :type
70
-
71
68
  # The IP address or fully qualified domain name of the server.
72
69
  attr_accessor :address
73
-
74
70
  # The engine ID to use for this connection.
75
71
  attr_accessor :engine_id
76
-
77
72
  # A user name that can be used to log into the server.
78
73
  attr_accessor :user
79
-
80
74
  # The password to use when connecting with the defined user.
81
75
  attr_accessor :password
82
-
83
76
  # The protocol used for connecting to the server. One of DiscoveryConnection::Protocol
84
77
  attr_accessor :protocol
85
-
86
78
  # The port used for connecting to the server. A valid port from 1 to 65535.
87
79
  attr_accessor :port
88
-
89
80
  # The hostname of the exchange server to connect for exchange powershell connections
90
81
  attr_accessor :exchange_hostname
91
-
92
82
  # The exchange username to connect for exchange powershell connections
93
83
  attr_accessor :exchange_username
94
-
95
84
  # The exchange password to connect for exchange powershell connections
96
85
  attr_accessor :exchange_password
97
-
98
86
  # The collection method (e.g. for DHCP discovery connections)
99
87
  attr_accessor :collection_method
100
-
101
88
  # The event source (e.g. for DHCP discovery connections)
102
89
  attr_accessor :event_source
103
-
104
90
  # Whether or not the connection is active.
105
91
  # Discovery is only possible when the connection is active.
106
92
  attr_accessor :status
@@ -114,10 +100,13 @@ module Nexpose
114
100
  # @param [String] password Password for credentials on this connection.
115
101
  #
116
102
  def initialize(name = nil, address = nil, user = nil, password = nil)
117
- @name, @address, @user, @password = name, address, user, password
118
- @type = nil # for backwards compatibilitly, at some point should set this to Type::VSPHERE
119
- @id = -1
120
- @port = 443
103
+ @name = name
104
+ @address = address
105
+ @user = user
106
+ @password = password
107
+ @type = nil # For backwards compatibilitly, at some point should set this to Type::VSPHERE
108
+ @id = -1
109
+ @port = 443
121
110
  @protocol = Protocol::HTTPS
122
111
  end
123
112
 
@@ -155,7 +144,6 @@ module Nexpose
155
144
  #
156
145
  def save(nsc)
157
146
  @id == -1 ? create(nsc) : update(nsc)
158
-
159
147
  @id
160
148
  end
161
149
 
@@ -181,7 +169,7 @@ module Nexpose
181
169
  # @param [Connection] nsc Connection to a console.
182
170
  #
183
171
  def connect(nsc)
184
- xml = nsc.make_xml('DiscoveryConnectionConnectRequest', { 'id' => id })
172
+ xml = nsc.make_xml('DiscoveryConnectionConnectRequest', { 'id' => id })
185
173
  response = nsc.execute(xml, '1.2')
186
174
  response.success
187
175
  end
@@ -221,10 +209,10 @@ module Nexpose
221
209
  conn = new(xml.attributes['name'],
222
210
  xml.attributes['address'],
223
211
  xml.attributes['user-name'])
224
- conn.id = xml.attributes['id'].to_i
225
- conn.protocol = xml.attributes['protocol']
226
- conn.port = xml.attributes['port'].to_i
227
- conn.status = xml.attributes['connection-status']
212
+ conn.id = xml.attributes['id'].to_i
213
+ conn.protocol = xml.attributes['protocol']
214
+ conn.port = xml.attributes['port'].to_i
215
+ conn.status = xml.attributes['connection-status']
228
216
  conn.engine_id = xml.attributes['engine-id'].to_i
229
217
  conn
230
218
  end
@@ -234,10 +222,11 @@ module Nexpose
234
222
  end
235
223
 
236
224
  def to_h
237
- { id: id,
225
+ {
226
+ id: id,
238
227
  name: name,
239
228
  type: type
240
- # TODO Add remaining instance fields, once it is introduced in resource object
229
+ # TODO: Add remaining instance fields, once it is introduced in resource object
241
230
  }
242
231
  end
243
232
 
@@ -246,10 +235,8 @@ module Nexpose
246
235
  end
247
236
 
248
237
  def eql?(other)
249
- id.eql?(other.id) &&
250
- name.eql?(other.name) &&
251
- type.eql?(other.type)
252
- # TODO Add remaining instance fields, once it is introduced in resource object
238
+ id.eql?(other.id) && name.eql?(other.name) && type.eql?(other.type)
239
+ # TODO: Add remaining instance fields, once it is introduced in resource object
253
240
  end
254
241
 
255
242
  # Override of filter criterion to account for proper JSON naming.
@@ -306,7 +293,7 @@ module Nexpose
306
293
  attr_accessor :status
307
294
 
308
295
  def initialize(&block)
309
- instance_eval &block if block_given?
296
+ instance_eval(&block) if block_given?
310
297
  end
311
298
 
312
299
  def on?
@@ -315,14 +302,14 @@ module Nexpose
315
302
 
316
303
  def self.parse(json)
317
304
  new do |asset|
318
- asset.ip = json['IPAddress']
319
- asset.os = json['OSName']
320
- asset.name = json['assetDiscoveryName']
321
- asset.cluster = json['cluster']
305
+ asset.ip = json['IPAddress']
306
+ asset.os = json['OSName']
307
+ asset.name = json['assetDiscoveryName']
308
+ asset.cluster = json['cluster']
322
309
  asset.datacenter = json['datacenter']
323
- asset.host = json['host']
324
- asset.status = json['powerStatus']
325
- asset.pool = json['resourcePool']
310
+ asset.host = json['host']
311
+ asset.status = json['powerStatus']
312
+ asset.pool = json['resourcePool']
326
313
  end
327
314
  end
328
315
  end
@@ -338,13 +325,17 @@ module Nexpose
338
325
  # @param [String] password Password for credentials on this connection.
339
326
  #
340
327
  def initialize(name, protocol, address, user, password = nil)
341
- @name, @protocol, @address, @user, @password = name, protocol, address, user, password
342
- @type = Type::ACTIVESYNC
343
- @id = -1
344
- @port = 443 # port not used for mobile connection
328
+ @name = name
329
+ @protocol = protocol
330
+ @address = address
331
+ @user = user
332
+ @password = password
333
+ @type = Type::ACTIVESYNC
334
+ @id = -1
335
+ @port = 443 # port not used for mobile connection
345
336
  end
346
337
  end
347
-
338
+
348
339
  class MobilePowershellDiscoveryConnection < DiscoveryConnection
349
340
  # Create a new Mobile Powershell discovery connection.
350
341
  #
@@ -358,12 +349,17 @@ module Nexpose
358
349
  # @param [String] exchange_password Exchange password for exchange credentials on this connection.
359
350
  #
360
351
  def initialize(name, address, user, password, exchange_hostname, exchange_username, exchange_password)
361
- @name, @address, @user, @password = name, address, user, password
362
- @protocol = Protocol::HTTPS
363
- @exchange_hostname, @exchange_username, @exchange_password = exchange_hostname, exchange_username, exchange_password
364
- @type = Type::ACTIVESYNC_POWERSHELL
365
- @id = -1
366
- @port = 443 # port not used for mobile connection
352
+ @name = name
353
+ @address = address
354
+ @user = user
355
+ @password = password
356
+ @protocol = Protocol::HTTPS
357
+ @exchange_hostname = exchange_hostname
358
+ @exchange_username = exchange_username
359
+ @exchange_password = exchange_password
360
+ @type = Type::ACTIVESYNC_POWERSHELL
361
+ @id = -1
362
+ @port = 443 # Port not used for mobile connection
367
363
  end
368
364
  end
369
365
 
@@ -379,13 +375,17 @@ module Nexpose
379
375
  # @param [String] exchange_password Exchange password for exchange credentials on this connection.
380
376
  #
381
377
  def initialize(name, address, user, password, exchange_username, exchange_password)
382
- @name, @address, @user, @password = name, address, user, password
383
- @protocol = Protocol::HTTPS
384
- @exchange_hostname = '' # nexpose will set to office365 server
385
- @exchange_username, @exchange_password = exchange_username, exchange_password
386
- @type = Type::ACTIVESYNC_OFFICE365
387
- @id = -1
388
- @port = 443 # port not used for mobile connection
378
+ @name = name
379
+ @address = address
380
+ @user = user
381
+ @password = password
382
+ @protocol = Protocol::HTTPS
383
+ @exchange_hostname = '' # Nexpose will set to office365 server
384
+ @exchange_username = exchange_username
385
+ @exchange_password = exchange_password
386
+ @type = Type::ACTIVESYNC_OFFICE365
387
+ @id = -1
388
+ @port = 443 # Port not used for mobile connection
389
389
  end
390
390
  end
391
391
  end