Module: Resource::Session

Included in:
NessusClient
Defined in:
lib/modules/session.rb

Overview

Namespace for Session resource.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#sessionBoolean (readonly)

Returns whether has a session.

Returns:

  • (Boolean)

    whether has a session.



6
7
8
# File 'lib/modules/session.rb', line 6

def session
  @session
end

Instance Method Details

#destroyObject Also known as: logout

Destroy the current session.



40
41
42
43
# File 'lib/modules/session.rb', line 40

def destroy
  request.delete({ path: '/session', headers: headers })
  @session = false
end

#set_session(username, password) ⇒ nil Also known as: session_create

TODO:

Validate response token format

Autenticate into Nessus resource.

Parameters:

  • username (String)
  • password (String)

Returns:

  • (nil)

Raises:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/modules/session.rb', line 16

def set_session(username, password)
  payload = {
    username: username,
    password: password
  }

  resp = request.post({ path: '/session', payload: payload, headers: headers })
  # binding.pry
  if !resp.key?('token')
    raise NessusClient::Error, 'Unable to authenticate.'
  elsif !resp['token'].match(/(?<token>[a-z0-9]{48})/)
    raise NessusClient::Error, 'The token doesnt match with the pattern.'
  end

  headers.update('X-Cookie' => 'token=' + resp['token'])
  @session = true
  api_token = set_api_token
  headers.update('X-API-Token' => api_token) if api_token
rescue NessusClient::Error => e
  raise e
end