Class: Nexpose::DiscoveryConnection
- Includes:
- XMLUtils
- Defined in:
- lib/nexpose/discovery.rb
Direct Known Subclasses
MobileDiscoveryConnection, MobileOffice365DiscoveryConnection, MobilePowershellDiscoveryConnection
Defined Under Namespace
Modules: Protocol, Type Classes: Criteria, Criterion
Instance Attribute Summary collapse
-
#address ⇒ Object
The IP address or fully qualified domain name of the server.
-
#engine_id ⇒ Object
The engine ID to use for this connection.
-
#exchange_hostname ⇒ Object
The hostname of the exchange server to connect for exchange powershell connections.
-
#exchange_password ⇒ Object
The exchange password to connect for exchange powershell connections.
-
#exchange_username ⇒ Object
The exchange username to connect for exchange powershell connections.
-
#id ⇒ Object
A unique identifier for this connection.
-
#name ⇒ Object
A unique name for this connection.
-
#password ⇒ Object
The password to use when connecting with the defined user.
-
#port ⇒ Object
The port used for connecting to the server.
-
#protocol ⇒ Object
The protocol used for connecting to the server.
-
#status ⇒ Object
Whether or not the connection is active.
-
#type ⇒ Object
Type of discovery connection.
-
#user ⇒ Object
A user name that can be used to log into the server.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #as_xml ⇒ Object
-
#connect(nsc) ⇒ Object
Initiates a connection to a target used for dynamic discovery of assets.
-
#create(nsc) ⇒ Object
Save this discovery connection on a given Nexpose console.
-
#delete(nsc) ⇒ Object
Delete this connection from the console.
-
#discover(nsc, criteria = nil) ⇒ Array[DiscoveredAsset]
Perform dynamic discover of assets against this connection.
- #eql?(other) ⇒ Boolean
-
#initialize(name = nil, address = nil, user = nil, password = nil) ⇒ DiscoveryConnection
constructor
Create a new discovery connection.
-
#save(nsc) ⇒ Object
Save this discovery connection to a Nexpose console.
- #to_h ⇒ Object
- #to_json ⇒ Object
- #to_xml ⇒ Object
-
#update(nsc) ⇒ Boolean
Update this (existing) discovery connection on a given Nexpose console.
Methods included from XMLUtils
#make_xml, #parse_xml, success?
Methods inherited from APIObject
Constructor Details
#initialize(name = nil, address = nil, user = nil, password = nil) ⇒ DiscoveryConnection
Create a new discovery connection.
98 99 100 101 102 103 104 |
# File 'lib/nexpose/discovery.rb', line 98 def initialize(name = nil, address = nil, user = nil, password = nil) @name, @address, @user, @password = name, address, user, password @type = nil # for backwards compatibilitly, at some point should set this to Type::VSPHERE @id = -1 @port = 443 @protocol = Protocol::HTTPS end |
Instance Attribute Details
#address ⇒ Object
The IP address or fully qualified domain name of the server.
60 61 62 |
# File 'lib/nexpose/discovery.rb', line 60 def address @address end |
#engine_id ⇒ Object
The engine ID to use for this connection.
63 64 65 |
# File 'lib/nexpose/discovery.rb', line 63 def engine_id @engine_id end |
#exchange_hostname ⇒ Object
The hostname of the exchange server to connect for exchange powershell connections
78 79 80 |
# File 'lib/nexpose/discovery.rb', line 78 def exchange_hostname @exchange_hostname end |
#exchange_password ⇒ Object
The exchange password to connect for exchange powershell connections
84 85 86 |
# File 'lib/nexpose/discovery.rb', line 84 def exchange_password @exchange_password end |
#exchange_username ⇒ Object
The exchange username to connect for exchange powershell connections
81 82 83 |
# File 'lib/nexpose/discovery.rb', line 81 def exchange_username @exchange_username end |
#id ⇒ Object
A unique identifier for this connection.
51 52 53 |
# File 'lib/nexpose/discovery.rb', line 51 def id @id end |
#name ⇒ Object
A unique name for this connection.
54 55 56 |
# File 'lib/nexpose/discovery.rb', line 54 def name @name end |
#password ⇒ Object
The password to use when connecting with the defined user.
69 70 71 |
# File 'lib/nexpose/discovery.rb', line 69 def password @password end |
#port ⇒ Object
The port used for connecting to the server. A valid port from 1 to 65535.
75 76 77 |
# File 'lib/nexpose/discovery.rb', line 75 def port @port end |
#protocol ⇒ Object
The protocol used for connecting to the server. One of DiscoveryConnection::Protocol
72 73 74 |
# File 'lib/nexpose/discovery.rb', line 72 def protocol @protocol end |
#status ⇒ Object
Whether or not the connection is active. Discovery is only possible when the connection is active.
88 89 90 |
# File 'lib/nexpose/discovery.rb', line 88 def status @status end |
#type ⇒ Object
Type of discovery connection
57 58 59 |
# File 'lib/nexpose/discovery.rb', line 57 def type @type end |
#user ⇒ Object
A user name that can be used to log into the server.
66 67 68 |
# File 'lib/nexpose/discovery.rb', line 66 def user @user end |
Class Method Details
.parse(xml) ⇒ Object
200 201 202 203 204 205 206 207 208 209 |
# File 'lib/nexpose/discovery.rb', line 200 def self.parse(xml) conn = new(xml.attributes['name'], xml.attributes['address'], xml.attributes['user-name']) conn.id = xml.attributes['id'].to_i conn.protocol = xml.attributes['protocol'] conn.port = xml.attributes['port'].to_i conn.status = xml.attributes['connection-status'] conn end |
Instance Method Details
#==(other) ⇒ Object
223 224 225 |
# File 'lib/nexpose/discovery.rb', line 223 def ==(other) eql?(other) end |
#as_xml ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/nexpose/discovery.rb', line 179 def as_xml xml = REXML::Element.new('DiscoveryConnection') xml.attributes['name'] = @name xml.attributes['address'] = @address xml.attributes['port'] = @port xml.attributes['protocol'] = @protocol xml.attributes['user-name'] = @user xml.attributes['password'] = @password xml.attributes['exchange-hostname'] = @exchange_hostname if @exchange_hostname xml.attributes['exchange-username'] = @exchange_username if @exchange_username xml.attributes['exchange-password'] = @exchange_password if @exchange_password xml.attributes['type'] = @type if @type xml.attributes['engine-id'] = @engine_id if @engine_id && @engine_id != -1 xml.attributes['id'] = @id if @id && @id != -1 xml end |
#connect(nsc) ⇒ Object
Initiates a connection to a target used for dynamic discovery of assets. As long as a connection is active, dynamic discovery is continuous.
165 166 167 168 169 |
# File 'lib/nexpose/discovery.rb', line 165 def connect(nsc) xml = nsc.make_xml('DiscoveryConnectionConnectRequest', { 'id' => id }) response = nsc.execute(xml, '1.2') response.success end |
#create(nsc) ⇒ Object
Save this discovery connection on a given Nexpose console.
110 111 112 113 114 115 116 117 118 119 |
# File 'lib/nexpose/discovery.rb', line 110 def create(nsc) xml = nsc.make_xml('DiscoveryConnectionCreateRequest') xml.add_element(as_xml) response = nsc.execute(xml, '1.2') if response.success ret = REXML::XPath.first(response.res, 'DiscoveryConnectionCreateResponse') @id = ret.attributes['id'].to_i unless ret.nil? end end |
#delete(nsc) ⇒ Object
Delete this connection from the console.
175 176 177 |
# File 'lib/nexpose/discovery.rb', line 175 def delete(nsc) nsc.delete_discovery_connection(@id) end |
#discover(nsc, criteria = nil) ⇒ Array[DiscoveredAsset]
Perform dynamic discover of assets against this connection.
151 152 153 154 155 156 157 158 |
# File 'lib/nexpose/discovery.rb', line 151 def discover(nsc, criteria = nil) parameters = { 'table-id' => 'assetdiscovery', 'sort' => 'assetDiscoveryName', 'searchCriteria' => criteria.nil? ? 'null' : criteria.to_json, 'configID' => @id } data = DataTable._get_json_table(nsc, '/data/discoveryAsset/discoverAssets', parameters) data.map { |a| DiscoveredAsset.parse(a) } end |
#eql?(other) ⇒ Boolean
227 228 229 230 231 232 |
# File 'lib/nexpose/discovery.rb', line 227 def eql?(other) id.eql?(other.id) && name.eql?(other.name) && type.eql?(other.type) # TODO Add remaining instance fields, once it is introduced in resource object end |
#save(nsc) ⇒ Object
Save this discovery connection to a Nexpose console.
138 139 140 141 142 |
# File 'lib/nexpose/discovery.rb', line 138 def save(nsc) @id == -1 ? create(nsc) : update(nsc) @id end |
#to_h ⇒ Object
215 216 217 218 219 220 221 |
# File 'lib/nexpose/discovery.rb', line 215 def to_h { id: id, name: name, type: type # TODO Add remaining instance fields, once it is introduced in resource object } end |
#to_json ⇒ Object
211 212 213 |
# File 'lib/nexpose/discovery.rb', line 211 def to_json JSON.generate(to_h) end |
#to_xml ⇒ Object
196 197 198 |
# File 'lib/nexpose/discovery.rb', line 196 def to_xml as_xml.to_s end |
#update(nsc) ⇒ Boolean
Update this (existing) discovery connection on a given Nexpose console.
126 127 128 129 130 131 132 |
# File 'lib/nexpose/discovery.rb', line 126 def update(nsc) xml = nsc.make_xml('DiscoveryConnectionUpdateRequest') xml.add_element(as_xml) response = nsc.execute(xml, '1.2') response.success end |