Class: Openvas::Client
- Inherits:
-
Object
- Object
- Openvas::Client
- Defined in:
- lib/openvas/client.rb
Defined Under Namespace
Classes: InvalidUrlConfigError, QueryError
Constant Summary collapse
- BLOCK_SIZE =
buffer size for socket
1024 * 16
Class Method Summary collapse
-
.connect ⇒ Object
Connect the websocket.
- .disconnect ⇒ Object
- .query(data) ⇒ Object
- .version ⇒ Object
Class Method Details
.connect ⇒ Object
Connect the websocket
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/openvas/client.rb', line 16 def self.connect # Retrieve URI raise InvalidUrlConfigError, 'Please Configure the client before' unless Openvas::Config.url uri = URI.parse(Openvas::Config.url) plain_socket = TCPSocket.open(uri.host, uri.port) self.socket = OpenSSL::SSL::SSLSocket.new(plain_socket, OpenSSL::SSL::SSLContext.new) # Enable to close socket and SSL layer together socket.sync_close = true socket.connect true end |
.disconnect ⇒ Object
32 33 34 35 36 |
# File 'lib/openvas/client.rb', line 32 def self.disconnect return unless socket socket.close self.socket = nil end |
.query(data) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/openvas/client.rb', line 43 def self.query(data) res = Nokogiri::XML(send_receive(data.to_xml)) raise QueryError, 'Unknown query error' unless res.at_xpath('//@status')&.value == '200' res end |
.version ⇒ Object
38 39 40 41 |
# File 'lib/openvas/client.rb', line 38 def self.version query = Nokogiri::XML::Builder.new { get_version } query(query).at_xpath('/get_version_response/version').text end |