diff --git a/lc_ldap.py b/lc_ldap.py index 3860271..70098d0 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -385,12 +385,26 @@ class lc_ldap_admin(lc_ldap): class lc_ldap_local(lc_ldap): """Connexion LDAP en lecture seule sur la base locale. L'idée est que les machines avec un réplica bossent - avec elles-mêmes pour la lecture, pas avec vert.""" + avec elles-mêmes pour la lecture, pas avec vert. + + Attention, les accès internes en lecture seule + ou avec une socket ldapi semblent moins prioritaires + qu'avec cn=admin. Ne pas utiliser cette fonction + si vous souhaitez faire beaucoup de recherches + indépendantes (c'est le temps d'accès à la socket + qui est problématique)""" def __init__(self): - secrets = import_secrets() - ro_uri = 'ldap://127.0.0.1' - auth_dn = secrets.ldap_readonly_auth_dn - auth_pw = secrets.ldap_readonly_password + if os.path.exists('/var/run/slapd/ldapi'): + ro_uri = 'ldapi://%2fvar%2frun%2fslapd%2fldapi/' + auth_dn = auth_pw = "" + elif os.path.exists('/var/run/ldapi'): + ro_uri = 'ldapi://%2fvar%2frun%2fldapi/' + auth_dn = auth_pw = "" + else: + secrets = import_secrets() + ro_uri = 'ldap://127.0.0.1' + auth_dn = secrets.ldap_readonly_auth_dn + auth_pw = secrets.ldap_readonly_password super(lc_ldap_local, self).__init__(uri=ro_uri, dn=auth_dn, cred=auth_pw)