* ud-userimport, ud-groupadd, ud-roleadd, ud-useradd, userdir_ldap.py:
[mirror/userdir-ldap.git] / userdir_ldap.py
index f60b715..1b4299c 100644 (file)
@@ -1,6 +1,6 @@
 #   Copyright (c) 1999-2000  Jason Gunthorpe <jgg@debian.org>
 #   Copyright (c) 2001-2003  Ryan Murray <rmurray@debian.org>
-#   Copyright (c) 2004  Joey Schulze <joey@infodrom.org>
+#   Copyright (c) 2004-2005  Joey Schulze <joey@infodrom.org>
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -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:
@@ -48,7 +48,16 @@ userdir_gpg.SetKeyrings(string.split(ConfModule.keyrings,":"));
 LastNamesPre = {"van": None, "von": None, "le": None, "de": None, "di": None};
 
 # This is a list of common groups on Debian hosts
-DebianGroups = {"Debian": 800, "guest": 60000}
+DebianGroups = {
+   "Debian": 800,
+   "guest": 60000,
+   "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)
@@ -407,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