From 9b249c531c69287f110386060a06c25936af3087 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Fri, 27 Jun 2025 14:44:11 +0200 Subject: [PATCH] Optimized Schema replace logic and updated exit codes --- main.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index 31f0686..f52a6e4 100755 --- a/main.py +++ b/main.py @@ -166,6 +166,7 @@ def main(): print(f"➕ Added AttributeType: {atdef}") except ldap.LDAPError as e: print(f"❌ LDAP error for AttributeType '{atdef}': {e}", file=sys.stderr) + sys.exit(1) # Add/update ObjectClasses for ocdef in args.object_class: @@ -175,11 +176,17 @@ def main(): attrlist=['olcObjectClasses']) existing = result[0][1].get('olcObjectClasses', []) if encoded in existing: - print(f"â„šī¸ ObjectClass already exists, replacing: {ocdef}") - conn.modify_s(schema_dn, [ - (ldap.MOD_REPLACE, 'olcObjectClasses', [encoded]) - ]) - print(f"🔄 Replaced ObjectClass: {ocdef}") + print(f"â„šī¸ ObjectClass already exists, replacing (DELETE + ADD): {ocdef}") + mods = [ + (ldap.MOD_DELETE, 'olcObjectClasses', [encoded]), + (ldap.MOD_ADD, 'olcObjectClasses', [encoded]) + ] + try: + conn.modify_s(schema_dn, mods) + print(f"🔄 Replaced ObjectClass: {ocdef}") + except ldap.LDAPError as e: + print(f"❌ LDAP error replacing ObjectClass '{ocdef}': {e}") + sys.exit(2) else: conn.modify_s(schema_dn, [ (ldap.MOD_ADD, 'olcObjectClasses', [encoded]) @@ -187,6 +194,7 @@ def main(): print(f"➕ Added ObjectClass: {ocdef}") except ldap.LDAPError as e: print(f"❌ LDAP error for ObjectClass '{ocdef}': {e}", file=sys.stderr) + sys.exit(3) conn.unbind_s()