Class: Openvas::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/openvas/client.rb

Direct Known Subclasses

Auth, Reports, Result, Scan

Defined Under Namespace

Classes: InvalidUrlConfigError, QueryError

Constant Summary collapse

BLOCK_SIZE =

buffer size for socket

1024 * 16

Class Method Summary collapse

Class Method Details

.connectObject

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

.disconnectObject



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

Raises:



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

.versionObject



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