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_entitlement()
click to toggle source
Print out the user entitlement table in plain text, to be imported into database
# File lib/ucert/vpn_tracker.rb, line 61 def print_user_entitlement begin puts "VPN User Entitlement Report in Plain-text Format" if @verbose @vpn_user_entitlement[1].keys.map {|x| print x,"|"} if @verbose puts if @verbose @vpn_user_entitlement.values.each do |record| record.values.map {|y| print y,"|"} puts end puts rescue => ee puts "Exception on method #{__method__}: #{ee}" end end
Also aliased as: print_user
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