module Resource::Session
Namespace for Session
resource.
Attributes
session[R]
@return [Boolean] whether has a session.
Public Instance Methods
destroy()
click to toggle source
Destroy the current session.
# File lib/modules/session.rb, line 40 def destroy request.delete({ path: '/session', headers: headers }) @session = false end
Also aliased as: logout
set_session(username, password)
click to toggle source
Autenticate into Nessus resource. @param [String] username @param [String] password @return [nil] @raise [NessusClient::Error] Unable to authenticate. @todo Validate response token format
# 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
Also aliased as: session_create
Private Instance Methods
set_api_token()
click to toggle source
Set the API Token from legacy Nessus version @raise [NessusClient::Error] Unable to get API Token. @todo To get it direct from the session authentication on v6.x
# File lib/modules/session.rb, line 51 def set_api_token response = request.get({ path: '/nessus6.js', headers: headers }) response.match(/return"(\w{8}-(?:\w{4}-){3}\w{12})"\}/) unless Regexp.last_match(1) raise NessusClient::Error, "Unable to get API Token. Some features won't work." end rescue NessusClient::Error => e puts e.message else Regexp.last_match(1) end