class Ucert::VpnTracker

Class to handle VPN user account IDs

Attributes

verbose[RW]

Class constant variables

vpn_user_entitlement[R]

Public Class Methods

new(params ={}) click to toggle source

Instance default variables

# File lib/ucert/vpn_tracker.rb, line 18
def initialize (params ={})

  @verbose=params.fetch(:verbose, false)
  # VPN users are defined by assigning AD user into 3 different containers in CMBNY domain controller
  # Refer to the screenshot for further details
              #
              #
              # Load the group entitlement instance variable
  @vpn_class={"CN=Class1VPN,CN=Users,DC=ny,DC=cmbchina,DC=com"=>"class_1", "CN=Class2VPN,CN=Users,DC=ny,DC=cmbchina,DC=com"=>"class_2", "CN=Class3VPN,CN=Users,DC=ny,DC=cmbchina,DC=com"=>"class_3"}
              # Load the user entitlement instance variable by perform the AD lookup
              @vpn_user_entitlement=parse_vpn_user_info
      end

Public Instance Methods

print_user()
print_user_entitlement() click to toggle source

Print out the user entitlement table in plain text, to be imported into database

Also aliased as: print_user
search_by_dn(dn)
Alias for: vpn_search_by_dn
vpn_search_by_dn(dn) click to toggle source

Search user entitlement record by AD DN

# File lib/ucert/vpn_tracker.rb, line 79
    def vpn_search_by_dn (dn)
            begin
  puts "Perform search on the user entitlement record by AD DN: #{dn}" if @verbose
  @vpn_user_entitlement.each do |key, val|
      return val if @vpn_user_entitlement[key]['DN'].eql? dn
  end
                    return nil
rescue => ee
  puts "Exception on method #{__method__}: #{ee}"
end
    end
Also aliased as: search_by_dn

Private Instance Methods

parse_vpn_user_info() click to toggle source

Parsing the VPN user entitlement report in CSV format

# File lib/ucert/vpn_tracker.rb, line 32
  def parse_vpn_user_info
                  begin
                          puts "Parsing known AD objects in search of the current VPN users" if @verbose
                          vpn_entitlement=Hash.new
  user_record=0
  tracker=Ucert::AdTracker.new
                          tracker.ad_person_records.keys.map do |record|
    puts "Processing record #{record.inspect}" if @verbose
    memberships=tracker.get_dn_attributes("person", record, "memberOf")
    my_class = memberships & @vpn_class.keys
                                  if my_class.size >0
                                          puts "VPN user found: #{record}" if @verbose
                                          user_record+=1
                                          vpn_entitlement[user_record]=Hash.new unless vpn_entitlement[user_record]
                                          vpn_entitlement[user_record]['CN']=tracker.extract_first_cn(record)
                                          vpn_entitlement[user_record]['department']=tracker.get_dn_attribute("person",record,"department")
                                          vpn_entitlement[user_record]['sAMAccountName']=tracker.get_dn_attribute("person",record,"sAMAccountName")
                                          vpn_entitlement[user_record]['VPN Class']=@vpn_class[my_class.first]
                                          vpn_entitlement[user_record]['DN']=record
                                  end
                    end
                          tracker=nil
  return vpn_entitlement
rescue => ee
                          puts "Exception on method #{__method__}: #{ee}"
                  end
  end