|
@@ -71,6 +71,37 @@ def ldap_restore(username: str, password: str, backup_file: str):
|
|
|
conn.unbind()
|
|
conn.unbind()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def ldap_create_user(admin_username: str, admin_password: str, new_username: str, new_password: str, email: str):
|
|
|
|
|
+ conn = ldap_connect(admin_username, admin_password)
|
|
|
|
|
+ if not conn:
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
|
|
+ user_dn = f"uid={new_username},{LDAP_BASE_DN}"
|
|
|
|
|
+ ssha_password = create_ssha_password(new_password)
|
|
|
|
|
+ attributes = {
|
|
|
|
|
+ "objectClass": ["top", "person", "organizationalPerson", "inetOrgPerson"],
|
|
|
|
|
+ "sn": new_username,
|
|
|
|
|
+ "cn": new_username,
|
|
|
|
|
+ "uid": new_username,
|
|
|
|
|
+ "userPassword": ssha_password,
|
|
|
|
|
+ "mail": email,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if conn.search(user_dn, "(objectClass=*)", search_scope=ldap3.BASE):
|
|
|
|
|
+ print(f"Benutzer {new_username} existiert bereits.")
|
|
|
|
|
+ conn.unbind()
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
|
|
+ if not conn.add(user_dn, attributes=attributes):
|
|
|
|
|
+ print(f"Fehler beim Erstellen des Benutzers {new_username}: {conn.result}")
|
|
|
|
|
+ conn.unbind()
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
|
|
+ print(f"Benutzer {new_username} erfolgreich erstellt.")
|
|
|
|
|
+ conn.unbind()
|
|
|
|
|
+ return True
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def ldap_change_admin_password(old_password: str, new_password: str):
|
|
def ldap_change_admin_password(old_password: str, new_password: str):
|
|
|
admin_user = "uid=admin,ou=system"
|
|
admin_user = "uid=admin,ou=system"
|
|
|
conn = ldap_connect(admin_user, old_password)
|
|
conn = ldap_connect(admin_user, old_password)
|