Package zephir :: Package utils :: Module ldap_user
[frames] | no frames]

Source Code for Module zephir.utils.ldap_user

  1  # -*- coding: UTF-8 -*- 
  2  ########################################################################### 
  3  # Eole NG - 2007 
  4  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon) 
  5  # Licence CeCill  cf /root/LicenceEole.txt 
  6  # eole@ac-dijon.fr 
  7  # 
  8  # ldap_user.py 
  9  # 
 10  #  Utilitaire de gestion d'utilisateurs LDAP pour zephir 
 11  # 
 12  ########################################################################### 
 13   
 14  import ldap, sys 
 15  from os.path import isfile 
 16  from creole.utils import print_red 
 17   
 18  # configuration ldap (adresse serveur) 
 19  LDAPCONF = '/etc/eole/eoleldap.conf' 
 20  if isfile(LDAPCONF): 
 21      execfile(LDAPCONF) 
 22      try: 
 23          # vérification de l'authentification 
 24          l = ldap.open(ldap_server) 
 25          l.simple_bind_s('cn=admin,o=gouv,c=fr', ldap_passwd) 
 26      except: 
 27          print_red("\nLe mot de passe ldap stocké est invalide\nlancez reconfigure pour le réinitialiser\n") 
 28          sys.exit(1) 
 29  else: 
 30      raise Exception("Fichier %s non trouvé" % LDAPCONF) 
 31   
32 -def add_user(login,passwd):
33 l = ldap.open(ldap_server) 34 try: 35 l.simple_bind_s('cn=admin,o=gouv,c=fr',ldap_passwd) 36 except: 37 sys.exit("\nerreur d'authentification\n") 38 39 # si la racine n'existe pas, on la crée 40 try: 41 result = l.search_s("o=gouv, c=fr", ldap.SCOPE_SUBTREE,"(&(objectClass=organization)(o=gouv))") 42 except ldap.NO_SUCH_OBJECT: 43 result = [] 44 if result == []: 45 l.add_s('o=gouv,c=fr', [('objectClass','organization'),('o','gouv'),('description','Gouvernemental')]) 46 47 # on regarde si il existe 48 result = l.search_s("o=gouv, c=fr", ldap.SCOPE_SUBTREE,"(&(objectClass=OpenLDAPperson)(uid="+login+"))") 49 if result == []: 50 # si non on le crée 51 try: 52 l.add_s('uid='+login+',o=gouv,c=fr', [('objectClass','OpenLDAPperson'),('uid',login),('cn',login),('sn',login),('UserPassword',passwd)]) 53 except: 54 print("\nerreur d'authentification\n") 55 else: 56 # si il existe déjà on modifie son mot de passe 57 try: 58 l.modify_s('uid='+login+',o=gouv,c=fr', [(ldap.MOD_REPLACE,'UserPassword',passwd)]) 59 except: 60 print("\nerreur d'authentification\n") 61 62 l.unbind()
63
64 -def del_user(login):
65 l = ldap.open(ldap_server) 66 try: 67 l.simple_bind_s('cn=admin,o=gouv,c=fr',ldap_passwd) 68 except: 69 sys.exit("\nerreur d'authentification\n") 70 71 # si la racine n'existe pas, on la crée 72 result = l.search_s("o=gouv, c=fr", ldap.SCOPE_SUBTREE,"(&(objectClass=OpenLDAPperson)(uid=%s))" % login) 73 if len(result) != 1: 74 print "\nerreur, cet utilisateur n'existe pas\n" 75 return 0 76 else: 77 # si il existe, on le supprime 78 try: 79 l.delete_s(result[0][0]) 80 except: 81 return 0 82 else: 83 return 1 84 85 l.unbind()
86
87 -def list_user():
88 l = ldap.open(ldap_server) 89 try: 90 l.simple_bind_s('cn=admin,o=gouv,c=fr',ldap_passwd) 91 except: 92 sys.exit("\nerreur d'authentification\n") 93 94 # si la racine n'existe pas, on la crée 95 result = l.search_s("o=gouv, c=fr", ldap.SCOPE_SUBTREE,"(objectClass=OpenLDAPperson)") 96 l.unbind() 97 if result == []: 98 print "\n Aucun utilisateur trouvé dans l'annuaire local\n" 99 else: 100 # on affiche tous les utilisateurs 101 print "\n liste des utilisateurs zephir :\n" 102 for user in result: 103 print "- " + str(user[1]['cn'][0]) 104 print "\n"
105