Index: ossp-pkg/tabea/tabea.cgi RCS File: /v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v rcsdiff -q -kk '-r1.29' '-r1.30' -u '/v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v' 2>/dev/null --- tabea.cgi 2002/06/20 15:09:05 1.29 +++ tabea.cgi 2002/06/27 15:57:10 1.30 @@ -28,6 +28,7 @@ ## tabea.cgi: Tabea CGI (syntax: Perl) ## + require 5.000; use strict; use IO; @@ -93,8 +94,8 @@ my $form = ''; -for my $name (qw(admin cfgedit changepwd changer chpwd confr copy copyc copyt del d2user duser \ - edit logout mainw new newf newuser nuser run save view )) { +for my $name (qw(admin cfgedit changepwd changer chpwd confr copy copyc copyt del d2user d3user \ + duser edit logout mainw new newf newuser nuser run save view )) { my $val = $cgi->param("dialog_$name") || ""; if ($val ne '') { $form = $name; @@ -178,12 +179,16 @@ $page .= &newuser($cgi->param('akt_user')); } elsif ($form eq 'duser' ) { - $page .= &duser($cgi->param('akt_user') ) + $page .= &duser($akt_user); +} + +elsif ($form eq 'd2user' ) { + $page .= &d2user($akt_user); } -#elsif ($form eq 'duser' ) { -# $page .= &duser($cgi->param('akt_user') ) -#} +elsif ($form eq 'd3user' ) { + $page .= &d3user($akt_user); +} elsif ($form eq 'cfgedit' ) { # $page .= &run($cgi->param('configslist') ); @@ -201,6 +206,8 @@ $page .= $cgi->hidden(-name => 'password', -default => $password); $page .= $cgi->hidden(-name => 'username', -default => $username); +$page .= $cgi->hidden(-name => 'akt_user', -default => $akt_user); +$page .= $cgi->hidden(-name => 'del_u_files', -default => $cgi->param('del_u_files')); # A special for admin section and chpw for tabea #$page .= $cgi->hidden(-name => 'akt_user', -default => $akt_user); @@ -843,18 +850,29 @@ my $userlist = &get_userlist($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}); my @userlistarray = split(/\s/, $userlist); - + $akt_user = $username; $text .= "Username: $username; User: $user"; $text .= "" . "" . "
". - $cgi->popup_menu( - -name => 'akt_user', - -value => [@userlistarray], -# -default=>'ps', -# -default => 'ps', - -default => $username, -# -default => $cfghash{'TabeaUser'} - ) . + + +# $cgi->popup_menu( +# -name => 'akt_user', +# -value => [@userlistarray], +# -default => $username, +# ) . + "" . + "" . @@ -1059,9 +1077,14 @@ ######################################################################################## my ($nuser) = @_; my $ntext; - my $pwfile = $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}; - my $pwin; - my $pwfiletext; + my $pwdfile = $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}; + my $pwdin; + my $pwdfiletext; + my $pwd; + my $uname; + my $dirlist; + my $nu_error = 1; + $ntext .= "Here is newuser $nuser
"; @@ -1076,22 +1099,66 @@ $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); } else { $ntext .= "Writing new user"; - $pwin = IO::File->new("<$pwfile"); - if(defined $pwin) { - $pwfiletext .= $_ while <$pwin>; - } - $pwin->close(); - + $ntext .= "
Checking passwdord file
" ; + $pwdin = IO::File->new("<$pwdfile"); + while (<$pwdin>) { + $_ =~ s|^(\w+):(.+)$|{$uname=$1}|eg; + ( $uname =~ $nuser ) && do { $nu_error = 0; }; + } + $pwdin->close(); + + $ntext .= "
Checking subdir file
" ; -# Checken, ob User in pw -# Checken, ob Subdir gleichen Namens existiert + $dirlist = &readsubdir($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/"); + + $ntext .= "
$dirlist
" ; + ( $dirlist =~ m|$nuser| ) && do { $nu_error = 0; }; + + if ($nu_error) { + $ntext .= "
Creatin subdir file
" ; + my $newdir = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $nuser; + system("mkdir $newdir ") ; + + $dirlist = &readsubdir($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/"); + my $dirok = 1; + ( $dirlist !~ m|$nuser| ) && do { $dirok = 0; }; + if ($dirok) { + $ntext .= "
Reading password file
" ; + $pwdin = IO::File->new("<$pwdfile"); + while (<$pwdin>) { + $pwdfiletext .= $_; + $_ =~ s|^(\w+):(.+)$|{$uname=$1; $pwd=$2}|eg; + # I need an existing password as an example + } + $pwdin->close(); + $ntext .= "

" . "$pwdfiletext" . "

" ; + + $pwdfiletext .= $nuser . ":" . (crypt('foobar', $pwd)) ; + + + $ntext .= "

" . "$pwdfiletext" . "

" ; + + $pwdin = IO::File->new(">$pwdfile"); + print $pwdin $pwdfiletext; + $pwdin->close(); + } -# Unterverzeichnis anlegen -# PW Eintrag machen + + $ntext .= "" . + "User $nuser created
" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + + } else { + $ntext .= "" . + "
User exists

" . + "
" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + } } + return $ntext; } ######################################################################################## @@ -1101,9 +1168,75 @@ ######################################################################################## my ($duser) = @_; my $text; + my $derror = 0; + if ($duser =~ $cfghash{'TabeaUser'} ) { + $derror = 1; + } - $text .= + if (! $derror ) { + $text .= + + "" . + "". + + "" . + + + "
" . + "" . + "User to delete :" . + "" . + "" . + "$duser" . + "
" . + + "

" . + +# $cgi->checkbox(-name=>'del_u_files', +# -value=>'del_files', +# -checked=>'', +# -label=>'Delete files of user', +# -checked=> +# ) . + "Delete files of user" . + + "


" . + + "" . + + "" . + "" . + + "
" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). + "" . + $cgi->submit(-name => 'dialog_d2user', -value => 'Del User'). + "
" ; + + } else { + $text .= + "" . + "It is not allowed to delet tabea user!!!" . + "" . + "

" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + } + + + return $text; +} +######################################################################################## + + + +######################################################################################## +sub d2user { +######################################################################################## + my ($duser) = @_; + my $dtext; + + $dtext .= "" . "" . - "
" . @@ -1115,29 +1248,107 @@ "" . "$duser" . "
" . "

" . + "And his files wil be " ; + + $dtext .= $cgi->param('del_u_files') . "
"; + + if ($cgi->param('del_u_files')) { + $dtext .= "
The files of the user will be deleted" ; + } else { + $dtext .= "
The files of the user will be copied" ; + } + + $dtext .= "


" . + "" . "" . "" . "
" . $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). "" . - $cgi->submit(-name => 'dialog_d2user', -value => 'Del User'). + $cgi->submit(-name => 'dialog_d3user', -value => 'Really delete user'). "
" ; - return $text; + + return $dtext; } ######################################################################################## ######################################################################################## +sub d3user { +######################################################################################## + my ($duser) = @_; + my $d3text; + my $delfiles = $cgi->param('del_u_files'); + my $deldir = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $duser . "/" ; + my $pwdfile = $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}; + my $pwdin; + my $temptxt; + my $pwdfiletext; + my $uname; + + + $d3text .= + + "" . + "". + + "" . + + "
" . + "" . + "User to delete :" . + "" . + "" . + "$duser" . + "
" . + + "
" ; + + if ( ! $cgi->param('del_u_files')) { + + my $destdir = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $cfghash {'TabeaUser'} ."/" ; + my $copyfiles = &readdir($deldir); + my @copfilesarray = split(/ /,$copyfiles); + + foreach (@copfilesarray) { + + system("cp $deldir$_ $destdir$duser.$_") && die "Copy failed"; + } + } + + system("rm -rf $deldir"); + + $pwdin = IO::File->new("<$pwdfile"); + while (<$pwdin>) { + $temptxt = $_ ; + $_ =~ s|^(\w+):(.+)$|{$uname=$1}|eg; + if ($uname !~ $duser) { $pwdfiletext .= $temptxt; } + } + $pwdin->close(); + $pwdin = IO::File->new(">$pwdfile"); + print $pwdin $pwdfiletext; + $pwdin->close(); + + $d3text .= "
" . + + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + + + return $d3text; +} +######################################################################################## + + +######################################################################################## sub copy { ######################################################################################## my ($srcf, $dstf) = @_;