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 .= + + "
" . + +# $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'); + } + + + return $text; +} +######################################################################################## + + + +######################################################################################## +sub d2user { +######################################################################################## + my ($duser) = @_; + my $dtext; + + $dtext .= "
" . + "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 .= " " . + "
" ; + + 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) = @_; |