|
30 |
__all__ = ('user_connection', 'get_user_connection', 'machine_connection', 'get_machine_connection', 'admin_connection', 'get_admin_connection') |
30 |
__all__ = ('user_connection', 'get_user_connection', 'machine_connection', 'get_machine_connection', 'admin_connection', 'get_admin_connection') |
31 |
|
31 |
|
32 |
|
32 |
|
|
|
33 |
class _WrappedAccess(_access, object): |
34 |
|
35 |
def __apply(self, func, *args, **kwargs): |
36 |
try: |
37 |
return func(*args, **kwargs) |
38 |
except (ldap.SERVER_DOWN, ldap.UNAVAILABLE, ldap.TIMEOUT, ldap.TIMELIMIT_EXCEEDED, udm_errors.ldapTimeout): |
39 |
reset_cache() |
40 |
raise |
41 |
except udm_errors.ldapError as exc: |
42 |
if isinstance(exc.original_exception, (ldap.SERVER_DOWN, ldap.UNAVAILABLE, ldap.TIMEOUT, ldap.TIMELIMIT_EXCEEDED)): |
43 |
reset_cache() |
44 |
raise |
45 |
|
46 |
def unbind(self, *args, **kwargs): |
47 |
return self.__apply(super(_WrappedAccess, self).unbind, *args, **kwargs) |
48 |
|
49 |
def whoami(self, *args, **kwargs): |
50 |
return self.__apply(super(_WrappedAccess, self).whoami, *args, **kwargs) |
51 |
|
52 |
def get_schema(self, *args, **kwargs): |
53 |
return self.__apply(super(_WrappedAccess, self).get_schema, *args, **kwargs) |
54 |
|
55 |
def getAttr(self, *args, **kwargs): |
56 |
return self.__apply(super(_WrappedAccess, self).getAttr, *args, **kwargs) |
57 |
|
58 |
def get(self, *args, **kwargs): |
59 |
return self.__apply(super(_WrappedAccess, self).get, *args, **kwargs) |
60 |
|
61 |
def add(self, *args, **kwargs): |
62 |
return self.__apply(super(_WrappedAccess, self).add, *args, **kwargs) |
63 |
|
64 |
def modify(self, *args, **kwargs): |
65 |
return self.__apply(super(_WrappedAccess, self).modify, *args, **kwargs) |
66 |
|
67 |
def modify_s(self, *args, **kwargs): |
68 |
return self.__apply(super(_WrappedAccess, self).modify_s, *args, **kwargs) |
69 |
|
70 |
def searchDn(self, *args, **kwargs): |
71 |
return self.__apply(super(_WrappedAccess, self).searchDn, *args, **kwargs) |
72 |
|
73 |
def search(self, *args, **kwargs): |
74 |
return self.__apply(super(_WrappedAccess, self).search, *args, **kwargs) |
75 |
|
76 |
def getPolicies(self, *args, **kwargs): |
77 |
return self.__apply(super(_WrappedAccess, self).getPolicies, *args, **kwargs) |
78 |
|
79 |
def delete(self, *args, **kwargs): |
80 |
return self.__apply(super(_WrappedAccess, self).delete, *args, **kwargs) |
81 |
|
82 |
def rename(self, *args, **kwargs): |
83 |
return self.__apply(super(_WrappedAccess, self).rename, *args, **kwargs) |
84 |
|
85 |
|
33 |
class LDAP(object): |
86 |
class LDAP(object): |
34 |
|
87 |
|
35 |
_LDAP_CONNECTION = 'ldap_connection' |
88 |
_LDAP_CONNECTION = 'ldap_connection' |
|
132 |
lo, po = conn |
185 |
lo, po = conn |
133 |
except (TypeError, ValueError): |
186 |
except (TypeError, ValueError): |
134 |
lo, po = None, None |
187 |
lo, po = None, None |
|
|
188 |
if lo is not None: |
189 |
lo.__class__ = _WrappedAccess |
135 |
return lo, po |
190 |
return lo, po |
136 |
|
191 |
|
137 |
def _decorator(func): |
192 |
def _decorator(func): |