1+ import sys
2+ sys .path .append ('../lib' )
3+ import backend_ldap_utils as u
4+ import ldap
5+ import argparse
6+
7+ def main ():
8+ parser = argparse .ArgumentParser ()
9+ parser .add_argument ('--active' , help = '0 | 1 ' , default = '1' )
10+ args = parser .parse_args ()
11+ json = u .readjsoninput ()
12+ u .readconfig ('../etc/config.conf' )
13+ if u .is_backend_concerned (json ) == False :
14+ print (u .returncode (0 , "Not concerned" ))
15+ exit (0 )
16+ l = u .connect_ldap (u .config ('host' ),u .config ('dn' ),u .config ('password' ))
17+ if u .config ('disabledAttribute' ,'' ) == '' :
18+ print (u .returncode (1 ,'attribut non trouvé : disabledAttribute' ))
19+ exit (1 )
20+ r = u .search_entity (l ,json )
21+ if len (r ) == 0 :
22+ print (u .returncode (1 ,'Entrée LDAP non trouvée' ))
23+ exit (1 )
24+ ldif = []
25+ #verification si l object class est present
26+ add_obj_class = u .config ('additionnalObjectClass' ).encode ()
27+ present = False
28+ objectclass = r [0 ][1 ]['objectClass' ]
29+ for obj in objectclass :
30+ if obj == add_obj_class :
31+ present = True
32+ if not present :
33+ objectclass .append (add_obj_class )
34+ ldif .append ((ldap .MOD_REPLACE ,'objectClass' ,objectclass ))
35+ message = ""
36+ if args .active == "1" :
37+ attribute = u .config ('disabledAttribute' )
38+ v = u .config ('enableValue' )
39+ ldif .append ((ldap .MOD_REPLACE , u .config ('disabledAttribute' ), u .config ('enableValue' ).encode ('utf-8' )))
40+ message = "OK compte actif"
41+ else :
42+ ldif .append ((ldap .MOD_REPLACE , u .config ('disabledAttribute' ), u .config ('disableValue' ).encode ('utf-8' )))
43+ message = "OK compte inactif"
44+ try :
45+ l .modify_s (r [0 ][0 ], ldif )
46+ except ldap .LDAPError as e :
47+ e_dict = e .args [0 ]
48+ print (u .returncode (1 , str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" )))
49+ exit (1 )
50+
51+ print (u .returncode (0 , message ))
52+ if __name__ == '__main__' :
53+ main ()
0 commit comments