Update of /cvsroot/fink/fink/perlmod/Fink In directory sc8-pr-cvs1:/tmp/cvs-serv30915
Modified Files: Tag: uidgid User.pm Log Message: That should do it, need to test now Index: User.pm =================================================================== RCS file: /cvsroot/fink/fink/perlmod/Fink/Attic/User.pm,v retrieving revision 1.1.2.18 retrieving revision 1.1.2.19 diff -u -d -r1.1.2.18 -r1.1.2.19 --- User.pm 12 Aug 2003 03:42:41 -0000 1.1.2.18 +++ User.pm 12 Aug 2003 22:08:03 -0000 1.1.2.19 @@ -45,10 +45,10 @@ our ($lowUID, $highUID, $lowGID, $highGID); -$lowUID = $config->param("lowUID") || 250; -$highUID = $config->param("highUID") || 299; -$lowGID = $config->param("lowGID") || 250; -$highGID = $config->param("highGID") || 299; +$lowUID = 250; +$highUID = 299; +$lowGID = 250; +$highGID = 299; END { } # module clean-up code here (global destructor) @@ -115,6 +115,7 @@ my $cut = "/usr/bin/cut"; my $chown = "/usr/sbin/chown"; my $mkdir = "/bin/mkdir -p"; + my $expr = "/bin/expr"; my pass = "*"; my $script = ""; @@ -123,49 +124,136 @@ ### ask if the fink.conf specifies this. maybe use a grep on fink.conf if ($type eq "user") { - $script = - "getgid() {\n". - "gid=`$nidump group . | $grep -e \"^$name:\" | $cut -d\":\" -f3`\n". - "if [ ! \$gid ]; then\n". - "\n". - "fi\n". - "}\n". - "getuid() {\n". - "uid=`$nidump passwd . | $grep -e \"^$name:\" | $cut -d\":\" -f3`\n". - "if [ ! \$uid ]; then\n". - "\n". - "fi\n". - "}\n". - "uid=getuid()\n". - "gid=getgid()\n". - "$niutil -create . /users/$name\n". - "$niutil -createprop . /users/$name realname \"$desc\"\n". - "$niutil -createprop . /users/$name gid \$gid\n". - "$niutil -createprop . /users/$name uid \$uid\n". - "$niutil -createprop . /users/$name home \"$home\"\n". - "$niutil -createprop . /users/$name name \"$user\"\n". - "$niutil -createprop . /users/$name passwd \"$pass\"\n". - "$niutil -createprop . /users/$name shell \"$shell\"\n". - "$niutil -createprop . /users/$name change 0\n". - "$niutil -createprop . /users/$name expire 0\n". - "$mkdir \"$home\"\n". - "$chown \"$name.$group\" \"$home\"\n". - "\n"; + $script = <<"EOF"; +getgid() { + gid=`$nidump group . | $grep -e \"^$name:\" | $cut -d\":\" -f3` + if [ ! \$gid ]; then + continue="no" + number_used="dontknow" + fnumber=$lowGID + until [ $continue = "yes" ]; do + if [ `$nidump group . | $cut -d":" -f3 | $grep -c "^$fnumber$"` -gt 0 ]; then + number_used=true + else + if [ $fnumber -gt $highGID ]; then + break + fi + number_used=false + fi + + if [ $number_used = "true" ]; then + fnumber=`$expr $fnumber + 1` + else + gid="$fnumber" + continue="yes" + fi + done; + fi +} + +getuid() { + uid=`$nidump passwd . | $grep -e \"^$name:\" | $cut -d\":\" -f3` + if [ ! \$uid ]; then + continue="no" + number_used="dontknow" + fnumber=$lowUID + until [ $continue = "yes" ]; do + if [ `$nidump passwd . | $cut -d":" -f3 | $grep -c "^$fnumber$"` -gt 0 ]; then + number_used=true + else + if [ $fnumber -gt $highUID ]; then + break + fi + number_used=false + fi + + if [ $number_used = "true" ]; then + fnumber=`$expr $fnumber + 1` + else + uid="$fnumber" + continue="yes" + fi + done; + fi +} + +uid=getuid() +gid=getgid() + +if [ $uid -gt $highUID ]; then + exit 1 +fi + +if [ $gid -gt $highGID ]; then + exit 1 +fi + +if [ $uid -lt $lowUID ]; then + exit 1 +fi + +if [ $gid -lt $lowGID ]; then + exit 1 +fi + +$niutil -create . /users/$name +$niutil -createprop . /users/$name realname "$desc" +$niutil -createprop . /users/$name gid \$gid +$niutil -createprop . /users/$name uid \$uid +$niutil -createprop . /users/$name home "$home" +$niutil -createprop . /users/$name name "$name" +$niutil -createprop . /users/$name passwd "$pass" +$niutil -createprop . /users/$name shell "$shell" +$niutil -createprop . /users/$name change 0 +$niutil -createprop . /users/$name expire 0 +$mkdir "$home" +$chown "$name.$group" "$home" + +EOF } else { - $script = - "getgid() {\n". - "gid=`$nidump group . | $grep -e \"^$name:\" | $cut -d\":\" -f3`\n". - "if [ ! \$gid ]; then\n". - "\n". - "fi\n". - "}\n". - "\n"; - "gid=getgid()\n". - "$niutil -create . /groups/$user\n". - "$niutil -createprop . /groups/$name name \"$name\"\n". - "$niutil -createprop . /groups/$user gid \$gid\n". - "$niutil -createprop . /groups/$user passwd \"$pass\"\n". - "\n"; + $script = <<"EOF"; +getgid() { + gid=`$nidump group . | $grep -e \"^$name:\" | $cut -d\":\" -f3` + if [ ! \$gid ]; then + continue="no" + number_used="dontknow" + fnumber=$lowGID + until [ $continue = "yes" ]; do + if [ `$nidump group . |$cut -d":" -f3 |$grep -c "^$fnumber$"` -gt 0 ]; then + number_used=true + else + if [ $fnumber -gt $highGID ]; then + break + fi + number_used=false + fi + + if [ $number_used = "true" ]; then + fnumber=`$expr $fnumber + 1` + else + gid="$fnumber" + continue="yes" + fi + done; + fi +} + +gid=getgid() + +if [ $gid -gt $highGID ]; then + exit 1 +fi + +if [ $gid -lt $lowGID ]; then + exit 1 +fi + +$niutil -create . /groups/$user +$niutil -createprop . /groups/$name name "$name" +$niutil -createprop . /groups/$user gid \$gid +$niutil -createprop . /groups/$user passwd "$pass" + +EOF } return $script; @@ -185,16 +273,17 @@ my $script = ""; if ($type eq "user") { - $script = - "HomeDir=`$nidump passwd . | $grep '$name:' ". - "| $cut -d\":\" -f9`\n". - "$rm \$HomeDir\n". - "$niutil -destroy . /users/$name\n". - "\n"; + $script = <<"EOF"; +HomeDir=`$nidump passwd . | $grep '$name:' | $cut -d\":\" -f9` +$rm \$HomeDir +$niutil -destroy . /users/$name + +EOF } else { - $script = - "$niutil -destroy . /groups/$name\n". - "\n"; + $script = <<"EOF"; +$niutil -destroy . /groups/$name + +EOF } return $script ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ Fink-commits mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/fink-commits