diff --git a/debian/control b/debian/control index af00ba65972583814bc05cd48e2e4c3cdd088c51..446b49f4339f65c51cde9389dc4702d68cce2be5 100644 --- a/debian/control +++ b/debian/control @@ -12,7 +12,7 @@ Package: uffd-ldap Architecture: all Depends: ${misc:Depends}, - python3-ldapserver, + python3-ldapserver (>= 0.1.0), python3-ldapserver (<< 0.2.0), python3-requests, python3-cachecontrol, python3-click, diff --git a/requirements.txt b/requirements.txt index 9cbab772c4351336c9ffc550c6ed94324600d3d7..052248ecc61be04ff66333036e55bd2f21f6cefd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ --extra-index-url https://git.cccv.de/api/v4/projects/220/packages/pypi/simple -ldapserver==0.0.1.dev6 +ldapserver==0.1.* requests==2.* CacheControl diff --git a/server.py b/server.py index 17d95fba1855191f286b88a9428b3ed199ead6c4..a55095970bebe3f7a423382e33c9a06f3a6f486c 100755 --- a/server.py +++ b/server.py @@ -121,41 +121,41 @@ class UffdLDAPRequestHandler(ldapserver.LDAPRequestHandler): } for rdnassertion in self.dn_base[0]: # pylint: disable=unsubscriptable-object base_attrs[rdnassertion.attribute] = [rdnassertion.value] - yield self.subschema.Object(self.dn_base, **base_attrs) - yield self.subschema.Object(self.subschema.DN('ou=users') + self.dn_base, + yield self.subschema.ObjectEntry(self.dn_base, **base_attrs) + yield self.subschema.ObjectEntry(self.subschema.DN('ou=users') + self.dn_base, ou=['users'], objectClass=['top', 'organizationalUnit'], structuralObjectClass=['organizationalUnit'], ) - yield self.subschema.Object(self.subschema.DN('ou=groups') + self.dn_base, + yield self.subschema.ObjectEntry(self.subschema.DN('ou=groups') + self.dn_base, ou=['groups'], objectClass=['top', 'organizationalUnit'], structuralObjectClass=['organizationalUnit'], ) - yield self.subschema.Object(self.subschema.DN('ou=system') + self.dn_base, + yield self.subschema.ObjectEntry(self.subschema.DN('ou=system') + self.dn_base, ou=['system'], objectClass=['top', 'organizationalUnit'], structuralObjectClass=['organizationalUnit'], ) - yield self.subschema.Object(self.subschema.DN('cn=service,ou=system') + self.dn_base, + yield self.subschema.ObjectEntry(self.subschema.DN('cn=service,ou=system') + self.dn_base, cn=['service'], objectClass=['top', 'organizationalRole', 'simpleSecurityObject'], structuralObjectClass=['organizationalRole'], ) def do_search_users(self, baseobj, scope, filterobj): - template = self.subschema.ObjectTemplate(self.subschema.DN(self.dn_base, ou='users'), 'uid', + template = self.subschema.EntryTemplate(self.subschema.DN(self.dn_base, ou='users'), 'uid', structuralObjectClass=['inetorgperson'], objectClass=['top', 'inetorgperson', 'organizationalperson', 'person', 'posixaccount'], - cn=[ldapserver.WILDCARD_VALUE], - displayname=[ldapserver.WILDCARD_VALUE], - givenname=[ldapserver.WILDCARD_VALUE], - homeDirectory=[ldapserver.WILDCARD_VALUE], - mail=[ldapserver.WILDCARD_VALUE], + cn=ldapserver.WILDCARD, + displayname=ldapserver.WILDCARD, + givenname=ldapserver.WILDCARD, + homeDirectory=ldapserver.WILDCARD, + mail=ldapserver.WILDCARD, sn=[' '], - uid=[ldapserver.WILDCARD_VALUE], - uidNumber=[ldapserver.WILDCARD_VALUE], - memberOf=[ldapserver.WILDCARD_VALUE], + uid=ldapserver.WILDCARD, + uidNumber=ldapserver.WILDCARD, + memberOf=ldapserver.WILDCARD, ) if not template.match_search(baseobj, scope, filterobj): return @@ -171,7 +171,7 @@ class UffdLDAPRequestHandler(ldapserver.LDAPRequestHandler): request_params = {'group': normalize_group_name(value.object_value)} break for user in self.api.get_users(**request_params): - yield template.create_object(user['loginname'], + yield template.create_entry(user['loginname'], cn=[user['displayname']], displayname=[user['displayname']], givenname=[user['displayname']], @@ -183,13 +183,13 @@ class UffdLDAPRequestHandler(ldapserver.LDAPRequestHandler): ) def do_search_groups(self, baseobj, scope, filterobj): - template = self.subschema.ObjectTemplate(self.subschema.DN(self.dn_base, ou='groups'), 'cn', + template = self.subschema.EntryTemplate(self.subschema.DN(self.dn_base, ou='groups'), 'cn', structuralObjectClass=['groupOfUniqueNames'], objectClass=['top', 'groupOfUniqueNames', 'posixGroup'], - cn=[ldapserver.WILDCARD_VALUE], + cn=ldapserver.WILDCARD, description=[' '], - gidNumber=[ldapserver.WILDCARD_VALUE], - uniqueMember=[ldapserver.WILDCARD_VALUE], + gidNumber=ldapserver.WILDCARD, + uniqueMember=ldapserver.WILDCARD, ) if not template.match_search(baseobj, scope, filterobj): return @@ -205,7 +205,7 @@ class UffdLDAPRequestHandler(ldapserver.LDAPRequestHandler): request_params = {'member': normalize_user_loginname(value.object_value)} break for group in self.api.get_groups(**request_params): - yield template.create_object(group['name'], + yield template.create_entry(group['name'], cn=[group['name']], gidNumber=[group['id']], uniqueMember=[self.subschema.DN(self.subschema.DN(self.dn_base, ou='users'), uid=user) for user in group['members']],