From 988d420e445a81aa7afadc7959881e37f3e2e763 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Tue, 31 Mar 2026 17:28:17 +0200 Subject: [PATCH] ldap.Connection: Support uri config option Currently the configuration passed to the Connection constructor needs to contain an ldap_uri entry. Add "uri" as alias, because ldap_uri for the LDAP config in many contexts represents a tautology and is left out. Signed-off-by: Jan Lindemann --- tools/python/jwutils/ldap.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tools/python/jwutils/ldap.py b/tools/python/jwutils/ldap.py index f84ab2f..3d023f0 100644 --- a/tools/python/jwutils/ldap.py +++ b/tools/python/jwutils/ldap.py @@ -24,7 +24,12 @@ class Config: @property def ldap_uri(self): if self.__ldap_uri is None: - self.__ldap_uri = self.__get('ldap_uri', default='ldap://ldap.janware.com') + for key in ['ldap_uri', 'uri']: + self.__ldap_uri = self.__get(key, default=None) + if self.__ldap_uri is not None: + break + else: + self.__ldap_uri = 'ldap://ldap.janware.com' return self.__ldap_uri @ldap_uri.setter def ldap_uri(self, rhs): @@ -74,13 +79,23 @@ class Connection: # export May = auto() def __init__(self, conf: Config|BaseConfig|None=None, backtrace=False): + uri: str|None = None c = conf if isinstance(conf, Config) else Config(conf) - ret = ldap.initialize(c.ldap_uri) - ret.start_tls_s() + try: + uri = c.ldap_uri + except: + uri = c.uri + try: + ret = ldap.initialize(uri) + ret.start_tls_s() + except Exception as e: + slog(ERR, f'Failed to initialize LDAP connection to "{uri}" ({str(e)})') + raise try: rr = ret.bind_s(c.bind_dn, c.bind_pw) # method) except Exception as e: - raise Exception(f'Failed to bind to {c.ldap_uri} with dn {c.bind_dn} ({e})') + slog(ERR, f'Failed to bind to "{uri}" with dn "{c.bind_dn}" ({str(e)})') + raise self.__ldap = ret self.__backtrace = backtrace self.__object_classes_by_oid: dict[str, ObjectClass]|None = None