From 544c2aa98c6e40ec47b5d8e64b91dd4878c3b438 Mon Sep 17 00:00:00 2001 From: Fanch Date: Fri, 24 Oct 2025 16:40:38 +0200 Subject: [PATCH] pahekoldap --- bin/checkPahekoLdap.py | 21 +++++++++++++++++++-- bin/lib/ldap.py | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/bin/checkPahekoLdap.py b/bin/checkPahekoLdap.py index 4e3f0df..a545d0a 100755 --- a/bin/checkPahekoLdap.py +++ b/bin/checkPahekoLdap.py @@ -10,6 +10,11 @@ from lib.misc import get_disk_size paheko = Paheko() categorie_membres = paheko.get_categorie_id("Membres") membres = paheko.get_users_in_categorie(categorie_membres) +categorie_collegiale = paheko.get_categorie_id("Collégiale") +membres += paheko.get_users_in_categorie(categorie_collegiale) +categorie_administrateurs = paheko.get_categorie_id("Administrateurs") +membres += paheko.get_users_in_categorie(categorie_administrateurs) + def test_services(paheko_entry, ldap_entry): # Vérifie que les services orga activés sont bien désactivés sur le mutu. Juste nextcloud pour l'instant. @@ -137,7 +142,9 @@ with Ldap() as ldap: # servers_locations.append(f"{membre['email']} - {membre['nom_orga']}, pas trouvé sur {membre['serveur_prod']}") else: - not_in_ldap.append(f"{membre['email']} / id : {membre['id']}") + ldap_entry = ldap.get_mail_forwarding(membre["email"]) + if not ldap_entry: + not_in_ldap.append(f"{membre['email']} / id : {membre['id']}") except Exception as e: print(membre) print(ldap.get_email(membre["email"])) @@ -153,6 +160,16 @@ with Ldap() as ldap: else: not_in_paheko.append(ldap_user["mail"][0].decode()) + ldap_forwardings = ldap.get_mail_forwardings() + for ldap_user in ldap_forwardings: + ldap_user = ldap_user[1] + paheko_entry = [x for x in membres if x["email"] == ldap_user["mail"][0].decode() or (x["emails_rattaches"] and ldap_user["mail"][0].decode() in x["emails_rattaches"])] + paheko_entry = paheko_entry[0] if len(paheko_entry) else None + if paheko_entry: + pass + else: + not_in_paheko.append(ldap_user["mail"][0].decode() + " (forwarding)") + print("Mails dans paheko mais pas dans le LDAP :") print("\n".join(not_in_ldap)) @@ -173,4 +190,4 @@ print("\nMails d'orga dans paheko mais manquant dans le LDAP :") print("\n".join(mails_orgas)) print("\nOrgas pas trouvées sur le serveur renseigné dans paheko :") -print("\n".join(servers_locations)) \ No newline at end of file +print("\n".join(servers_locations)) diff --git a/bin/lib/ldap.py b/bin/lib/ldap.py index f8d427d..631854b 100644 --- a/bin/lib/ldap.py +++ b/bin/lib/ldap.py @@ -43,6 +43,25 @@ class Ldap: return result + def get_mail_forwarding(self, email): + """ + Renvoie le mail forwarding + """ + # Créer une chaîne de filtre pour rechercher dans les champs "cn" et "mailAlias" + filter_str = "(|(cn={})(mailAlias={}))".format(email, email) + result = self.ldap_connection.search_s("ou=mailForwardings,{}".format(self.ldap_root), ldap.SCOPE_SUBTREE, filter_str) + return result + + + def get_mail_forwardings(self): + """ + Renvoie tous les mail forwardings. + """ + # Créer une chaîne de filtre pour rechercher dans les champs "cn" et "mailAlias" + result = self.ldap_connection.search_s("ou=mailForwardings,{}".format(self.ldap_root), ldap.SCOPE_ONELEVEL) + return result + + def delete_user(self, email): """ Supprimer un utilisateur du LDAP par son adresse e-mail