class Telemetry::Snmp::Auth

Public Class Methods

new(username:, **opts) click to toggle source
# File lib/telemetry/snmp/auth.rb, line 9
def initialize(username:, **opts)
  @username = username
  @details = {}
  @opts = opts
end

Public Instance Methods

auth_with_service(password) click to toggle source
# File lib/telemetry/snmp/auth.rb, line 36
def auth_with_service(password)
  options = defaults
  options[:auth] = defaults_auth
  result = provider.new(options).bind_as(base: defaults[:base], attributes: attrs, filter: filter, password: password) # rubocop:disable Layout/LineLength
  process_result(result.first)
end
auth_without_service(password) click to toggle source
# File lib/telemetry/snmp/auth.rb, line 43
def auth_without_service(password)
  options = { host: defaults[:host], port: defaults[:port] }
  options[:auth] = { password: password, username: @username, method: :simple }
  ldap = provider.new(options)
  @success = ldap.bind
  return unless @success

  process_result(search_user(ldap, @username))
end
process_result(result) click to toggle source
# File lib/telemetry/snmp/auth.rb, line 15
def process_result(result)
  unless result.is_a? Net::LDAP::Entry
    @success = false
    return
  end
  @details[:username] = result.sAMAccountName.first
  @details[:email] = result.mail.first
  @details[:first] = result.givenName.first
  @details[:last] = result.sn.first
  @success = true
end
search_user(ldap, username) click to toggle source
# File lib/telemetry/snmp/auth.rb, line 27
def search_user(ldap, username)
  user_filter = Net::LDAP::Filter.eq('sAMAccountName', username)

  ldap.search(base: treebase, filter: user_filter, attrs: attrs, return_result: false) do |entry|
    @details[:group_access] = entry.memberof.include?("CN=#{admin_group}, #{treebase}")
    return entry
  end
end