Optimized Schema replace logic and updated exit codes

This commit is contained in:
2025-06-27 14:44:11 +02:00
parent 10f703537a
commit 9b249c531c

16
main.py
View File

@@ -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" 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()