1212def set_config (config ):
1313 u .__CONFIG__ = config
1414
15+ def format_ldap_error (err ):
16+ details = err .args [0 ] if len (err .args ) > 0 else err
17+ if isinstance (details , dict ):
18+ result = details .get ("result" , "" )
19+ desc = details .get ("desc" , "" )
20+ info = details .get ("info" , "" )
21+ return (str (result ) + ' ' + str (desc ) + ' ' + str (info )).strip ()
22+ if isinstance (details , (list , tuple )):
23+ return " " .join ([str (part ) for part in details ]).strip ()
24+ return str (details ).strip ()
25+
1526def connect_ldap (url ,dn ,password ):
1627 try :
17- l = ldap .initialize (url )
28+ # python-ldap expects an LDAP URI (ldap:// or ldaps://).
29+ ldap_uri = url if '://' in str (url ) else 'ldap://' + str (url )
30+ l = ldap .initialize (ldap_uri )
1831 l .set_option (ldap .OPT_X_TLS_REQUIRE_CERT , ldap .OPT_X_TLS_ALLOW )
1932 l .simple_bind_s (dn ,password )
2033 return l
2134 except ldap .LDAPError as e :
22- e_dict = e .args [0 ]
23- print (u .returncode (1 , str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" )))
35+ print (u .returncode (1 , format_ldap_error (e )))
2436 return (1 )
2537
2638def convert_to_utf8 (entry ):
@@ -102,8 +114,7 @@ def search_entity(l,entity):
102114 r = l .search_s (base ,ldap .SCOPE_SUBTREE ,filter )
103115 return r
104116 except ldap .LDAPError as e :
105- e_dict = e .args [0 ]
106- print (u .returncode (1 , str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" ) + " " + e_dict .get ("info" )))
117+ print (u .returncode (1 , format_ldap_error (e )))
107118 exit (1 )
108119
109120def upsert_entry (l ,entity ):
@@ -121,8 +132,7 @@ def upsert_entry(l,entity):
121132 action = "add"
122133 l .add_s (dn , ldif )
123134 except ldap .LDAPError as e :
124- e_dict = e .args [0 ]
125- print (u .returncode (1 , "add " + str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" ) + " " + e_dict .get ("info" ,'' )))
135+ print (u .returncode (1 , "add " + format_ldap_error (e )))
126136 exit (1 )
127137 else :
128138 if len (r ) > 1 :
@@ -142,8 +152,7 @@ def upsert_entry(l,entity):
142152 action = "mod"
143153 l .modify_s (r [0 ][0 ],ldif )
144154 except ldap .LDAPError as e :
145- e_dict = e .args [0 ]
146- print (u .returncode (1 , 'mod ' + str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" ) + " " + e_dict .get ("info" ,'' )))
155+ print (u .returncode (1 , 'mod ' + format_ldap_error (e )))
147156 return (1 )
148157 else :
149158 ## changement du DN
@@ -156,8 +165,7 @@ def upsert_entry(l,entity):
156165 action = "rename"
157166 l .rename_s (oldDn ,new_rdn ,newsuperior = newSuperior )
158167 except ldap .LDAPError as e :
159- e_dict = e .args [0 ]
160- print (u .returncode (1 , 'rename ' + str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" ) + " " + e_dict .get ("info" )))
168+ print (u .returncode (1 , 'rename ' + format_ldap_error (e )))
161169 exit (1 )
162170 return u .returncode (0 ,"Entree " + dn + " " + action )
163171
@@ -223,8 +231,7 @@ def delete_entity(l,entity):
223231 l .delete_s (r [0 ][0 ])
224232 return u .returncode (0 , "user : " + r [0 ][0 ] + " deleted" )
225233 except ldap .LDAPError as e :
226- e_dict = e .args [0 ]
227- print (u .returncode (1 , str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" ) + " " + e_dict .get ("info" )))
234+ print (u .returncode (1 , format_ldap_error (e )))
228235 exit (1 )
229236 else :
230237 print (u .returncode (1 , "User not found" ))
@@ -272,8 +279,7 @@ def activate_entry(l,entity,activate):
272279 l .modify_s (r [0 ][0 ], ldif )
273280 return (u .returncode (0 , message ))
274281 except ldap .LDAPError as e :
275- e_dict = e .args [0 ]
276- return (u .returncode (1 , str (e_dict .get ("result" )) + ' ' + e_dict .get ("desc" ) + " " + e_dict .get ("info" )))
282+ return (u .returncode (1 , format_ldap_error (e )))
277283
278284 else :
279285 return (u .returncode (1 ,"Not Found" ))
0 commit comments