#!/usr/bin/env python
# -*- mode: python -*-
-import string, re, time, ldap, getopt, sys, os, pwd;
+# Copyright (c) 2000 Jason Gunthorpe <jgg@debian.org>
+# Copyright (c) 2001-2003 James Troup <troup@debian.org>
+# Copyright (c) 2004 Joey Schulze <joey@debian.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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import re, time, ldap, getopt, sys, os, pwd;
from userdir_ldap import *;
from userdir_gpg import *;
# is to randomly guess uids until one is free. This uses the former.
# Regrettably ldap doesn't have an integer attribute comparision function
# so we can only cut the search down slightly
+
+# [JT] This is broken with Woody LDAP and the Schema; for now just
+# search through all GIDs.
def GetFreeID(l):
- HighestUID = 1000;
Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,
- "gidNumber>="+str(HighestUID),["gidNumber"]);
+ "gidNumber=*",["gidNumber"]);
HighestUID = 0;
for I in Attrs:
ID = int(GetAttr(I,"gidNumber","0"));
if (switch == '-u'):
AdminUser = val;
-print "Accessing LDAP directory as '" + AdminUser + "'";
-Password = getpass(AdminUser + "'s password: ");
-
-# Connect to the ldap server
-l = ldap.open(LDAPServer);
-UserDn = "uid=" + AdminUser + "," + BaseDn;
-l.simple_bind_s(UserDn,Password);
+l = passwdAccessLDAP(LDAPServer, BaseDn, AdminUser)
while 1:
- Group = raw_input("Group name?");
+ Group = raw_input("Group name? ");
if Group == "":
sys.exit(1);
sys.stdout.flush();
l.add_s(Dn,[("gid",Group),
("gidNumber",str(Id)),
- ("objectclass","top"),
- ("objectclass","posixGroup")]);
+ ("objectClass", GroupObjectClasses)])