zephir.utils.ldap_user

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