X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=userdir_ldap.py;h=1b4299c695f17ecdd234aaf27a756b1b808d4e8a;hb=efc48e4f01ce7f402a4c793727bf776bcf083c05;hp=cfd2c457c2969cacc968f65bed30173da5f9ffb2;hpb=2ebda936c01060d2dbd3b87292f19b6eec08e805;p=mirror%2Fuserdir-ldap.git diff --git a/userdir_ldap.py b/userdir_ldap.py index cfd2c45..1b4299c 100644 --- a/userdir_ldap.py +++ b/userdir_ldap.py @@ -54,6 +54,11 @@ DebianGroups = { "nogroup": 65534 } +# ObjectClasses for different object types +UserObjectClasses = ("top", "inetOrgPerson", "debianAccount", "shadowAccount", "debianDeveloper") +RoleObjectClasses = ("top", "debianAccount", "shadowAccount", "debianRoleAccount") +GroupObjectClasses = ("top", "debianGroup") + # SSH Key splitting. The result is: # (options,size,modulous,exponent,comment) SSHAuthSplit = re.compile('^(.* )?(\d+) (\d+) (\d+) ?(.+)$'); @@ -411,9 +416,18 @@ def GetUID(l,Name,UnknownMap = {}): return (None,None); -def Group2GID(name): - """Returns the numerical id of a common group""" +def Group2GID(l, name): + """ + Returns the numerical id of a common group + on error returns -1 + """ for g in DebianGroups.keys(): if name == g: return DebianGroups[g] - return name + + filter = "(gid=%s)" % name + res = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,filter,["gidNumber"]); + if res: + return int(GetAttr(res[0], "gidNumber")) + + return -1