
#
# **  **                    ****                    ***     **            
# **  **                   **  **                  ** **                  
# **  **   *****  ** ***  **       ****   *****    **      ***     *** ** 
# **  **  **       *** ** **      **  **  **  **  ****      **    **  **  
# **  **   ****    **  ** **      **  **  **  **   **       **    **  **  
# **  **      **   **      **  ** **  **  **  **   **       **     *****  
# ******  *****   ****      ****   ****   **  **  ****     ****       **  
#                                                                 *****   
#-------------------*---------------------------------*------------------
#                   * User Configuration Version .01  *
#                   *---------------------------------*
#                     Started writing June 21st, 1997
#                       (C) Sean Clarke, 1997
#		    -----------------------------------
#		   | If you would like to report a bug |
#		   | or would like the latest version, |
#		   | Please send email to              |
#		   | root@smoke.minot.com              |
#		   | Thank you for using usrconfig.    |
#		    -----------------------------------
#
# Get Proporties
STARTMAIN:
if (-C "/tmp/.uc/config")  {
chop ( $locpasswd = `cat /tmp/.uc/config|awk -F \: \'\{print \$1\}\'` );
chop ( $locshadow = `cat /tmp/.uc/config|awk -F \: \'\{print \$2\}\'` );
chop ( $locgroup = `cat /tmp/.uc/config|awk -F \: \'\{print \$3\}\'` );
chop ( $lochome = `cat /tmp/.uc/config|awk -F \: \'\{print \$4\}\'` );
chop ( $version = `cat /tmp/.uc/config|awk -F \: \'\{print \$5\}\'` );
}
else
{
system "/tmp/.uc/setup";
goto STARTMAIN;
}
if (($locpasswd eq '')||($locgroup eq '')||($version eq ''))  {
system "perl /tmp/.uc/setup";
}
# Start The Program!
if ($> ne "0")  {
print "\nMust be SuperUser to execute User Configuration!\n";
exit 0;
}
else 
{
if (-C "/etc/redhat-release")  {
$check = `cat /etc/redhat-release`;  
chop $check;
if ($check =~ "4.")  {
$redhat = "yes";
}
else
{
$redhat = "no";
}
}
else
{
$redhat = "no";
}
if (-C "/tmp/.uc/logfile")  {
}
else
{
system "touch /tmp/.uc/logfile";
}
open (FILE, ">>/tmp/.uc/logfile");
$starttime = `date \+\"\%T\"`;
chop $starttime;
$startdate = `date \+\"\%D\"`;
chop $startdate;
print FILE "\n\%\* Started at $starttime, on $startdate\n";
close (FILE);
sub log {
local ( $logmsg ) = @_;
if ($timemsg eq '')  {
$timemsg = "$logmsg\n";
}
else
{
$timemsg = "$timemsg$logmsg\n";
}
chop ( $logdate = `date \+\"\%D \%T\"` );
open (FILE, ">>/tmp/.uc/logfile") || die "Can't open log file!";
print FILE "$logdate : $logmsg\n";
close (FILE);
}
sub menu  {
local ($varname) = @_;		
$Bsd = -f "/vmunix";
if($Bsd) # For BSD based machines
{
system "stty cbreak < /dev/tty >/dev/tty 2>&1";
}
else
{
system "stty -icanon eof ^a";
}
$menuc1 = getc(STDIN);
if ($menuc1 =~ "\n")  {
$$varname = $menuc;
goto CONMENU;
}
$menuc2 = getc(STDIN);
$$varname = getc(STDIN);
CONMENU:
if($Bsd) # For BSD based machines
{
system "stty -cbreak < /dev/tty >/dev/tty 2>&1";
}
else
{
system "stty icanon eof ^d";
}
} #end of menu input
sub input {
local ($varname) = @_;		
		$Bsd = -f "/vmunix";
		if($Bsd) # For BSD based machines
		{
			system "stty cbreak < /dev/tty >/dev/tty 2>&1";
		}
		else
		{
			system "stty -icanon eof ^a";
		}
		$$varname = getc(STDIN);

		
			if($Bsd) # For BSD based machines
			{
			  system "stty -cbreak < /dev/tty >/dev/tty 2>&1";
			}
			else
			{
			   system "stty icanon eof ^d";
			}
		}


sub about { ABOUTT:
system "clear";
print "[31;42m------[User Configuration $version]---------[32;44m[By Sean Clarke][31;42m-----[Exit][0m\n";
print "                                       [32;44m| About User   |[47m [0m\n";
print "                                       [32;44m| Configuration|[47m [0m\n";
print "                                       [32;44m|--------------|[47m [0m\n";
print "                                        [47m                [0m\n";      
print "\n";
print "
[34;42m|-------------------------------------|[47m [0m
[34;42m|User Configuration is a perl program |[47m [0m
[34;42m|That helps admins manage there users.|[47m [0m
[34;42m|It was created by Sean Clarke, in his|[47m [0m
[34;42m|room (like you care were it was made)|[47m [0m
[34;42m|on a p100 micron.  I hope you enjoy  |[47m [0m
[34;42m|this program and stuff, now just hit |[47m [0m
[34;42m|the right arrow key then enter to go |[47m [0m
[34;42m|to exit, or just press enter to goto |[47m [0m
[34;42m|the main menu.                       |[47m [0m
[34;42m|-------------------------------------|[47m [0m
[34;42m|      [32;44m<  MENU  >[34;42m    [32;47m<  EXIT  >[34;42m       |[47m [0m
[34;42m|-------------------------------------|[47m [0m
 [47m                                       [0m[30m\n";    
&menu("aboutw");
if ($aboutw !~ "C")  {
goto MAIN;
}
if ($aboutw =~ "C")  {
system "clear";
print "[31;42m------[User Configuration $version]---------[32;44m[By Sean Clarke][31;42m-----[Exit][0m\n";
print "                                       [32;44m| About User   |[47m [0m\n";
print "                                       [32;44m| Configuration|[47m [0m\n";
print "                                       [32;44m|--------------|[47m [0m\n";
print "                                        [47m                [0m\n";      
print "\n";
print "
[34;42m|-------------------------------------|[47m [0m
[34;42m|User Configuration is a perl program |[47m [0m
[34;42m|That helps admins manage there users.|[47m [0m
[34;42m|It was created by Sean Clarke, in his|[47m [0m
[34;42m|room (like you care were it was made)|[47m [0m
[34;42m|on a p100 micron.  I hope you enjoy  |[47m [0m
[34;42m|this program and stuff, now just     |[47m [0m
[34;42m|the right arrow key then enter to go |[47m [0m
[34;42m|to exit, or just press enter to goto |[47m [0m
[34;42m|the main menu.                       |[47m [0m
[34;42m|-------------------------------------|[47m [0m
[34;42m|      [32;47m<  MENU  >[34;42m    [32;44m<  EXIT  >[34;42m       |[47m [0m
[34;42m|-------------------------------------|[47m [0m
 [47m                                       [0m[30m\n";    
&menu("aboutb");
if ($aboutb !~ "D")  {
&quit;
}
if ($aboutb =~ "D")  {
goto ABOUTT;
}
}
}
sub quit {
EXITOP:
system "clear";
print "[31;42m------[User Configuration $version]---------[By Sean Clarke]-----[32;44m[Exit][0m\n";
print "                                                            [32;44m| [32;41mYes[32;44m|[47m [0m\n";
print "                                                            [32;44m| [31mNo[32;44m |[47m [0m\n";  
print "                                                            [32;44m|----|[47m [0m\n";
print "                                                             [47m      [0m[30m\n";
&menu("exit");
if ($exit eq '')  {
system "clear";
print "[0m[2J[0m";
print "[30;47m----------------------[User Configuration $version Session Stats]-------------------[0m";
print "\n\n[30;47mSession Activites :[0m ";
if ($timemsg eq '')  {
print "\nNo activites were done.\n\n";
}
else
{
print "\n$timemsg\n";
}
chop ( $closetime = `date \+\"\%T\"` );
chop ( $closedate = `date \+\"\%D\"` );
chop ( $closesec = `echo $closetime|awk -F \: \'\{print \$3\}\'` );
chop ( $closemin = `echo $closetime|awk -F \: \'\{print \$2\}\'` );
chop ( $closehour = `echo $closetime|awk -F \: \'\{print \$1\}\'` );
chop ( $startsec = `echo $starttime|awk -F \: \'\{print \$3\}\'` );
chop ( $startmin = `echo $starttime|awk -F \: \'\{print \$2\}\'` );
chop ( $starthour = `echo $starttime|awk -F \: \'\{print \$1\}\'` );
if ($closesec > $startsec)  {  
$upsec = $closesec - $startsec;
}
else
{
$upsec = $startsec - $closesec;
}
if ($closemin > $startmin)  {
$upmin = $closemin - $startmin;
}
else
{
$upmin = $startmin - $closemin;
}
if ($closehour > $starthour)  {
$uphour = $closehour - $starthour;
}
else
{
$uphour = $starthour - $closehour;
}
if (length($upsec) eq '1')  {
$upsec = "0$upsec";
}
if (length($upsec) eq '0')  {
$upsec = "00";
}
if (length($upmin) eq '1')  {
$upmin = "0$upmin";
}
if (length($upmin) eq '0')  {
$upmin = "00";
}
if (length($uphour) eq '1')  {
$uphour = "0$uphour";
}
if (length($uphour) eq '0')  {
$uphour = "00";
}
$uptime = "$uphour\:$upmin\:$upsec";
print "[30;47mSession time :[0m $uptime\n";
open (FILE, ">>/tmp/.uc/logfile") || die "Can't open log file!";
print FILE "\%\* Exited at $closetime, on $closedate\n";
close (FILE);
print "\nTo look at all activites done on User Configuration, look at /tmp/.uc/logfile.\n\n";
print "Thank you for using User Configuration $version, come back [31m[5magain![0m\n\n";
exit 0;
}
if ($exit =~ "D")  {
&about;
}
if ($exit =~ "B")  {
system "clear";
print "[31;42m------[User Configuration $version]---------[By Sean Clarke]-----[32;44m[Exit][0m\n";
print "                                                            [32;44m| [31mYes[32;44m|[47m [0m\n";  
print "                                                            [32;44m| [32;41mNo [32;44m|[47m [0m\n";
print "                                                            [32;44m|----|[47m [0m\n";
print "                                                             [47m      [0m[30m\n";
&menu("exit1");
if ($exit1 =~ "D")  {
&about;
}
if ($exit1 =~ "A")  {
goto EXITOP;
}
else
{
&about;
}
}
}
MAIN:
system "clear";
print "[31;42m------[32;44m[User Configuration $version][31;42m---------[By Sean Clarke]-----[Exit][0m\n";
print "      [32;44m|                      |[0m[47m [0m\n"; 
print "      [32;44m| [32;41mAdd a User[44m           [32m|[47m [0m\n";
print "      [32;44m| [31mDelete a User[44m        [32m|[47m [0m\n";
print "      [32;44m| [31mEdit A User[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mTurn on/off nologin[44m  [32m|[47m [0m\n"; 
print "      [32;44m| [31mEdit Groups[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mView groups and users[44m[32m|[47m [0m\n";
print "      [32;44m|----------------------|[47m [0m\n";
print "       [47m                        [0m[30m\n\n\n\n";
&menu("blah");
if ($blah =~ "A")  {
goto CHECK;
}
if ($blah =~ "C")  {
&about;
}
if ($blah eq '')  {
ADD:
system "clear";
$idt = `tail -n 1 $locpasswd |awk -F : \'\{print \$3\}\'`;
chop $idt;
$id = $idt + 1;
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              ********** Add User **********\n";
print "              [32;41m* Username [ ] :              [0m\n";
print "              * User ID [ $id ] :          \n";
print "              * Home dir [ ] :             \n";
print "              * User's Name [ ] :          \n";
if ($redhat =~ "no")  {
print "              * Group [ users ] :          \n";
}
elsif ($redhat =~ "yes")  {
print "              * Group [ ] :                \n";
}
print "              * Shell [ /bin/bash ] :       \n";  
print "              ******************************\n\n";
print "DIRECTIONS: Enter The Username of the user you are going to add,
followed by hiting the <return/enter> key.\n";
print "----------------------------------------------------------------\n";
USERNAME:
print "Username [ ] : ";
$user = <STDIN>;
chop $user;
if ($user eq '')  {
goto ADD;
}
$validuser = `cat $locpasswd|grep \"^$user:\"`;
if ($validuser ne '')  {
print "That username is already used!\n";
goto USERNAME;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              ********** Add User **********\n";
print "              * Username : $user\n";
print "              [32;41m* User ID [ $id ] :          [0m\n";
print "              * Home dir [ $lochome$user ] :\n";
print "              * User's Name [ ] :          \n";
if ($redhat =~ "no")  {
print "              * Group [ users ] :          \n";
}
elsif ($redhat =~ "yes")  {
print "              * Group [ $user ] :                \n";
}
print "              * Shell [ /bin/bash ] :       \n";  
print "              ******************************\n\n";
print "DIRECTIONS: Enter The User ID of the user you are adding
followed by <return/enter> key, I recommend in leaving it by just
pressing return.\n";
print "----------------------------------------------------------------\n";
NEWID:
print "User ID [ $id ] : ";
$idtt = <STDIN>;
chop $idtt;
if ($idtt ne '')  {
$validid = `cat $locpasswd|grep \":$idtt:\"`;
if ($validid ne '')  {
print "That user id is already used!\n";
goto NEWID;
}
else
{
$id = $idtt;
}
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              ********** Add User **********\n";
print "              * Username : $user\n";
print "              * User ID  : $id\n";
print "              [32;41m* Home dir [ $lochome$user ] :[0m\n";
print "              * User's Name [ ] :          \n";
if ($redhat =~ "no")  {
print "              * Group [ users ] :          \n";
}
elsif ($redhat =~ "yes")  {
print "              * Group [ $user ] :                \n";
}
print "              * Shell [ /bin/bash ] :       \n";  
print "              ******************************\n\n";
print "DIRECTIONS: Enter The Home directory of the user you are adding
followed by <return/enter> key.\n";
print "----------------------------------------------------------------\n";
HOMEDIR:
print "Home Directory [ $lochome$user ] : ";
$dir = <STDIN>;
chop $dir;
if ($dir eq '')  {
$dir = "$lochome$user";
}
NAME:
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              ********** Add User **********\n";
print "              * Username : $user\n";
print "              * User ID  : $id\n";
print "              * Home dir : $dir\n";
print "              [32;41m* User's Name [ ] :          [0m\n";
if ($redhat =~ "no")  {
print "              * Group [ users ] :          \n";
}
elsif ($redhat =~ "yes")  {
print "              * Group [ $user ] :                \n";
}
print "              * Shell [ /bin/bash ] :       \n";  
print "              ******************************\n\n";
print "DIRECTIONS: Enter The Full Name of the user you are adding
followed by <return/enter> key.\n";
print "----------------------------------------------------------------\n";
print "Full Name : ";
$name = <STDIN>;
chop $name;
if ($name eq '')  {
goto NAME;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              ********** Add User **********\n";
print "              * Username : $user\n";
print "              * User ID  : $id\n";
print "              * Home dir : $dir\n";
print "              * User's Name : $name         \n";
if ($redhat =~ "no")  {
print "              * [32;41mGroup [ users ] :          [0m\n";
}
elsif ($redhat =~ "yes")  {
print "              * [32;41mGroup [ $user ] :            [0m\n";
}
print "              * Shell [ /bin/bash ] :       \n";  
print "              ******************************\n\n";
if ($redhat =~ "no")  {
print "DIRECTIONS: Enter The Group of the user you are adding
followed by <return/enter> key. I recommend you leave it at users.\n";
print "----------------------------------------------------------------\n";
print "Group [ users ] : ";
$group = <STDIN>;
chop $group;
if ($group eq '')  {
$group = "users";
}
if ($group ne 'users')  {
GID:
$checkgid = `cat $locgroup|grep $group`;
chop $checkgid;
if ($checkgid eq '')
{
$newgroup = "yes";
print "\nEnter the group ID of $group : ";
$gid = <STDIN>;
chop $gid;
if ($gid eq '')  {
goto GID;
}
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'$gid\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'$gid\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat /tmp/.uc/.ggu1 > $locgroup";
$jomamafoo = "$locgroup";
open (FILE, ">>" . $jomamafoo);
print FILE "$group\:\:$gid:$user\n";
close (FILE);
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
system "rm -f /tmp/.uc/.ggu1 /tmp/.uc/.ggu2";
}
}
}
elsif ($redhat =~ "yes")  {
print "DIRECTIONS: The system has detected that you have Redhat 4.x.  In
that version you are suppose to use the same group as username, so I
recommend you just press enter.\n";
print "----------------------------------------------------------------\n";
print "Group [ $user ] : ";
$group = <STDIN>;
chop $group;
if  ($group eq '')  {
$group = "$user";
}
elsif ($group ne '')  {
GIDD:
$checkgid = `cat $locgroup|grep \"\^$group\:\"`;
chop $checkgid;
if ($checkgid eq '')  {
$newgroup = "yes";
print "\nEnter The $group GID : ";
$gid = <STDIN>;
chop $gid;
if ($gid eq '')  {
goto GIDD;
}
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'$gid\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'$gid\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat /tmp/.uc/.ggu1 > $locgroup";
$jomamafoo = "$locgroup";
open (FILE, ">>" . $jomamafoo);  
print FILE "$group\:\:$gid:$user\n";
close (FILE);
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
system "rm -f /tmp/.uc/.ggu1 /tmp/.uc/.ggu2";
}
if ($group eq '')  {
$group = "$user";
}
}
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              ********** Add User **********\n";
print "              * Username : $user\n";
print "              * User ID  : $id\n";
print "              * Home dir : $dir\n";
print "              * User's Name : $name          \n";
print "              * Group : $group          \n";
print "              [32;41m* Shell [ /bin/bash ] :       [0m\n";  
print "              ******************************\n\n";
print "DIRECTIONS: Enter The shell location of the user you are adding
followed by <return/enter> key.\n";
print "----------------------------------------------------------------\n";
print "Shell Location [ /bin/bash ] : ";
$shell = <STDIN>;
chop $shell;
if ($shell eq '')  {
$shell = "/bin/bash";
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User]-----[0m\n";
print "\n";
print "              [5;31m********** Add User **********[0m\n";
print "              * Username : $user\n";
print "              * User ID  : $id\n";
print "              * Home dir : $dir\n";
print "              * User's Name : $name          \n";
print "              * Group : $group          \n";
print "              * Shell : $shell       \n";  
print "              [5;31m******************************[0m\n\n";
print "[5;31mCONTINUE ? (y/N)[0m ";
&input("con");
if ($con !~ "y")  {
goto MAIN;
}
else
{
print "es\n*************** Statis ***************\n";
if ($user eq "$group")  {
print "Adding group $group and adding $user...";
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'$id\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'$id\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat /tmp/.uc/.ggu1 > $locgroup";
$groupfile = "$locgroup";
open (FILE, ">>" . $groupfile);
print FILE "$group\:\:$id:$user\n";
close (FILE);
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
print "Done.\n";
system "rm /tmp/.uc/.ggu1 /tmp/.uc/.ggu2";
system "cat $locgroup|grep \"\^users:\" > /tmp/.uc/.ggu3";
$do12345 = `cat /tmp/.uc/.ggu3`;
chop $do12345;
open (FILE, ">/tmp/.uc/.ggu3");
print FILE "$do12345";
close (FILE);
$checkifonip1 = `cat $locgroup|grep \"\^users\:\"|awk -F \: \'\{print \$4\}\'|awk -F \, \'\{print \$2\}\'`;
chop $checkifonip1;
if ($checkifonip1 eq '')  {
system "echo \"$user\" \>\> /tmp/.uc/.ggu3";
}
else
{
system "echo \",$user\" \>\> /tmp/.uc/.ggu3";
}
$makesplitgroup = `cat /tmp/.uc/.ggu3`;
open (FILE, ">/tmp/.uc/.ggu4");
print FILE (split(/ /,"$makesplitgroup"), "");
close (FILE);
system "rm -f /tmp/.uc/.ggu3";
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'100\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'100\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat /tmp/.uc/.ggu1 > $locgroup";
system "cat /tmp/.uc/.ggu4 \>\> $locgroup";
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
system "rm -f /tmp/.uc/.ggu1 /tmp/.uc/.ggu2 /tmp/.uc/.ggu4";
}
elsif ($newgroup ne 'yes')  {
print "Adding $user to group $group...";
system "cp -f $locgroup $locgroup.backup";
system "cat $locgroup|grep -v \"^$group\:\" > /tmp/.uc/.add";
system "cat $locgroup|grep \"^$group\:\" > /tmp/.uc/.plus";
$checkifonip = `cat $locgroup|grep \"\^$group\:\"|awk -F \: \'\{print \$4\}\'|awk -F \, \'\{print \$2\}\'`;
chop $checkifonip;
if ($checkifonip eq '')  {
system "echo -ne \"$user\" \>\> /tmp/.uc/.plus";
}
else
{
system "echo -ne \",$user\" \>\> /tmp/.uc/.plus";
}
system "echo \`cat /tmp/.uc/.plus\` \>\> /tmp/.uc/.add";
system "rm /tmp/.uc/.plus";
$grouptfile = "/tmp/.uc/.group";
$groupmcom = `cat /tmp/.uc/.add`;
open (FILE, ">>" . $grouptfile);
print FILE (split(/ /,"$groupmcom"), "");
close (FILE);
system "rm /tmp/.uc/.add";
system "mv -f /tmp/.uc/.group $locgroup";
$ggidd = `cat $locgroup|grep \"\^$group\:\"|awk -F \: \'\{print \$3\}\'`;
chop $ggidd;
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'$ggidd\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'$ggidd\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat $locgroup|grep \"\^$group\:\" > /tmp/.uc/.ggu3";
system "cat /tmp/.uc/.ggu1 > $locgroup";
system "cat /tmp/.uc/.ggu3 \>\> $locgroup";
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
system "rm -f /tmp/.uc/.ggu1 /tmp/.uc/.ggu2 /tmp/.uc/.ggu3";
print "Done.\n";
}
#$checkifshoadd = `cat $locgroup|grep \"\^users\:\"|grep $user`;
#chop $checkifshoadd;
#if ($checkifshoadd eq '')  {
#if ($ggidd > "99")  {
#print "Adding $user to group users...";
#system "cat $locgroup|awk -F \: \'\{if \(\$3 \< \'100\'\) print\}\' > /tmp/.uc/.gu1";
#system "cat $locgroup|awk -F \: \'\{if \(\$3 \> \'100\'\) print\}\' > /tmp/.uc/.gu2";
#system "cat $locgroup|grep \"\^users\:\" > /tmp/.uc/gu3";
#$do123456 = `cat /tmp/.uc/.gu3`;
#chop $do123456;
#open (FILE, ">/tmp/.uc/.gu3");
#print FILE "$do123456";
#close (FILE);
#$checkifonip12 = `cat $locgroup|grep \"\^users\:\"|awk -F \: \'\{print \$4\}\'|awk -F \, \'\{print \$2\}\'`;
#chop $checkifonip12;
#if ($checkifonip12 eq '')  {
#system "echo \"$user\" \>\> /tmp/.uc/.gu3";
#}
#else
#{
#system "echo \",$user\" \>\> /tmp/.uc/.gu3";
#}
#$getspitup1 = `cat /tmp/.uc/.gu3`;
#open (FILE, ">/tmp/.uc/.gu3");
#print FILE (split(/ /,"$getsplitup1"), "");
#close (FILE);
#system "mv -f /tmp/.uc/.gu1 $locgroup";
#system "cat /tmp/.uc/.gu3 \>\> $locgroup";
#system "cat /tmp/.uc/.gu2 \>\> $locgroup";
#system "rm -f /tmp/.uc/.gu\*";
#print "Done.\n";
#} #End of adding user to group users
#}
print "Adding $user to passwd file...";
system "cat $locpasswd|awk -F \: \'{if \(\$3 \< \'$id\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locpasswd|awk -F \: \'{if \(\$3 \> \'$id\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat /tmp/.uc/.ggu1 > $locpasswd";
$passwd = "$locpasswd";
open (FILE, ">>" . $passwd);
print FILE "$user:";
if (-C "$locshadow")  {
print FILE "x:$id:";
}
else
{
print FILE "\*:$id:";
}
if ($gid ne '')  {
print FILE "$gid:$name,,,,:$dir:$shell\n";
}
elsif ($gid eq '')  {
$gid = `cat $locgroup|grep \"\^$group\:\"|awk -F \: \'\{print \$3\}\'`;
chop $gid;
print FILE "$gid:$name,,,,:$dir:$shell\n";
}
close (FILE);
system "cat /tmp/.uc/.ggu2 \>\> $locpasswd";
system "rm -f /tmp/.uc/.ggu1 /tmp/.uc/.ggu2";
print "Done.\n";
if (-C "$locshadow")  {
print "Adding user to shadow file...";
open (FILE, ">>$locshadow");
print FILE "$user\:\*\:10039\:\:\:\:\:\:\n";
close (FILE);
print "Done.\n";
}
print "Making home directory...";
system "cp -a /etc/skel $dir";
system "chown -R $user.$group $dir";
system "chmod 711 $dir";
print "Done.\n";
print "Making mail file...";
if (-C "/var/spool/mail")  {
system "touch /var/spool/mail/$user";
print "Done.\n";
}
elsif (-C "/var/mail")  {
system "touch /var/mail/$user";
print "Done.\n";
}
else
{
print "\nNo mail directory found!\n";
}
print "Setting Password For User $user.\n";
system "passwd $user";
&log("Added user $user, with the UID of $id.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
goto MAIN;
}
}
if ($blah =~ "B")  {
DEL:
system "clear";
print "[31;42m------[32;44m[User Configuration $version][31;42m---------[By Sean Clarke]-----[Exit][0m\n";
print "      [32;44m|                      |[0m[47m [0m\n"; 
print "      [32;44m| [31mAdd a User[44m           [32m|[47m [0m\n";
print "      [32;44m| [32;41mDelete a User[44m        [32m|[47m [0m\n";
print "      [32;44m| [31mEdit A User[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mTurn on/off nologin[44m  [32m|[47m [0m\n"; 
print "      [32;44m| [31mEdit Groups[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mView groups and users[44m[32m|[47m [0m\n";
print "      [32;44m|----------------------|[47m [0m\n";
print "       [47m                        [0m[30m\n\n\n\n";
&menu("blah1");
if ($blah1 =~ "C")  {
&about;
}
if ($blah1 =~ "A")  {
goto MAIN;
}
if ($blah1 eq '')  {
DELETE:
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User]-----[0m

          ********** Delete User **********
          [32;41m* Username [ ] :                *[0m
          * Delete Dir [ y ] :            *
          * Search for files [ n ] :      *
          *********************************

DIRECTIONS: ENTER IN THE USERNAME YOU WISH TO DELETE 
FOLLOWED BY THE <RETURN/ENTER> KEY.
--------------------------------------------------------\n";
DELUSERENTRY:
print "Username [ ] : ";
$deluser = <STDIN>;
chop $deluser;
if ($deluser eq '')  {
if ($delusergotil eq '')  {
$delusergotil = "0";
}
$delusergotil = $delusergotil + 1;
until ($delusergotil eq '2')  {
goto DELUSERENTRY;
}
$delusergotil = "0";
goto DEL;
}
$checkvaliduser = `cat $locpasswd|grep \"$deluser\:\"`;
if ($checkvaliduser eq '')  {
print "\nThat is not a valid user!\n";
goto DELUSERENTRY;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User]-----[0m

          ********** Delete User **********
          * Username : $deluser              *
          [32;41m* Delete Dir [ y ] :            *[0m
          * Search for files [ n ] :      *
          *********************************

DIRECTIONS: HIT y, OR JUST ENTER, IF YOU WISH TO HAVE THE 
SYSTEM DELETE THE USERS HOME DIR AND MAIL, AND n IF NOT.
--------------------------------------------------------\n";
print "Delete Dir [ y ] : ";
$deldir = <STDIN>;
chop $deldir;
if ($deldir eq '')  {
$deldir = "y";
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User]-----[0m

          ********** Delete User **********
          * Username : $deluser              *
          * Delete Dir : $deldir                *
          [32;41m* Search for files [ n ] :      *[0m
          *********************************

DIRECTIONS: HIT y FOLLED BY ENTER IF YOU WISH TO HAVE 
THE SYSTEM SEARCH AND DELETE $deluser FILES. HIT n IF NOT. 
--------------------------------------------------------\n";
print "Search for files [ n ] : ";
$searchf = <STDIN>;
chop $searchf;
if ($searchf eq '')  {
$searchf = "n";
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User]-----[0m

          [5;31m********** Delete User **********
          *[0m Username : $deluser              [5;31m*
          * [0mDelete Dir : $deldir               [5;31m *
          * [0mSearch for files : $searchf         [5;31m *
          *********************************[0m\n";
print "[5;31mContinue (y/N) ?[0m ";
&input("continue");
if (($continue =~ "y")||($continue =~ "Y"))  {
print "es\n*************** Statis ***************\n";
#Delete directories and files
if ($deldir =~ "n")  {
}
else
{
$dirtodel = `cat $locpasswd|grep \"\^$deluser\"|awk -F \: \'\{print \$6\}\'`;
chop $dirtodel;
print "Deleting $dirtodel and mail dir...";
system "rm -rf $dirtodel";
if (-C "/var/spool/mail/$deluser")  {
system "rm -rf /var/spool/mail/$deluser";
}
elsif (-C "/var/mail/$deluser")  {
system "rm -rf /var/mail/$deluser";
}
print "Done.\n";
}
# Done deleting the dir and files
# Doing the search thing
if ($searchf =~ "y")  {
print "Searching for $deluser files...";
system "find / -name \"*\" -user $deluser -print > /tmp/.uc/.find.$deluser";
print "Done.\n";
chop ( $checkifsearchf = `cat /tmp/.uc/.find.$deluser` );
if ($checkifsearchf eq '')  {
print "No files found.\n";
}
else
{
print "Deleting $deluser found files...";
system "rm -f \`cat /tmp/.uc/.find.$deluser\`";
system "rm -f /tmp/.uc/.find.$deluser";
print "Done.\n";
}
}
# Done doing the search thing
# Getting rid of user is passwd
print "Removing $deluser from passwd file...";
system "cp $locpasswd $locpasswd.backup";
system "cat $locpasswd|grep -v \"\^$deluser\:\" > /tmp/.uc/new.passwd";
system "mv -f /tmp/.uc/new.passwd $locpasswd";
print "Done.\n";
# Removing from shadow file.
if (-C "$locshadow")  {
print "Removing user from shadow file...";
system "mkdir /tmp/.uc/.lockdir";
system "chmod 700 /tmp/.uc/.lockdir";
system "cat $locshadow|grep -v \"\^$deluser\:\" >/tmp/.uc/.lockdir/shadow";
system "chmod 600 /tmp/.uc/.lockdir/shadow";
system "mv -f /tmp/.uc/.lockdir/shadow $locshadow";
system "rm -rf /tmp/.uc/.lockdir";
print "Done.\n";
}
# Getting rid of user in group file
print "Removing $deluser from group file...";
$testowngroup = `cat $locgroup|grep \"\^$deluser\"`;
if ($testowngroup ne '')  {
system "cp -f $locgroup $locgroup.backup";
system "cat $locgroup|grep -v \"\^$deluser\:\" > /tmp/.uc/new.group";
system "mv -f /tmp/.uc/new.group $locgroup";
}
$checkabcdefg = `cat $locgroup|grep $deluser`;
if ($checkabcdefg eq '')  {
}
else
{
system "cp -f $locgroup $locgroup.backup";
$getgroupdata = `cat $locgroup`;
$getgroupdata =~ s/$deluser,/ /g;
$getgroupdata =~ s/,$deluser/ /g;
open (FILE, ">/tmp/.uc/.getl");
print FILE "$getgroupdata";
close (FILE);
system "cat /tmp/.uc/.getl > $locgroup";
system "rm /tmp/.uc/.getl";
#system "sed s\/,$deluser\\\$\/\/ <$locgroup | sed s\/\\\\:$deluser\\\$/\\\\:/ | sed s\/,$deluser,/,/ | sed s\/\\\\:$deluser,/\\\\:/ > $locgroup";
}
print "Done.\n";
&log("Deleted user $deluser.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
# done deleteing user from group thing
}
else
{
goto DEL;
} 
goto DEL;
}
if ($blah1 =~ "B")  {
EDITU:
system "clear";
print "[31;42m------[32;44m[User Configuration $version][31;42m---------[By Sean Clarke]-----[Exit][0m\n";
print "      [32;44m|                      |[0m[47m [0m\n"; 
print "      [32;44m| [31mAdd a User[44m           [32m|[47m [0m\n";
print "      [32;44m| [31mDelete a User[44m        [32m|[47m [0m\n";
print "      [32;44m| [32;41mEdit A User[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mTurn on/off nologin[44m  [32m|[47m [0m\n"; 
print "      [32;44m| [31mEdit Groups[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mView groups and users[44m[32m|[47m [0m\n";
print "      [32;44m|----------------------|[47m [0m\n";
print "       [47m                        [0m[30m\n\n\n\n";
&menu("blah2");
if ($blah2 eq '')  {
EACCOUNT:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit User]-----[0m

                          ***** Edit User *****
	                  [32;41m* Edit Account      *[0m
                          * Lock User         *
			  * Unlock User       *
			  * Change user passwd*
			  * Change finger info*
		 	  * Main Menu         *
			  *********************[30m\n";
&menu("euser1");
if ($euser1 =~ "A")  {
goto EACCOUNT6;
}
if ($euser1 eq '')  {
AACOUNT:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			******** Edit Account ********
			[32;41mUser [ ] :[0m
			UID [ ] :
			GID [ ] :
			Full name [ ] :
			Home dir [ ] :
			Shell [ ] :
			******************************

DIRECTIONS: ENTER THE USER NAME OF THE USER YOU WISH TO 
EDIT FOLLOWED BY PRESSING THE <RETURN/ENTER> KEY.
----------------------------------------------------------\n";
ENTERUSERNAME:
print "User [ ] : ";
$auser = <STDIN>;
chop $auser;
if ($auser eq '')  {
print "\nYou did not enter anything!\n";
goto ENTERUSERNAME;
}
$checkvalidaname = `cat $locpasswd|grep \"\^$auser\:\"`;
if ($checkvalidaname eq '')  {
print "\nThat is not a valid user\n";
goto ENTERUSERNAME;
}
#$defauid = `cat $locpasswd|grep "$auser:"|awk -F \: \'\{print \$3\}\'`;
#chop $defauid;
#$defagid = `cat $locpasswd|grep \"\^$auser\:\"|awk -F \: \'\{print \$4\}\'`;
#chop $defagid;
#$defaname = `cat $locpasswd|grep \"\^$auser\:\"|awk -F \: \'\{print \$5\}\'|awk -F \, \'\{print \$1\}\'`;
#chop $defaname;
#$defadir = `cat $locpasswd|grep \"\^$auser\:\"|awk -F \: \'\{print \$6\}\'`;
#chop $defadir;
#$defashell = `cat $locpasswd|grep \"$auser\:\"|awk -F \: \'\{print \$7\}\'`;
#chop $defashell;
($defablah,$defapass,$defauid,$defagid,$defaquota,$defablah,$defaname,$defadir,$defashell) = getpwnam ("$auser");
$defaname = `echo $defaname|awk -F \, \'\{print \$1\}\'`;
chop $defaname;
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			******** Edit Account ********
			User : $auser
			[32;41mUID [ $defauid ] :[0m
			GID [ $defagid ] :
			Full name [ $defaname ] :
			Home dir [ $defadir ] :
			Shell [ $defashell ] :
			******************************

DIRECTIONS: IF YOU WISH TO LEAVE THE USER ID HOW IT IS 
PRESS ENTER, IF NOT, ENTER THE A NEW UID.
----------------------------------------------------------\n";
ENAUID:
print "UID [ $defauid ] : ";
$auid = <STDIN>;
chop $auid;
if ($auid ne '')  {
$chvalidauid = `cat $locpasswd|grep \"\:$auid\:\"`;
if ($chvalidauid ne '')  {
print "\nThat UID is already used\n";
goto ENAUID;
}
}
else
{
$auid = $defauid;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			******** Edit Account ********
			User : $auser
			UID : $auid
			[32;41mGID [ $defagid ] :[0m
			Full name [ $defaname ] :
			Home dir [ $defadir ] :
			Shell [ $defashell ] :
			******************************

DIRECTIONS: IF YOU WISH TO LEAVE THE GROUP ID HOW IT IS 
PRESS ENTER, IF NOT, ENTER THE A NEW GID.
----------------------------------------------------------\n";
ENAGID:
print "GID [ $defagid ] : ";
$agid = <STDIN>;
chop $agid;
if ($agid ne '')  {
}
else
{
$agid = $defagid;
}
$cnewagroup = `cat $locgroup|grep $agid`;
if ($cnewagroup eq '')  {
$newagroup = "y";
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			******** Edit Account ********
			User : $auser
			UID : $auid
			GID : $agid
			[32;41mFull name [ $defaname ] :[0m
			Home dir [ $defadir ] :
			Shell [ $defashell ] :
			******************************

DIRECTIONS: IF YOU WISH TO LEAVE THE NAME HOW IT IS, PRESS
ENTER, IF NOT TYPE THE NEW NAME YOU WISH FOR USER $auser.
----------------------------------------------------------\n";
print "Full name [ $defaname ] : ";
$aname = <STDIN>;
chop $aname;
if ($aname ne '')  {
}
else
{
$aname = $defaname;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			******** Edit Account ********
			User : $auser
			UID : $auid
			GID : $agid
			Full name : $aname
			[32;41mHome dir [ $defadir ] :[0m
			Shell [ $defashell ] :
			******************************

DIRECTIONS: IF YOU WISH TO CHANGE THE HOME DIR, TYPE THE 
NEW ONE IT, IF NOT, JUST PRESS ENTER.
----------------------------------------------------------\n";
print "Home dir [ $defadir ] : ";
$adir = <STDIN>;
chop $adir;
if ($adir ne '')  {
}
else
{
$adir = $defadir;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			******** Edit Account ********
			User : $auser
			UID : $auid
			GID : $agid
			Full name : $aname
			Home dir : $adir
			[32;41mShell [ $defashell ] :[0m
			******************************

DIRECTIONS: IF YOU WISH TO CHANGE THE SHELL, TYPE THE NEW
ONE IN, IF NOT, JUST PRESS ENTER.
----------------------------------------------------------\n";
ENTERASHELL:
print "Shell [ $defashell ] : ";
$ashell = <STDIN>;
chop $ashell;
if ($ashell ne '') {
$checkvalidashell = `cat /etc/shells|grep $ashell`;
if ($checkvalidashell eq '')  {
print "\nNo such shell in /etc/shells!\n";
goto ENTERASHELL;
}
}
else 
{
$ashell = $defashell;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Account]-----[0m

			[5;31m******** Edit Account ********[0m
			User : $auser
			UID : $auid
			GID : $agid
			Full name : $aname
			Home dir : $adir
			Shell : $ashell
			[5;31m******************************

Continue ? (y/N)[0m ";
&input("acon");
if ($acon =~ "y")  {
print "es\n\n*************** Statis ***************\n";
if ($agid ne $defagid)  {
$testagid = `cat $locgroup|grep $agid`;
if ($testagid !~ "$auser")  {
if ($testagid eq '')  {
ENNEWAGID:
print "Enter the name of the new group for gid $agid : ";
$nagid = <STDIN>;
chop $nagid;
$cnagid = `cat $locgroup|grep \"\^$nagid\:\"`;
if ($cnagid ne '')  {
print "\nThat group name is already taken!\n";
goto ENNEWAGID;
}
print "\nAdd group $nagid...";
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'$agid\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'$agid\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat /tmp/.uc/.ggu1 > $locgroup";
system "cat $locgroup|awk -F \: \'\{if \(\$3 \=\= \'$agid\'\) print\}\'|grep -v \"\^$nagid\:\" >> $locgroup";
system "echo -ne \"$nagid\:\:$agid\:$auser\\n\" >> $locgroup";
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
system "rm -f /tmp/.uc/.ggu2 /tmp/.uc/.ggu1";
print "Done.\n";
$dontstartau = "NO";
}
if ($dontstartau eq '')  {
print "Adding $auser to $agid...";
system "cp -f $locgroup $locgroup.backup";
system "cat $locgroup|grep -v \"$agid\" > /tmp/.uc/.gid1";
system "cat $locgroup|grep \"$agid\" > /tmp/.uc/.gid2";
$doitgid = `cat /tmp/.uc/.gid2`;
chop $doitgid;
if ($newagroup =~ "y")  {
system "echo -n \"$auser\" \>\> /tmp/.uc/.gid2";
}
else
{
system "echo -n \",$auser\" \>\> /tmp/.uc/.gid2";
}
$dogid2 = `cat /tmp/.uc/.gid2`;
open (FILE, ">/tmp/.uc/.gid2");
print FILE (split(/ /,"$dogid2"), "");
close (FILE);
$dogid1 = `cat /tmp/.uc/.gid2`;
open (FILE, ">>/tmp/.uc/.gid1");
print FILE "$dogid1\n";
close (FILE);
system "rm /tmp/.uc/.gid2";
system "mv -f /tmp/.uc/.gid1 $locgroup";
system "cat $locgroup|awk -F \: \'{if \(\$3 \< \'$agid\'\) print\}\' > /tmp/.uc/.ggu1";
system "cat $locgroup|awk -F \: \'{if \(\$3 \> \'$agid\'\) print\}\' > /tmp/.uc/.ggu2";
system "cat $locgroup|grep \"\:$agid\:\" > /tmp/.uc/.ggu3";
system "mv -f /tmp/.uc/.ggu1 $locgroup";
system "cat /tmp/.uc/.ggu3 \>\> $locgroup";
system "cat /tmp/.uc/.ggu2 \>\> $locgroup";
system "rm -f /tmp/.uc/.ggu1 /tmp/.uc/.ggu3 /tmp/.uc/.ggu2";
print "Done.\n";
}
}
} #End of gid test
if ($adir ne $defadir)  {
if (-C "$adir")  {
}
else
{
print "\nHome directory not found, create it ? [ Y/n ] ";
$checkahomedir = <STDIN>;
chop $checkahomedir;
if ($checkahomedir =~ "n")  {
}
else
{
print "\nMakeing dir $adir...";
system "cp -a /etc/skel $adir";
system "chown -R $auid.$agid $adir";
system "chmod 711 $adir";
print "Done.\n";
print "\nRemove old home dir ? [y/N] ";
$adirold = <STDIN>;
chop $adirold;
if ($adirold =~ "y")  {
print "Removing dir $defadir...";
system "rm -rf $defadir";
print "Done.\n";
}
}
}
} #End of dir test
print "Changing Full Name (if changed)...";
system "cat $locpasswd|grep \"\^$auser\:\"|awk -F \: \'\{print \$5\}\' > /tmp/.uc/.fi";
$sepfn = `cat /tmp/.uc/.fi`;
$sepfile = "/tmp/.uc/.nfi";
open (FILE, ">>" . $sepfile);
print FILE (split(/$defaname/,"$sepfn"), "");
close (FILE); 
$sepnfn = `cat /tmp/.uc/.nfi`;
chop $sepnfn;
system "echo -n \"$aname$sepnfn\" > /tmp/.uc/.finger";
$aname = `cat /tmp/.uc/.finger`;
system "rm /tmp/.uc/.fi";
system "rm /tmp/.uc/.nfi";
system "rm /tmp/.uc/.finger";
print "Done.\n";

print "Making changes to passwd (if any)...";
system "cp $locpasswd $locpasswd.backup";
system "cat $locpasswd|grep -v \"\^$auser\:\" > /tmp/.uc/.pass1";
$temppasswd = `cat $locpasswd|grep \"\^$auser\:\"|awk -F \: \'\{print \$2\}\'`;
chop $temppasswd;
system "echo -n \"$auser\:$temppasswd\:$auid\:$agid\:$aname\:$adir\:$ashell\" > /tmp/.uc/.pass2"; 
system "cat /tmp/.uc/.pass1|awk -F \: \'{if \(\$3 \< \'$auid\'\) print\}\' > /tmp/.uc/.pass";
system "cat /tmp/.uc/.pass1|awk -F \: \'{if \(\$3 \> \'$auid\'\) print\}\' > /tmp/.uc/.pass3";
system "cat $locpasswd|awk -F \: \'\{if \(\$3 \=\= \'$auid\'\) print\}'|grep -v \"\^$auser\:\" >> /tmp/.uc/.pass";
system "echo \`cat /tmp/.uc/.pass2\` \>\> /tmp/.uc/.pass";
system "cat /tmp/.uc/.pass3 \>\> /tmp/.uc/.pass";
system "rm /tmp/.uc/.pass1 /tmp/.uc/.pass2 /tmp/.uc/.pass3";
system "mv -f /tmp/.uc/.pass $locpasswd";
print "Done.\n";
&log("Edited Account $auser."); 
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
} # End of acutally editing the account
else
{
goto EACCOUNT;
}
} # Edit of edit account 
elsif ($euser1 =~ "B")  {
EACCOUNT2:
system "clear";			  
print "[31;42m------[User Configuration $version]---------[Edit User]-----[0m

                          ***** Edit User *****
	                  * Edit Account      *
                          [32;41m* Lock User         *[0m
			  * Unlock User       *
			  * Change user passwd*
			  * Change finger info*
		 	  * Main Menu         *
			  *********************[30m\n";
&menu("euser2");
if ($euser2 =~ "A")  {
goto EACCOUNT;
}
if ($euser2 eq '')  {
LOCK:
system "clear";
print "[0mView all unlocked users [ n ] ? ";
&input("viewunlocku");
if ($viewunlocku =~ "y")  {
print "es\n";
if (-C "$locshadow")  {
system "cat $locshadow|grep -v \"\*\"|awk -F \: \'\{print \$1\}\' > /tmp/.uc/.pass";
}
else
{
system "cat $locpasswd|grep -v \"\*\"|awk -F \: \'\{print \$1\}\' > /tmp/.uc/.pass";
}
system "cat /tmp/.uc/.pass|more";
system "rm /tmp/.uc/.pass";
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Lock User]-----[0m

			********** Lock User **********
			[32;41mUser [ ] :[0m
			*******************************
DIRECTIONS:ENTER THE USER YOU WISH TO LOCK, THIS WILL 
MEAN THAT THEY CAN NOT LOG ON TO ANY OF YOUR SERVERS 
SERVICES!
-------------------------------------------------------\n";
ENTERLUSER:
print "User [ ] : ";
$luser = <STDIN>;
chop $luser;
if ($luser eq '')  {
print "\nYou did not enter ANYTHING!\n";
goto ENTERLUSER;
}
if (-C "$locshadow")  {
$checkluser = `cat $locshadow|grep -v \"\*\"|awk -F \: \'\{print \$1\}\'`;
}
else
{
$checkluser = `cat $locpasswd|grep -v \"\*\"|awk -F \: \'\{print \$1\}\'`;
}
if ($checkluser !~ "$luser")  {
print "\nThat is not a valid, unlocked user\n";
goto ENTERLUSER;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Lock User]-----[0m

			[5;31m********** Lock User **********[0m
			User : $luser
			[5;31m*******************************

Continue (y/N) ?[0m ";
&input("lcon");
if ($lcon =~ "y")  {
print "es\n\n**************** Statis ***************\n";
if (-C "$locshadow")  {
print "Locking $luser in shadow file...";
system "cp -f $locshadow $locshadow.backup";
system "chmod 600 $locshadow.backup";
system "cat $locshadow|grep -v \"\^$luser\:\" > /tmp/.uc/.pl1";
$tuser = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$1\}\'`;
chop $tuser;
$tpass = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$2\}\'`;
chop $tpass;
$tuid = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$3\}\'`;
chop $tuid;
$tgid = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$4\}\'`;
chop $tgid;
$tname = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$5}\'`;
chop $tname;
$thome = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$6\}\'`;
chop $thome;
$tshell = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$7\}\'`;
chop $tshell;
$ton8 = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$8\}\'`;
chop $ton8;
$ton9 = `cat $locshadow|grep \"\^$luser\:\"|awk -F \: \'\{print \$9\}\'`;
open (FILE, ">/tmp/.uc/.pl2");
print FILE "$luser\:\*$tpass\:$tuid\:$tgid\:$tname\:$thome\:$tshell\:$ton8\:$ton9";
close (FILE);
#system "cat /tmp/.uc/.pl1|awk -F \: \'\{if \(\$3 \> \'$tuid\'\) print\}\' > /tmp/.uc/.pl3";
#system "cat /tmp/.uc/.pl1|awk -F \: \'\{if \(\$3 \< \'$tuid\'\) print\}\' > /tmp/.uc/.pl1";
system "echo \`cat /tmp/.uc/.pl2\` \>\> /tmp/.uc/.pl1";
#system "cat /tmp/.uc/.pl3 \>\> /tmp/.uc/.pl1";
system "rm -f /tmp/.uc/.pl2";
system "mv -f /tmp/.uc/.pl1 $locshadow";
system "chmod 600 $locshadow";
print "Done.\n";
}
else
{
print "Locking $luser in passwd file...";
system "cp -f $locpasswd $locpasswd.backup";
system "cat $locpasswd|grep -v \"\^$luser\:\" > /tmp/.uc/.pl1";
$tuser = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$1\}\'`;
chop $tuser;
$tpass = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$2\}\'`;
chop $tpass;
$tuid = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$3\}\'`;
chop $tuid;
$tgid = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$4\}\'`;
chop $tgid;
$tname = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$5}\'`;
chop $tname;
$thome = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$6\}\'`;
chop $thome;
$tshell = `cat $locpasswd|grep \"\^$luser\:\"|awk -F \: \'\{print \$7\}\'`;
chop $tshell;
open (FILE, ">/tmp/.uc/.pl2");
print FILE "$luser\:\*$tpass\:$tuid\:$tgid\:$tname\:$thome\:$tshell";
close (FILE);
system "cat /tmp/.uc/.pl1|awk -F \: \'\{if \(\$3 \> \'$tuid\'\) print\}\' > /tmp/.uc/.pl3";
system "cat /tmp/.uc/.pl1|awk -F \: \'\{if \(\$3 \< \'$tuid\'\) print\}\' > /tmp/.uc/.pl1";
system "echo \`cat /tmp/.uc/.pl2\` \>\> /tmp/.uc/.pl1";
system "cat /tmp/.uc/.pl3 \>\> /tmp/.uc/.pl1";
system "rm -f /tmp/.uc/.pl2 /tmp/.uc/.pl3";
system "mv -f /tmp/.uc/.pl1 $locpasswd";
print "Done.\n";
}
&log("Locked user $luser.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
} # End of actually locking user
goto EACCOUNT2;
}
if ($euser2 =~ "B")  {
EACCOUNT3:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit User]-----[0m

                          ***** Edit User *****
	                  * Edit Account      *
                          * Lock User         *
			  [32;41m* Unlock User       *[0m
			  * Change user passwd*
			  * Change finger info*
		 	  * Main Menu         *
			  *********************[30m\n";
&menu("euser3");
if ($euser3 =~ "A")  {
goto EACCOUNT2;
}
if ($euser3 eq '')  {
system "clear";
if (-C "$locshadow")  {
$checkifalock = `cat $locshadow|grep \"\*\"`;
}
else
{
$checkifalock = `cat $locpasswd|grep \"\*\"`;
}
if ($checkifalock eq '')  {
print "[0mThere are no users locked!\n";
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
goto EACCOUNT3;
}
print "[0mView all locked users ? [ n ] ";
&input("$viewlock");
if ($viewlock =~ "y")  {
print "es\n";
if (-C "$locshadow")  {
system "cat $locshadow|grep \"\*\"|awk -F \: \'\{print \$1\}\'|more";
}
else
{
system "cat $locpasswd|grep \"\*\"|awk -F \: \'\{print \$1\}\'|more";
}
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Unlock user]-----[0m

			***** Unlock User *****
                        [32;41mUser [ ] :[0m
			***********************

DIRECTIONS: ENTER THE USER YOU WISH TO UNLOCK, THIS 
MEANS THEY WILL HAVE ACCESS TO ALL YOUR SERVICES AGAIN!
----------------------------------------------------\n";
ENTEROUSER:
print "User [ ] : ";
$ouser = <STDIN>;
chop $ouser;
if ($ouser eq '')  {
print "\nYou did not enter anything\n";
goto ENTEROUSER;
}
if (-C "$locshadow")  {
$checkouser = `cat $locshadow|grep \"\*\"|awk -F \: \'\{print \$1\}\'`;
}
else
{
$checkouser = `cat $locpasswd|grep \"\*\"|awk -F \: \'\{print \$1\}\'`;
}
if ($checkouser !~ "$ouser")  {
print "\nThat user is not locked!\n";
goto ENTEROUSER;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Unlock user]-----[0m

			[5;31m***** Unlock User *****[0m
                        User : $ouser
			[5;31m***********************

Continue (y/N) ?[0m ";
&input("ocon");
if ($ocon =~ "y")  {
print "es\n\n*************** Statis ***************\n";
if (-C "$locshadow")  {
print "Unlocking user $ouser in shadow file...";
system "cp -f $locshadow $locshadow.backup";
system "chmod 600 $locshadow.backup";
system "cat $locshadow|grep -v \"^$ouser:\" > /tmp/.uc/.opass";
$getouser = `cat $locshadow|grep \"^$ouser:\"`;
system "touch /tmp/.uc/.opass1";
open (FILE, ">/tmp/.uc/.opass1");
print FILE (split(/\*/, "$getouser"), "");
close (FILE);
#$abuid = `cat $locshadow|grep \"\^$ouser\:\"|awk -F \: \'\{print \$3\}\'`;
#chop $abuid;
#system "cat /tmp/.uc/.opass|awk -F \: \'\{if \(\$3 > \'$abuid\'\) print\}\' > /tmp/.uc/.opass2";
#system "cat /tmp/.uc/.opass|awk -F \: \'\{if \(\$3 \< \'$abuid\'\) print\}\' > /tmp/.uc/.opass";
system "echo \`cat /tmp/.uc/.opass1\` \>\> /tmp/.uc/.opass";
#system "cat /tmp/.uc/.opass2 \>\> /tmp/.uc/.opass";
system "mv -f /tmp/.uc/.opass $locshadow";
system "chmod 600 $locshadow";
system "rm -f /tmp/.uc/.opass1";
}
else
{
print "Unlocking user $ouser in passwd file...";
system "cp -f $locpasswd $locpasswd.backup";
system "cat $locpasswd|grep -v \"^$ouser:\" > /tmp/.uc/.opass";
$getouser = `cat $locpasswd|grep \"^$ouser:\"`;
system "touch /tmp/.uc/.opass1";
open (FILE, ">/tmp/.uc/.opass1");
print FILE (split(/\*/, "$getouser"), "");
close (FILE);
$abuid = `cat $locpasswd|grep \"\^$ouser\:\"|awk -F \: \'\{print \$3\}\'`;
chop $abuid;
system "cat /tmp/.uc/.opass|awk -F \: \'\{if \(\$3 > \'$abuid\'\) print\}\' > /tmp/.uc/.opass2";
system "cat /tmp/.uc/.opass|awk -F \: \'\{if \(\$3 \< \'$abuid\'\) print\}\' > /tmp/.uc/.opass";
system "echo \`cat /tmp/.uc/.opass1\` \>\> /tmp/.uc/.opass";
system "cat /tmp/.uc/.opass2 \>\> /tmp/.uc/.opass";
system "mv -f /tmp/.uc/.opass $locpasswd";
system "rm -f /tmp/.uc/.opass1";
}
print "Done.\n";
&log("Unlocked user $ouser.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
goto EACCOUNT3;
} # End of Unlock users
if ($euser3 =~ "B")  {
EACCOUNT4:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit User]-----[0m

                          ***** Edit User *****
	                  * Edit Account      *
                          * Lock User         *
			  * Unlock User       *
			  [32;41m* Change user passwd*[0m
			  * Change finger info*
		 	  * Main Menu         *
			  *********************[30m\n";
&menu("euser4");
if ($euser4 =~ "A")  {
goto EACCOUNT3;
}
if ($euser4 eq '')  {
CPASSWD:
system "clear";
print "[31;42m------[User Configuration $version]---------[User Password]-----[0m

			*** Change Users Password ***
			[32;41mUser [ ] :[0m
			*****************************

DIRECTIONS: ENTER THE USER THAT YOU WISH TO CHANGE THERE PASSWORD.
------------------------------------------------------------------\n";
ENCUPASSWD:
print "User [ ] : ";
$cupasswd = <STDIN>;
chop $cupasswd;
$checkcupasswd = `cat $locpasswd|grep \"^$cupasswd:\"`;
if ($checkcupasswd eq '')  {
print "\nThat is not a valid user!\n";
goto ENCUPASSWD;
}
print "\nChanging password for user $cupasswd\n";
system "passwd $cupasswd";
&log("Changed password for user $cupasswd.");
goto EACCOUNT4;
} #End of change user passwd
if ($euser4 =~ "B")  {
EACCOUNT5:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit User]-----[0m

                          ***** Edit User *****
	                  * Edit Account      *
                          * Lock User         *
			  * Unlock User       *
			  * Change user passwd*
			  [32;41m* Change finger info*[0m
		 	  * Main Menu         *
			  *********************[30m\n";
&menu("euser5");
if ($euser5 =~ "A")  {
goto EACCOUNT4;
}
if ($euser5 eq '')  {
system "clear";
print "[31;42m------[User Configuration $version]---------[Finger Info]-----[0m

			*** Change Finger Info ***
			[32;41mUser [ ] :[0m
			**************************

DIRECTIONS: ENTER THE USER YOU WISH TO CHANGE THERE FINGER INFORMATION.
-----------------------------------------------------------------------\n";
ENFIUSER:
print "User [ ] : ";
$fiuser = <STDIN>;
chop $fiuser;
$checkfiuser = `cat $locpasswd|grep \"\^$fiuser\:\"`;
if ($checkfiuser eq '')  {
print "\nThat is not a valid user\n";
goto ENFIUSER;
}
system "chfn $fiuser";
&log("Changed finger information for user $fiuser.");
goto EACCOUNT5;
} #end of change finger info
if ($euser5 =~ "B")  {
EACCOUNT6:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit User]-----[0m

                          ***** Edit User *****
	                  * Edit Account      *
                          * Lock User         *
			  * Unlock User       *
			  * Change user passwd*
			  * Change finger info*
		 	  [32;41m* Main Menu         *[0m
			  *********************[30m\n";
&menu("euser6");
if ($euser6 =~ "A")  {
goto EACCOUNT5;
}
if ($euser6 eq '')  {
goto MAIN;
}
if ($euser6 =~ "B")  {
goto EACCOUNT;
}
} #End of 6 
} #End of 5
} #End of 4
} #End of 3
} #End of 2
goto EACCOUNT;
} #End of Edit Account
if ($blah2 =~ "A")  {
goto DEL;
}
if ($blah2 =~ "C")  {
&about;
}
if ($blah2 =~ "B")  {
NOLOGIN:
system "clear";
print "[31;42m------[32;44m[User Configuration $version][31;42m---------[By Sean Clarke]-----[Exit][0m\n";
print "      [32;44m|                      |[0m[47m [0m\n"; 
print "      [32;44m| [31mAdd a User[44m           [32m|[47m [0m\n";
print "      [32;44m| [31mDelete a User[44m        [32m|[47m [0m\n";
print "      [32;44m| [31mEdit A User[44m          [32m|[47m [0m\n";
print "      [32;44m| [32;41mTurn on/off nologin[44m  [32m|[47m [0m\n"; 
print "      [32;44m| [31mEdit Groups[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mView groups and users[44m[32m|[47m [0m\n";
print "      [32;44m|----------------------|[47m [0m\n";
print "       [47m                        [0m[30m\n\n\n\n";
&menu("blah3");
if ($blah3 =~ "C")  {
&about;
}
if ($blah3 =~ "A")  {
goto EDITU;
}
if ($blah3 eq '')  {
NOL:
system "clear";
print "[0m";
if (-C "/etc/nologin")  {
print "Nologin is on, would you like to turn it off ? [ n ] ";
&input("noloff");
if ($noloff =~ "y")  {
print "es\nTurning nologin off...";
system "rm -f /etc/nologin";
print "Done.\n";
&log("Turned off nologin.");
print "[30;47mPress enter to return to main menu...[0m";
input("wait");
goto NOLOGIN;
}
}
else
{
print "Nologin is off, would you like to turn it on ? [ n ] ";
&input(nolon);
if ($nolon =~ "y")  {
print "es\nDIRECTIONS: NOW YOU WILL ENTER WHAT YOU WISH IT TOO SAY WHEN 
A USERS ATTEMPS TO LOG ON, WHEN DONE PRESS CTRL-D.\n";
print "[30;47mPress enter to continue...[0m";
&input("wait");
print "Start writing ( curser may not show up ) : \n"; 
system "echo";
system "cat > /etc/nologin 2>/dev/null";
&log("Turned on nologin.");
}
}
goto NOLOGIN;
} #end of nologin
if ($blah3 =~ "B")  {
EDITG:
system "clear";
print "[31;42m------[32;44m[User Configuration $version][31;42m---------[By Sean Clarke]-----[Exit][0m\n";
print "      [32;44m|                      |[0m[47m [0m\n"; 
print "      [32;44m| [31mAdd a User[44m           [32m|[47m [0m\n";
print "      [32;44m| [31mDelete a User[44m        [32m|[47m [0m\n";
print "      [32;44m| [31mEdit A User[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mTurn on/off nologin[44m  [32m|[47m [0m\n"; 
print "      [32;44m| [32;41mEdit Groups[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mView groups and users[44m[32m|[47m [0m\n";
print "      [32;44m|----------------------|[47m [0m\n";
print "       [47m                        [0m[30m\n\n\n\n";
&menu("blah4");
if ($blah4 =~ "C")  {
&about;
}
if ($blah4 =~ "A")  {
goto NOLOGIN;
}
if ($blah4 eq '')  {
EDITG1:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Group]-----[0m

			******* Edit Group *******
	                [32;41m* Add Group              *[0m
			* Delete Group           *
			* Delete user in group   *
			* Add user to group      *
			* Main Menu              *
			**************************[30m\n";
&menu("groupe1");
if ($groupe1 =~ "A")  {
goto EDITG5;
}
if ($groupe1 eq '')  {
ADDGGROUP:
system "clear";
print "[31;42m------[User Configuration $version]---------[Add Group]-----[0m

			***** Add Group *****
			[32;41mGroup [ ] :[0m
			GID [ ] :
			Users [ ] :
			*********************

DIRECTIONS: ENTER THE NAME OF THE GROUP THAT YOU WISH TO MAKE.
EXAMPLE: web
--------------------------------------------------------------\n";
ENDGROUP:
print "Group [ ] : ";
$dgroup = <STDIN>;
chop $dgroup;
if ($dgroup eq '')  {
print "\nYou did not enter anything\n";
goto ENDGROUP;
}
$checkdgroup = `cat $locgroup|grep "^$dgroup:\"`;
if ($checkdgroup ne '')  {
print "\nThat group is already used!\n";
goto ENDGROUP;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add Group]-----[0m

			***** Add Group *****
			Group : $dgroup
			[32;41mGID [ ] :[0m
			Users [ ] :
			*********************

DIRECTIONS: ENTER THE GID OF THE GROUP THAT YOU WISH TO MAKE.
EXAMPLE: 103
--------------------------------------------------------------\n";
ENDGID:
print "GID [ ] : ";
$dgid = <STDIN>;
chop $dgid;
$checkvdgid = `cat $locgroup|grep \"\:$dgid\:\"`;
if ($dgid eq '')  {
print "\nYou did not enter a gid, would you like me to make one for you ? [ n ] ";
$mdgid = <STDIN>;
chop $mdgid;
if ($mdgid =~ "y")  {
$dg = `tail -n 1 $locgroup|awk -F : \'\{print \$3\}\'`;
$dg1 = $dg + 1;
$cdg = `cat $locgroup|grep \"$dg1\"`;
if ($cdg eq '')  {
$dgid = "$dg1";
}
else
{
$dg2 = $dg + 2;
$cdg2 = `cat $locgroup|grep \"$dg2\"`;
if ($cdg2 eq '')  {
$dgid = "dg2";
}
else
{
print "\nI had trouble finding one, so you have too!\n"; 
goto ENDGID;
}
}
}
else
{		
goto ENDGID;
}
}
elsif ($checkvdgid ne '')  {
print "\nThat gid is already used!\n";
goto ENDGID;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add Group]-----[0m

			***** Add Group *****
			Group : $dgroup
			GID : $dgid
			[32;41mUsers [ ] :[0m 
			*********************

DIRECTIONS: ENTER THE USER YOU WISH TO BE ADDED TO THIS GROUP, 
ENTER THEM IN THE FORMAT OF THE EXAMPLE. (with a comma between 
every user). IF YOU DON'T WANT ANY ADDED AT THIS TIME, PRESS ENTER.
EXAMPLE: jim,kcogs,sclarke
--------------------------------------------------------------\n";
print "Users [ ] : ";
$dusers = <STDIN>;
chop $dusers;
system "clear";
print "[31;42m------[User Configuration $version]---------[Add Group]-----[0m

			[5;31m***** Add Group *****[0m 
			Group : $dgroup
			GID : $dgid
			Users : $dusers
			[5;31m*********************[0m 

[5;31mContinue (y/N) ?[0m ";
&input("dcon");
if ($dcon =~ "y")  {
print "es\n\n*************** Statis ***************\n";
print "Adding $dgroup"; 
if ($dusers ne '') 
{ 
print " with $dusers"; 
} 
print "...";
system "cp -f $locgroup $locgroup.backup";
system "cat $locgroup|awk -F \: \'\{if \(\$3 \< \'$dgid\'\) print\}\' > /tmp/.uc/.dogid1";
system "cat $locgroup|awk -F \: \'\{if \(\$3 \> \'$dgid\'\) print\}\' > /tmp/.uc/.dogid2";
system "cat /tmp/.uc/.dogid1 > $locgroup";
system "echo \"$dgroup\:\:$dgid\:$dusers\" \>\> $locgroup";
system "cat /tmp/.uc/.dogid2 \>\> $locgroup";
system "rm /tmp/.uc/.dogid\*";
print "Done.\n";
&log("Added group $dgroup, with GID of $dgid, with $dusers.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
} #end of Add group
if ($groupe1 =~ "B")  {
EDITG2:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Group]-----[0m

			******* Edit Group *******
	                * Add Group              *
			[32;41m* Delete Group           *[0m
			* Delete user in group   *
			* Add user to group      *
			* Main Menu              *
			**************************[30m\n";
&menu("groupe2");
if ($groupe2 =~ "A")  {
goto EDITG1;
}
if ($groupe2 eq '')  {
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete Group]-----[0m

			***** Delete Group *****
			[32;41mGroup [ ] :[0m
			************************

DIRECTIONS: ENTER THE GROUP THAT YOU WISH TO DELETE
EXAMPLE: web
---------------------------------------------------\n";
ENDLGROUP:
print "Group [ ] : ";
$dlgroup = <STDIN>;
chop $dlgroup;
if ($dlgroup eq '')  {
print "\nYou did not enter a group!\n";
goto ENDLGROUP;
}
$checkdlgroup = `cat $locgroup|grep \"\^$dlgroup\:\"`;
if ($checkdlgroup eq '')  {
print "\nThat is not a valid group\n";
goto ENDLGROUP;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete Group]-----[0m

			[5;31m***** Delete Group *****[0m
			Group : $dlgroup
			[5;31m************************
 
Continue (y/N) ?[0m ";
&input("dlcon");
if ($dlcon =~ "y")  {
print "es\n\n*************** Statis ***************\n";
print "Removing $dlgroup...";
system "cp -f $locgroup $locgroup.backup";
system "cat $locgroup|grep -v \"^$dlgroup:\" > /tmp/.uc/.dlgroup1";
system "mv -f /tmp/.uc/.dlgroup1 $locgroup";
print "Done.\n";
&log("Deleted group $dlgroup.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
goto EDITG2;
} # End of Delete Group
if ($groupe2 =~ "B")  {
EDITG3:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Group]-----[0m

			******* Edit Group *******
	                * Add Group              *
			* Delete Group           *
			[32;41m* Delete user in group   *[0m
			* Add user to group      *
			* Main Menu              *
			**************************[30m\n";
&menu("groupe3");
if ($groupe3 =~ "A")  {
goto EDITG2;
}
if ($groupe3 eq '')  {
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User in Group]-----[0m

			*** Delete User in Group ***
			[32;41mGroup [ ] :[0m
                        User [ ] :
			****************************

DIRECTIONS: ENTER THE GROUP FROM WHICH YOU WISH TO DELETE THE USERS FROM.
EXAMPLE: users
-------------------------------------------------------------------------\n";
EDDEGROUP:
print "Group [ ] : ";
$degroup = <STDIN>;
chop $degroup;
if ($degroup eq '') {
print "\nYou did not enter anything!\n";
goto EDDEGROUP;
}
$checkdegroup = `cat $locgroup|grep \"^$degroup:\"`;
if ($checkdegroup eq '')  {
print "\nThat is not a valid group!\n";
goto EDDEGROUP;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User in Group]-----[0m

			*** Delete User in Group ***
			Group : $degroup
                        [32;41mUser [ ] :[0m
			****************************

DIRECTIONS: ENTER THE USER FROM $degroup THAT YOU WISH TO DELETE.  
EXAMPLE: kclarke
-------------------------------------------------------------------------\n";
ENDEUSERS:
print "Users [ ] : ";
$deusers = <STDIN>;
chop $deusers;
if ($deusers eq '')  {
print "You did not enter anything!";
goto ENDEUSERS;
}
$checkdeuser = `cat $locgroup|grep \"$deusers\"`;
if ($checkdeuser eq '')  {
print "\nThat user is not in $degroup.\n";
goto ENDEUSERS;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Delete User in Group]-----[0m

			[5;31m*** Delete User in Group ***[0m
			Group : $degroup
                        User : $deusers
			[5;31m****************************

Continue (y/N) ?[0m ";
&input("decon");
if ($decon =~ "y")  {
print "\n*************** Statis ***************\n";
print "Deleting $deusers from $degroup...";
$checkdegid = `cat $locgroup|grep \"\^$degroup\:\"|awk -F \: \'\{print \$4\}\'|awk -F \, \'\{print \$1\}\'`;
chop $checkdegid;
$checkdegid2 = `cat $locgroup|grep \"\^$degroup\:\"|awk -F \: \'\{print \$4\}\'|awk -F \, \'\{print \$2\}\'`;
chop $checkdegid2;
if ($checkdegid eq $deusers)  {
if ($checkdegid2 eq '')  {
$dedoc = "y";
}
else
{
$dedoc = "n";
}
}
system "cp -f $locgroup $locgroup.backup";
system "cat $locgroup|grep -v \"^$degroup:\" > /tmp/.uc/.de1";
system "cat $locgroup|grep \"^$degroup:\" > /tmp/.uc/.de2";
system "touch /tmp/.uc/.de";
$mkde = `cat /tmp/.uc/.de2`;
chop $mkde;
open (FILE, ">>/tmp/.uc/.de");
if ($dedoc =~ "y")  {
print FILE (split(/\:$deusers/,"$mkde"), "");
close (FILE);
system "echo \"\:\" >> /tmp/.uc/.de";
$mkde1 = `cat /tmp/.uc/.de`;
open (FILE, ">/tmp/.uc/.de");
print FILE (split(/ /,"$mkde1"),"");
}
#elsif ($dedoc =~ "n")  {
#print FILE (split(/$deusers,/,"$mkde"), "\n");
#}
else
{
print FILE (split(/\,$deusers/,"$mkde"), "\n");
}
close (FILE);
$mkder = `cat /tmp/.uc/.de`;
chop $mkder;
$mkder =~ s/,,/,/;
open (FILE, ">/tmp/.uc/.der");
print FILE "$mkder";
close (FILE);
#system "echo \`cat /tmp/.uc/.der\` >> /tmp/.uc/.de1";
$dogid = `cat $locgroup|grep \"\^$degroup\:\"|awk -F \: \'\{print \$3\}\'`;
chop $dogid;
system "cat $locgroup|awk -F \: \'\{if \(\$3 \< \'$dogid\'\) print\}\' > /tmp/.uc/.do1";
system "cat $locgroup|awk -F \: \'\{if \(\$3 \> \'$dogid\'\) print\}\' > /tmp/.uc/.do2";
system "cat /tmp/.uc/.do1 > $locgroup";
system "echo \`cat /tmp/.uc/.der\` \>\> $locgroup";
system "cat /tmp/.uc/.do2 \>\> $locgroup";
#system "mv -f /tmp/.uc/.de1 $locgroup";
system "rm -r /tmp/.uc/.de\*";
system "rm -r /tmp/.uc/.do\*";
print "Done.\n";
&log("Deleted user $deusers from group $degroup.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
} # End of acutally delete the user from group
goto EDITG3;
} # End of Delete a User from group
if ($groupe3 =~ "B")  {
EDITG4:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Group]-----[0m

			******* Edit Group *******
	                * Add Group              *
			* Delete Group           *
			* Delete user in group   *
			[32;41m* Add user to group      *[0m
			* Main Menu              *
			**************************[30m\n";
&menu("groupe4");
if ($groupe4 =~ "A")  {
goto EDITG3;
}
if ($groupe4 eq '')  {
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User to Group]-----[0m
		
			**** Add User to Group ****
			[32;41mGroup [ ] :[0m
			Users [ ] :
			***************************

DIRECTIONS: ENTER THE GROUP OF THE USER YOU WISH TO ADD FOLLOWED
BY THE <RETURN/ENTER> KEY.
----------------------------------------------------------------\n";
ENAUGROUP:
print "Group [ ] : ";
$augroup = <STDIN>;
chop $augroup;
if ($augroup eq '')  {
print "\nYou did not enter anything!\n";
goto ENAUGROUP;
}
$checkvaugroup = `cat $locgroup|grep \"\^$augroup\:\"`;
if ($checkvaugroup eq '')  {
print "\nThat is not a valid group!\n";			
goto ENAUGROUP;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User to Group]-----[0m
		
			**** Add User to Group ****
			Group : $augroup
			[32;41mUsers [ ] :[0m
			***************************

DIRECTIONS: ENTER USER(S) YOU WISH TO ADD, IF YOU WANT TO ADD MORE THAN
ONE PLEASE ENTER THEM IN THIS FORMAT:
userone,usertwo
AND SO ON.
----------------------------------------------------------------\n";
ENAUUSER:
print "Users [ ] : ";
$auuser = <STDIN>;
chop $auuser;
if ($auuser eq '')  {
print "\nYou did not enter anything!\n";
goto ENAUUSER;
}
$checkifinau = `cat $locgroup|grep \"\^$augroup\:\"|grep $auuser`;
if ($auuser eq $augroup) {
}
elsif ($checkifinau ne '')  {
print "\nThat user is already in that group!\n";
goto ENAUUSER;
}
system "clear";
print "[31;42m------[User Configuration $version]---------[Add User to Group]-----[0m
		
			[5;31m**** Add User to Group ****[0m
			Group : $augroup
			Users : $auuser
			[5;31m***************************

Continue (y/N) ?[0m ";
&input("conau");
if ($conau =~ "y")  { 
print "es\n\n*************** Statis ***************\n";
$statisauuser = $auuser;
$statisauuser =~ s/,/ and /;
print "Adding $statisauuser to $augroup...";
$checkifaum = `cat $locgroup|grep \"\^$augroup\:\"|awk -F \: \'\{print \$4\}\'`;
chop $checkifaum;
if ($checkifaum eq '')  {
$onlyoneau = "y";
}
system "echo -n `cat $locgroup|grep \"\^$augroup\:\"` > /tmp/.uc/.augroup1";
if ($onlyoneau =~ "y")  {
system "echo $auuser \>\> /tmp/.uc/.augroup1";
}
else
{
system "echo \"\,$auuser\" \>\> /tmp/.uc/.augroup1";
}
$getridsau = `cat /tmp/.uc/.augroup1`;
open (FILE, ">>/tmp/.uc/.augroup");
print FILE (split(/ /,"$getridsau"), "");
close (FILE);
$augid = `cat $locgroup|grep \"\^$augroup\:\"|awk -F \: \'\{print \$3\}\'`;
chop $augid;
system "cat $locgroup|awk -F \: \'\{if \(\$3 \< \'$augid\'\) print\}\' > /tmp/.uc/.au1";
system "cat $locgroup|awk -F \: \'\{if \(\$3 \> \'$augid\'\) print\}\' > /tmp/.uc/.au2";
system "cat /tmp/.uc/.au1 > $locgroup";
system "cat /tmp/.uc/.augroup \>\> $locgroup";
system "cat /tmp/.uc/.au2 \>\> $locgroup";
system "rm /tmp/.uc/.au\*";
print "Done.\n";
&log("Added user $statisauuser to group $augroup.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
goto EDITG4;
} #end of add user to group
if ($groupe4 =~ "B")  {
EDITG5:
system "clear";
print "[31;42m------[User Configuration $version]---------[Edit Group]-----[0m

			******* Edit Group *******
	                * Add Group              *
			* Delete Group           *
			* Delete user in group   *
			* Add user to group      *
			[32;41m* Main Menu              *[0m
			**************************[30m\n";
&menu("groupe5");
if ($groupe5 =~ "A")  {
goto EDITG4;
}
if ($groupe5 eq '')  {
goto EDITG;
}
if ($groupe5 =~ "B")  {
goto EDITG1;
}
} # End of 5
} # End of 4
} # End of 3
} # End of 2
goto EDITG1;
} # End of Edit Group
if ($blah4 =~ "B")  {
CHECK:
system "clear";
print "[31;42m------[32;44m[User Configuration $version][31;42m---------[By Sean Clarke]-----[Exit][0m\n";
print "      [32;44m|                      |[0m[47m [0m\n"; 
print "      [32;44m| [31mAdd a User[44m           [32m|[47m [0m\n";
print "      [32;44m| [31mDelete a User[44m        [32m|[47m [0m\n";
print "      [32;44m| [31mEdit A User[44m          [32m|[47m [0m\n";
print "      [32;44m| [31mTurn on/off nologin[44m  [32m|[47m [0m\n"; 
print "      [32;44m| [31mEdit Groups[44m          [32m|[47m [0m\n";
print "      [32;44m| [32;41mView groups and users[44m[32m|[47m [0m\n";
print "      [32;44m|----------------------|[47m [0m\n";
print "       [47m                        [0m[30m\n\n\n\n";
&menu("blah5");
if ($blah5 =~ "C")  {
&about;
}
if ($blah5 =~ "B")  {
goto MAIN;
}
if ($blah5 =~ "A")  {
goto EDITG;
}
if ($blah5 eq '')  {
VIEWGU:
system "clear";
print "[31;42m------[User Configuration $version]---------[View Users and Groups]-----[0m

				***** Users or Groups *****
		                [32;41m* View Passswd(user) file *[0m
				* View Group file         *
				* Main Menu               *
				***************************[30m\n";
&menu("guview");
if ($guview =~ "A")  {
goto GUVIEW2;
}
if ($guview eq '')  {
#$vpuser = `cat $locpasswd`;
#$vpuser =~ s/\:/     /g;
#print "[30;47mUser       Password        UID        GID        NAME
#DIR      SHELL[0m\n";
#print "$vpuser";
system "echo \"[0m \"";
system "clear";
system "cat $locpasswd";
&log("Viewed $locpasswd.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
if ($guview =~ "B")  {
GUVIEW1:
system "clear";
print "[31;42m------[User Configuration $version]---------[View Users and Groups]-----[0m

				***** Users or Groups *****
		                * View Passswd(user) file *
				[32;41m* View Group file         *[0m
				* Main Menu               *
				***************************[30m\n";
&menu("guview1");
if ($guview1 =~ "A")  {
goto VIEWGU;
}
if ($guview1 eq '')  {
system "echo \"[0m \"";
system "clear";
system "cat $locgroup|more";
&log("Viewed $locgroup.");
print "[30;47mPress enter to continue...[0m";
$wait = <STDIN>;
}
if ($guview1 =~ "B")  {
GUVIEW2:
system "clear";
print "[31;42m------[User Configuration $version]---------[View Users and Groups]-----[0m

				***** Users or Groups *****
		                * View Passswd(user) file *
				* View Group file         *
				[32;41m* Main Menu               *[0m
				***************************[30m\n";
&menu("guview2");
if ($guview2 =~ "A")  {
goto GUVIEW1;
}
if ($guview2 eq '')  {
goto CHECK;
}
if ($guview2 =~ "B")  {
goto VIEWGU;
} 
}
}
goto CHECK;
} #End off view user and groups
#Ending brakets
}
}
}
}
}
}
goto MAIN;
