* ud-userimport, ud-groupadd, ud-roleadd, ud-useradd, userdir_ldap.py:
[mirror/userdir-ldap.git] / userdir_ldap.py
index 634c514..1b4299c 100644 (file)
@@ -17,7 +17,7 @@
 #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 # Some routines and configuration that are used by the ldap progams
-import termios, re, string, imp, ldap, sys, whrandom, crypt, rfc822;
+import termios, re, string, imp, ldap, sys, crypt, rfc822;
 import userdir_gpg
 
 try:
@@ -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