X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-groupadd;h=4cb10eec7b1ea040ac0478f5768101c73506c25f;hb=19664646ceb4434b7f483c81c864e6d44f654038;hp=e2425670688b6fbbeba4db55996429828abc424b;hpb=ec1593c484fbadd6cff934c68ebf69e4916c59a4;p=mirror%2Fuserdir-ldap.git diff --git a/ud-groupadd b/ud-groupadd index e242567..4cb10ee 100755 --- a/ud-groupadd +++ b/ud-groupadd @@ -9,15 +9,17 @@ from userdir_gpg import *; # this, one is to fetch all the entires and pick the highest, the other # 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 +# 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"]); + Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL, + "gidNumber=*",["gidNumber"]); HighestUID = 0; for I in Attrs: - ID = int(GetAttr(I,"gidnumber","0")); - if ID > HighestUID and ID < 60000: + ID = int(GetAttr(I,"gidNumber","0")); + if ID > HighestUID and ID < 60000: HighestUID = ID; return HighestUID + 1; @@ -41,8 +43,8 @@ l = ldap.open(LDAPServer); UserDn = "uid=" + AdminUser + "," + BaseDn; l.simple_bind_s(UserDn,Password); -while 1: - Group = raw_input("Group name?"); +while 1: + Group = raw_input("Group name? "); if Group == "": sys.exit(1); @@ -50,17 +52,14 @@ while 1: if len(Attrs) == 0: break; print "Group already exists"; - -Id = GetFreeID(l); + +Id = GetFreeID(l); print "Create group %s ID = %d"%(Group,Id); - -# Submit the add request + +# Submit the add request Dn = "gid=" + Group + "," + BaseDn; print "Updating LDAP directory..", sys.stdout.flush(); l.add_s(Dn,[("gid",Group), - ("gidnumber",str(Id)), - ("objectclass","top"), - ("objectclass","posixGroup")]); - - + ("gidNumber",str(Id)), + ("objectClass",("top", "debianGroup"))]);