Class: Ucert::CitidirectSecuritiesTracker
- Inherits:
-
Object
- Object
- Ucert::CitidirectSecuritiesTracker
- Includes:
- Utils
- Defined in:
- lib/ucert/citidirect_securities_tracker.rb
Overview
Class to handle CitiDirect for Securities user account IDs
Instance Attribute Summary collapse
-
#cds_2_ad_user ⇒ Object
readonly
Returns the value of attribute cds_2_ad_user.
-
#cds_user_entitlement ⇒ Object
readonly
Returns the value of attribute cds_user_entitlement.
-
#cds_user_status_report ⇒ Object
Class constant variables.
-
#file_cds_user_map ⇒ Object
Class constant variables.
-
#verbose ⇒ Object
Class constant variables.
Instance Method Summary collapse
-
#cds_search_by_dn(dn) ⇒ Object
(also: #search_by_dn)
Search user entitlement record by AD DN.
-
#dn_2_index(dn) ⇒ Object
Retrieve the user index from the @cds_user_entitlement data structure.
-
#initialize(params = {}) ⇒ CitidirectSecuritiesTracker
constructor
Instance default variables.
-
#parse_cds_user_entitlement_report_dat(file) ⇒ Object
Parsing the CitiDirect for Securities user entitlement report in DAT format.
-
#print_user_entitlement ⇒ Object
Print out the user entitlement table in plain text, to be imported into database.
Methods included from Utils
#file_2_list, #is_fqdn?, #is_ip?, #is_url?, #list_2_file, #load_known_user_map_from_file, #nslookup, #search_ad, #update_dn
Constructor Details
#initialize(params = {}) ⇒ CitidirectSecuritiesTracker
Instance default variables
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 20 def initialize (params ={}) @verbose=params.fetch(:verbose, false) # CitiDirect for Securities user entitlement report generation: Logon to CitiDirect for Securities sites https://securities.citidirect.com # under "ISSUER" -> "AGENCY AND TRUST", Choose "Issuer And Paying Agent - NAM"; # Select "Reports" -> "Report List" -> "Client" Report Categories -> "User Entitlements Report - CLNT", press "Get Parameters" button # Under "Sort Order - View", choose "Export" then press "Get Xml" button to generating the report # Press "Get File Directly" to download and unzip the xml report into a local file System # # Note: There is limitation in the entitlement report where 'Data Group' and 'Functional Group' details are not provided by the application # You may need to logon to the application manually to review the entitlement details when necessary; the limitation also includes # insufficient admin user data in the entitlement report. #@cds_user_entitlement_report = File.dirname(__FILE__)+"/../../data/citidirect_securities/User_Entitlements_Report___CLNT.xml" @cds_user_entitlement_report_dat = File.dirname(__FILE__)+"/../../data/citidirect_securities/User_Entitlements_Report___CLNT.dat" # CitiDirect for Securities to AD user map file @file_cds_user_map = File.dirname(__FILE__)+"/../../data/citidirect_securities/citidirect_securities_user_map.txt" # the local cacsh file @cds_2_ad_user=load_known_user_map_from_file(@file_cds_user_map) # Load the user entitlement instance variable from the report @cds_user_entitlement=parse_cds_user_entitlement_report_dat(@cds_user_entitlement_report_dat) #@cds_user_entitlement=parse_cds_user_entitlement_report(@cds_user_entitlement_report) # Procedure to add DN foreign key to the @cds_user_entitlement, by using key1 key2 to perform the AD search insert_dn save! end |
Instance Attribute Details
#cds_2_ad_user ⇒ Object (readonly)
Returns the value of attribute cds_2_ad_user.
17 18 19 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 17 def cds_2_ad_user @cds_2_ad_user end |
#cds_user_entitlement ⇒ Object (readonly)
Returns the value of attribute cds_user_entitlement.
17 18 19 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 17 def cds_user_entitlement @cds_user_entitlement end |
#cds_user_status_report ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 16 def cds_user_status_report @cds_user_status_report end |
#file_cds_user_map ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 16 def file_cds_user_map @file_cds_user_map end |
#verbose ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 16 def verbose @verbose end |
Instance Method Details
#cds_search_by_dn(dn) ⇒ Object Also known as: search_by_dn
Search user entitlement record by AD DN
215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 215 def cds_search_by_dn (dn) begin puts "Perform search on the user entitlement records by AD DN: #{dn}" if @verbose @cds_user_entitlement.each do |key, val| return val if @cds_user_entitlement[key]['DN'].eql? dn end return nil rescue => ee puts "Exception on method #{__method__}: #{ee}" end end |
#dn_2_index(dn) ⇒ Object
Retrieve the user index from the @cds_user_entitlement data structure
129 130 131 132 133 134 135 136 137 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 129 def dn_2_index (dn) begin (1..@cds_user_entitlement.count).map do |index| return index if @cds_user_entitlement[index]["DN"]==dn end rescue => ee puts "Exception on method #{__method__}: #{ee}" end end |
#parse_cds_user_entitlement_report_dat(file) ⇒ Object
Parsing the CitiDirect for Securities user entitlement report in DAT format
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 87 def parse_cds_user_entitlement_report_dat (file) #begin puts "Parse the user entitlement report: #{file}" if @verbose cds_user_entitlement=Hash.new user_index=0 line_cnt=0 cur_user=String.new dat_doc = File.open(file, 'r') dat_doc.each do |record| line_cnt+=1 next if line_cnt == 1 rec=record.chomp!.split(/\t/) ent=Hash.new ent['Application'] = rec[8] ent['Data Group'] = rec[9] ent['Functional Group'] = rec[10] if cur_user != rec[0] user_index+=1 cur_user = rec[0] cds_user_entitlement[user_index]=Hash.new unless cds_user_entitlement.key?(user_index) cds_user_entitlement[user_index]['User Name'] = rec[0] cds_user_entitlement[user_index]['First Name'] = rec[1] cds_user_entitlement[user_index]['Last Name'] = rec[2] cds_user_entitlement[user_index]['Created'] = rec[3] cds_user_entitlement[user_index]['Last Login'] = rec[4] cds_user_entitlement[user_index]['Pwd Expired'] = rec[5] cds_user_entitlement[user_index]['Acct Disabled'] = rec[6] cds_user_entitlement[user_index]['Organization'] = rec[7] cds_user_entitlement[user_index]['Entitlements'] = Array.new cds_user_entitlement[user_index]['Entitlements'].push(ent) else cds_user_entitlement[user_index]['Entitlements'].push(ent) end end dat_doc=nil return cds_user_entitlement #rescue => ee # puts "Exception on method #{__method__}: #{ee}" #end end |
#print_user_entitlement ⇒ Object
Print out the user entitlement table in plain text, to be imported into database
179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/ucert/citidirect_securities_tracker.rb', line 179 def print_user_entitlement #begin puts "user Entitlement Report in Plain-text Format" if @verbose @cds_user_entitlement.first[1].each {|k,v| print k,"|"} if @verbose puts if @verbose @cds_user_entitlement.values.map do |rec| rec.each {|k,v| print v,"|"} puts end #rescue => ee #puts "Exception on method #{__method__}: #{ee}" #end end |