Ajustement des outils pour LDAP & Mutt.
authorProgfou <jean-christophe.andre@auf.org>
Sat, 2 Jun 2012 04:01:03 +0000 (11:01 +0700)
committerProgfou <jean-christophe.andre@auf.org>
Sat, 2 Jun 2012 04:01:03 +0000 (11:01 +0700)
auf-annuaire
auf-annuaire-mutt

index ed59d02..186ce35 100755 (executable)
@@ -2,20 +2,18 @@
 # -*- coding: utf-8 -*-
 """Outil de gestion d'annuaire LDAP pour l'AuF.
 
-Copyright ©2009-2010  Agence universitaire de la Francophonie
+Copyright ©2009-2012  Agence universitaire de la Francophonie
 Licence : GPL version 3
 Auteur : Progfou <jean-christophe.andre@auf.org>
 
-Dépendances Debian : python >= 2.5, python-simplejson, auf-refer
+Dépendances Debian : python >= 2.5, auf-refer
 
 Usage :
 
   auf-annuaire.py | ldapmodify -x -c -D "cn=admin,o=AUF" -y /etc/ldap.secret
 """
-
 import os
 import aufrefer
-import simplejson as json
 
 LDAP_HOST = '127.0.0.1'
 LDAP_BASE = 'ou=People,o=AUF'
@@ -31,8 +29,7 @@ ou: People
 
 ISO_3166 = aufrefer.get('iso-3166-fr.json')
 NOMS_BUREAU = aufrefer.get('bureaux.json')
-PAYS_IMPLANT = {'DANANG.VN': 'VN', 'HCMV.VN': 'VN', 'IFI': 'VN',
-                'IFMT': 'LA', 'ITC': 'KH', 'IFAG': 'BG', 'IFE': 'MU'}
+PAYS_IMPLANT = aufrefer.get('pays-implant.json')
 
 PHOTO_FILENAME = "/var/lib/auf-refer-photos/%s.jpg"
 
@@ -120,23 +117,23 @@ class AnnuaireAuF(object):
         ldap_dict = { }
         ldap_dict['objectClass'] = [
             u'top', u'person', u'organizationalPerson', u'inetOrgPerson',
-            u'inetLocalMailRecipient',
+            u'inetLocalMailRecipient', u'mozillaAbPersonAlpha',
         ]
         ldap_dict['sn'] = [ nom ]
         ldap_dict['givenName'] = [ prenom ]
         ldap_dict['cn'] = [ nom_affichage ]
         ldap_dict['ou'] = [ u'People', nom_bureau_court, nom_bureau_long ]
-        ldap_dict['l'] = [ ISO_3166.get(CC, u'### Pays absent de la norme ISO-3166 ###') ]
+        ldap_dict['c'] = [ ISO_3166.get(CC,
+                            u'### Pays absent de la norme ISO-3166 ###') ]
         ldap_dict['mail'] = [ adel ]
         ldap_dict['o'] = [ u'AuF', u'Agence universitaire de la Francophonie' ]
         if json_dict.has_key('mdp') and json_dict['mdp']:
             ldap_dict['userPassword'] = [ '{CRYPT}' + json_dict['mdp'] ]
         if json_dict.has_key('tel_ip') and json_dict['tel_ip']:
             ldap_dict['telephoneNumber'] = [ json_dict['tel_ip'] ]
-        if login is not None and login:
-            ldap_dict['uid'] = [ login ]
-        else:
-            ldap_dict['uid'] = [ user ]
+        ldap_dict['uid'] = [ user ]
+        if login is not None and login and login != user:
+            ldap_dict['uid'].append(login)
         # objectClass: inetLocalMailRecipient
         ldap_dict['mailLocalAddress'] = [ json_dict['redir'] ]
         ldap_dict['mailHost'] = [ 'imaps://mail.%s:993' % json_dict['redir'].rsplit('@', 1)[1] ]
index 939a922..360ba82 100755 (executable)
@@ -1,26 +1,30 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
-#
-# Mutt help, section 4.6:
-# The wrapper script should accept the query on the command-line.
-# It should return a one line message, then each matching response
-# on a single line, each line containing a tab separated address
-# then name then some other optional information.
-# On error, or if there are no matching addresses, return a non-zero
-# exit code and a one line error message.
+"""Service d'annuaire AuF pour Mutt.
 
+Copyright ©2011-2012  Agence universitaire de la Francophonie
+Licence : GPL version 3
+Auteur : Progfou <jean-christophe.andre@auf.org>
+
+Dépendances Debian : python >= 2.5, auf-refer
+
+Mutt help, section 4.6:
+The wrapper script should accept the query on the command-line.
+It should return a one line message, then each matching response
+on a single line, each line containing a tab separated address
+then name then some other optional information.
+On error, or if there are no matching addresses, return a non-zero
+exit code and a one line error message.
+"""
 import sys
 import re
 
 try:
     import aufrefer
 except:
-    print "Veuillez installer le paquet 'auf-refer'."
+    print "Cet outil nécessite l'installation de 'auf-refer'."
     sys.exit(1)
 
-PAYS_IMPLANT = {'DANANG.VN': 'VN', 'HCMV.VN': 'VN', 'IFI': 'VN',
-                'IFMT': 'LA', 'ITC': 'KH', 'IFAG': 'BG', 'IFE': 'MU'}
-
 if len(sys.argv) != 2:
     print "Usage : %s <search-string>" % sys.argv[0]
     sys.exit(1)
@@ -31,8 +35,8 @@ if r:
     search_string = r[0]
 
 annuaire = aufrefer.get('annuaire.json')
-
 iso3166fr = aufrefer.get('iso-3166-fr.json')
+pays_implant = aufrefer.get('pays-implant.json')
 
 nom_bureau_pays = {}
 for info in aufrefer.get('bureaux.json').values():
@@ -43,7 +47,7 @@ for a in annuaire:
     if a['nom'] is None or a['nom'] == '':
         a['nom'] = unicode(a['adel'].split('@')[0].replace('.',' ').title())
     pays = a['implant'].upper()
-    pays = PAYS_IMPLANT.get(pays, pays)
+    pays = pays_implant.get(pays, pays)
     a['pays'] = pays
     nom_pays = iso3166fr.get(pays, 'Inconnu (%s)' % pays)
     nom_bureau = nom_bureau_pays.get(pays, u'Inconnu (%s)' % pays)