From beeca5ce466649c6abe1ffbc77ded70105c1322c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Sun, 23 Dec 2018 16:36:48 +0100 Subject: [PATCH] Fix missed errors introduced by refactoring (see precedent commit) --- unipoly-mlmmj-ldap-sync | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/unipoly-mlmmj-ldap-sync b/unipoly-mlmmj-ldap-sync index 43e7994..9969838 100755 --- a/unipoly-mlmmj-ldap-sync +++ b/unipoly-mlmmj-ldap-sync @@ -2,6 +2,7 @@ require 'toml' require 'net/ldap' +require 'English' @configuration_file = '/etc/unipoly-mlmmj-ldap-sync.toml' @configuration = nil @@ -15,10 +16,10 @@ def read_configuration(path) end end -def connect_ldap(conf) +def connect_ldap conn = Net::LDAP.new( - host: conf['ldap']['host'], - port: conf['ldap']['port'], + host: @configuration['ldap']['host'], + port: @configuration['ldap']['port'], auth: { method: :simple, username: @configuration['ldap']['auth']['username'], @@ -26,26 +27,23 @@ def connect_ldap(conf) } ) + ldap_addr = "#{@configuration['ldap']['host']}:#{@configuration['ldap']['port']}" begin if conn.bind conn else - puts "Failed to authenticate against LDAP server: \ - #{conf['ldap']['host']}:#{conf['ldap']['port']}" + puts "Failed to authenticate against LDAP server: #{ldap_addr}" exit(1) end rescue LdapError => raised_error - puts "Failed to contact LDAP server: \ - #{conf['ldap']['host']}:#{conf['ldap']['port']}" + puts "Failed to contact LDAP server: #{ldap_addr}" puts raised_error exit(1) end end -def get_mlmmj_subscribers(list_name) +def get_mlmmj_subscribers(list) mlmmj_list_binary = @configuration['mlmmj']['list_binary'] - mlmmj_basepath = @configuration['mlmmj']['basepath'] - list = "#{mlmmj_basepath}/#{list_name}@#{@configuration['domain']}" unless File.executable?(mlmmj_list_binary) puts "could not execute #{mlmmj_list_binary}" @@ -94,13 +92,13 @@ def remove_subscriber_from(list_name, list, addr) # We ignore this action if the configuration file doesn't say we are allowed # to remove addresses from this list. - unless conf['lists_remove'].include?(list_name) + unless @configuration['lists_remove'].include?(list_name) puts 'IGNORED' return end # Unsubscribe the address from the list. - mlmmj_unsub_binary = conf['mlmmj']['unsub_binary'] + mlmmj_unsub_binary = @configuration['mlmmj']['unsub_binary'] `#{mlmmj_unsub_binary} -L #{list} -a #{s} -q -s` if $CHILD_STATUS.exitstatus.zero? puts 'OK' @@ -110,26 +108,28 @@ def remove_subscriber_from(list_name, list, addr) end def sync_list(list_name, ldap_group_entry) + mlmmj_basepath = @configuration['mlmmj']['basepath'] + list = "#{mlmmj_basepath}/#{list_name}@#{@configuration['domain']}" + # Members are formatted as # 'mail=user@domain.tld,ou=Users,dc=unipoly,dc=epfl,dc=ch': we extract the # mail address. ldap_members = ldap_group_entry.uniquemember.map do |dn| /mail=([^,]+),/.match(dn).values_at(1).first.downcase end - puts "Found #{entry.dn} with #{members.size} members" + puts "Found #{ldap_group_entry.dn} with #{ldap_members.size} members" # Extract mail addresses from Mlmmj print 'Searchin mlmmj... ' - mlmmj_subscribers = get_mlmmj_subscribers(list_name) + mlmmj_subscribers = get_mlmmj_subscribers(list) puts 'OK' - puts "Found #{entry.cn}@#{@configuration['domain']} with #{subscribers.size} \ - subscribers" - print "\n" + puts "Found #{list_name}@#{@configuration['domain']} with\ + #{mlmmj_subscribers.size} subscribers" # Add to the subscribers any missing entry # Remove successful matches ldap_members.each do |addr| - add_subscriber_to(list_name, subscribers, list, addr) + add_subscriber_to(list_name, mlmmj_subscribers, list, addr) end # Remove remaining "subcribers" (= they did not match with LDAP members) @@ -142,7 +142,7 @@ end def main # Parse configuration, bind to LDAP server @configuration = read_configuration(@configuration_file) - conn = connect_ldap(conf) + conn = connect_ldap() domain = @configuration['domain'] basetree = @configuration['ldap']['lists']['basetree'] @@ -161,7 +161,7 @@ def main else puts 'OK' ldap_group_entry = matched_ldap_groups.first - sync_list_with(list_name, ldap_group_entry) + sync_list(list_name, ldap_group_entry) end end end