|
|
|
@ -44,12 +44,19 @@ def ldapservers():
|
|
|
|
|
def user_or_customer(uid): |
|
|
|
|
server = ldapservers() |
|
|
|
|
conn = Connection(server) |
|
|
|
|
if conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid): |
|
|
|
|
conn.bind() |
|
|
|
|
search_customers = conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid) |
|
|
|
|
# if conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid): |
|
|
|
|
if search_customers: |
|
|
|
|
conn.unbind() |
|
|
|
|
return '%s,ou=customers,dc=ungleich,dc=ch' % uid |
|
|
|
|
elif conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid): |
|
|
|
|
search_users = conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid) |
|
|
|
|
# elif conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid): |
|
|
|
|
if search_users: |
|
|
|
|
conn.unbind() |
|
|
|
|
return '%s,ou=customers,dc=ungleich,dc=ch' % uid |
|
|
|
|
else: |
|
|
|
|
return False |
|
|
|
|
conn.unbind() |
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# checks if a user already exists in the LDAP |
|
|
|
@ -72,7 +79,7 @@ class UserLookUp(object):
|
|
|
|
|
#if conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % LDAP_UID) or conn.search('ou=users,dc=ungleich,dc=ch', '(%s)' % LPAD_UID): |
|
|
|
|
if x or y: |
|
|
|
|
# return conn.entries[0] for first search result since we can assume uid is unique |
|
|
|
|
self.dispatch('ldap', '%s [Info: UserLookUp] Searched for %s and found it: %s\n' % (datetime.now(), LDAP_UID, str(conn.entries[0])) ) |
|
|
|
|
self.dispatch('ldap', '%s [Info: UserLookUp] Searched for %s and found it\n' % (datetime.now(), LDAP_UID) ) |
|
|
|
|
conn.unbind() |
|
|
|
|
# return True since the user is already in LDAP |
|
|
|
|
return True |
|
|
|
@ -132,7 +139,8 @@ class GetUserData(object):
|
|
|
|
|
LDAP_UID = 'uid=%s' % user |
|
|
|
|
server = ldapservers() |
|
|
|
|
conn = Connection(server) |
|
|
|
|
if not conn.bind(): |
|
|
|
|
conn.bind() |
|
|
|
|
if not conn.bound: |
|
|
|
|
self.dispatch('ldap', '%s [Error GetUserData] Could not connect to LDAP server.\n' % datetime.now() ) |
|
|
|
|
return ("error", "Could not connect to LDAP server.", "", "") |
|
|
|
|
rdn = user_or_customer(LDAP_UID) |
|
|
|
@ -234,7 +242,7 @@ class ChangePassword(object):
|
|
|
|
|
|
|
|
|
|
@rpc |
|
|
|
|
def change_password(self, user, newpassword): |
|
|
|
|
LDAP_UID = 'uid=%s' |
|
|
|
|
LDAP_UID = 'uid=%s' % user |
|
|
|
|
server = ldapservers() |
|
|
|
|
conn = Connection(server, config['LDAP']['LDAPMANAGER'], config['LDAP']['LDAPMANAGERPASSWORD']) |
|
|
|
|
if not conn.bind(): |
|
|
|
@ -277,10 +285,11 @@ class DeleteUser(object):
|
|
|
|
|
|
|
|
|
|
@rpc |
|
|
|
|
def delete_user(self, user): |
|
|
|
|
LDAP_UID = user |
|
|
|
|
LDAP_UID = 'uid=%s' % user |
|
|
|
|
server = ldapservers() |
|
|
|
|
conn = Connection(server, config['LDAP']['LDAPMANAGER'], config['LDAP']['LDAPMANAGERPASSWORD']) |
|
|
|
|
if not conn.bind(): |
|
|
|
|
conn.bind() |
|
|
|
|
if not conn.bound: |
|
|
|
|
self.dispatch('ldap', '%s [Error DeleteUser] Could not connect to LDAP server.\n' % datetime.now() ) |
|
|
|
|
return "Could not connect to LDAP server." |
|
|
|
|
# again, check whether the uid= is in ou=users or ou=customers |
|
|
|
@ -290,7 +299,8 @@ class DeleteUser(object):
|
|
|
|
|
self.dispatch('ldap', '%s [Error DeleteUser] Could not find the user %s\n' % (datetime.now(), LDAP_UID) ) |
|
|
|
|
return "Could not find the user." |
|
|
|
|
# Check if the delete was successfull |
|
|
|
|
if not conn.delete(dn): |
|
|
|
|
deleted = conn.delete(dn) |
|
|
|
|
if not deleted: |
|
|
|
|
conn.unbind() |
|
|
|
|
self.dispatch('ldap', '%s [Error DeleteUser] Could not delete %s\n' % (datetime.now(), dn) ) |
|
|
|
|
return "Could not delete the user." |
|
|
|
|