Index: ossp-pkg/tabea/tabea.cgi RCS File: /v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v rcsdiff -q -kk '-r1.28' '-r1.29' -u '/v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v' 2>/dev/null --- tabea.cgi 2002/06/14 14:53:08 1.28 +++ tabea.cgi 2002/06/20 15:09:05 1.29 @@ -85,6 +85,7 @@ my $dialog = $cgi->param("dialog") || ""; my $username = $cgi->param("username") || ""; my $password = $cgi->param("password") || ""; +my $akt_user = $cgi->param("akt_user") || ""; my $old_password = $cgi->param("old_password") || ""; my $new1_password = $cgi->param("new1_password") || ""; my $new2_password = $cgi->param("new2_password") || ""; @@ -92,7 +93,8 @@ my $form = ''; -for my $name (qw(mainw changepwd copyt view new copyc edit del run admin confr newf changer copy save)) { +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 )) { my $val = $cgi->param("dialog_$name") || ""; if ($val ne '') { $form = $name; @@ -148,10 +150,49 @@ $page .= &run($cgi->param('configslist') ); } elsif ($form eq 'admin' ) { - $page .= &admin($cgi->param('username') ); + if ( $cgi->param('username') eq $cfghash{'TabeaUser'}) { + $page .= &admin($cgi->param('username') ); + } else { + $page .= &chpwd($cgi->param('username') ); + } +} +elsif ($form eq 'chpwd' ) { + if ( $cgi->param('username') eq $cfghash{'TabeaUser'}) { + $page .= &chpwd($cgi->param('akt_user') ); + } else { + $page .= &chpwd($cgi->param('username') ); + } } elsif ($form eq 'changepwd' ) { - $page .= &changepwd($cgi->param('username') ); + if ( $cgi->param('username') eq $cfghash{'TabeaUser'}) { + $page .= &changepwd($cgi->param('akt_user') ); + } else { + $page .= &changepwd($cgi->param('username') ); + } +} +elsif ($form eq 'nuser' ) { + $page .= &nuser(); +} + +elsif ($form eq 'newuser' ) { + $page .= &newuser($cgi->param('akt_user')); +} +elsif ($form eq 'duser' ) { + $page .= &duser($cgi->param('akt_user') ) +} + +#elsif ($form eq 'duser' ) { +# $page .= &duser($cgi->param('akt_user') ) +#} + +elsif ($form eq 'cfgedit' ) { +# $page .= &run($cgi->param('configslist') ); +} +elsif ($form eq 'logout' ) { + $cgi->param(-name => 'username', -value => ""); + $cgi->param(-name => 'password', -value => ""); + $form = ''; + goto NEXTFORM; } else { @@ -159,6 +200,10 @@ } $page .= $cgi->hidden(-name => 'password', -default => $password); +$page .= $cgi->hidden(-name => 'username', -default => $username); + +# A special for admin section and chpw for tabea +#$page .= $cgi->hidden(-name => 'akt_user', -default => $akt_user); $page .= $cgi->endform; my $out = $MY->{TEMPLATE}; @@ -218,8 +263,15 @@ ######################################################################################## my $text = ''; - &validpassword($username, $password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}) - || print STDOUT $cgi->redirect(-uri => $cgi->url(-full => 1), -type => "text/html"); + # &validpassword($username, $password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}) + # || print STDOUT $cgi->redirect(-uri => $cgi->url(-full => 1), -type => "text/html"); + + if (! &validpassword($username, $password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}) ) { + $cgi->param(-name => 'username', -value => ""); + $cgi->param(-name => 'password', -value => ""); + $form = ''; + goto NEXTFORM; + } my $templatesfiles = &get_name_files($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, 4); my $configsfiles = &get_name_files($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, 6); @@ -234,12 +286,21 @@ $text .= # Begin with templates part + "

" . + "" . + "" . + "" . + "" . + "" . + "
" . "" . - "
Active User: $username

\n" . + "Active User: $username

\n" . "
" . + "
" . + $cgi->submit(-name => 'dialog_logout', -value => 'Logout') . + "
". "" . "
Templates
" . - " " . $cgi->scrolling_list( -name => 'templatelist', -value => [@templatesarray], @@ -302,7 +363,7 @@ "
" . " " . "" . - ""; + "" ; return $text; } @@ -340,6 +401,18 @@ ######################################################################################## +sub get_userlist { +######################################################################################## + my ($dirname) = @_; + my $ulist = &readsubdir($dirname . "/");; + + + return $ulist; +} +######################################################################################## + + +######################################################################################## sub get_own_files { ######################################################################################## my ($dirname, $user) = @_; @@ -542,7 +615,7 @@ $text .= "" . "Changing rights of file:

"; - $namefile =~ m{^([a-zA-Z0-9!"£$%^&*()-_=+#~]+)/(.+)}sg; + $namefile =~ m{^([a-zA-Z0-9!"£\$%^&*()-_=+#~]+)/(.+)}sg; if ($1 eq $username) { $text .= "" . "" . @@ -765,10 +838,59 @@ ######################################################################################## sub admin { ######################################################################################## - my $user = @_; + my ($user) = @_; my $text; + my $userlist = &get_userlist($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}); + my @userlistarray = split(/\s/, $userlist); + + + $text .= "Username: $username; User: $user"; + $text .= "
" . + "" . + "" . + "
". + $cgi->popup_menu( + -name => 'akt_user', + -value => [@userlistarray], +# -default=>'ps', +# -default => 'ps', + -default => $username, +# -default => $cfghash{'TabeaUser'} + ) . + "" . + + "" . + + "" . + "" . + "" . + "" . + "" . + "" . + + "
" . + $cgi->submit(-name => 'dialog_nuser', -value => 'New User'). + "
" . + $cgi->submit(-name => 'dialog_duser', -value => 'Del User'). + "
" . + + "
" . + + "

" . + "" . + "" . + "" . + + "
" . + $cgi->submit(-name => 'dialog_cfgedit', -value => 'Edit Configuration') . + "" . + $cgi->submit(-name => 'dialog_chpwd', -value => 'Change Password') . + "
" . + + + "

" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back') ; - $text .= &chpwd($user); return $text; @@ -779,54 +901,58 @@ ######################################################################################## sub chpwd { ######################################################################################## - my $user = @_; + my ($user) = @_; my $ctext; - $ctext .= - "" . - " " . + $ctext .= "
Aktueller User: $user
"; + $ctext .= "
" ; + if ( (($username eq $cfghash{'TabeaUser'}) && ($user eq $cfghash{'TabeaUser'}) ) + || ($username ne $cfghash{'TabeaUser'}) ) { + $ctext .= " " . " " . " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - "
Old Password:" . - "". -# $cgi->password_field( -# -name => 'old_password', -# -value => $old_password, -# -size => 20, -# -maxlength => 80 -# ) . - "
New Password:" . - $cgi->password_field( - -name => 'new1_password', - -value => $new1_password, - -size => 20, - -maxlength => 80 - ) . - "
Repeat Password:" . $cgi->password_field( - -name => 'new2_password', - -value => $new2_password, + -name => 'old_password', + -value => $old_password, -size => 20, -maxlength => 80 ) . "
" . - $cgi->reset() . - $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). - $cgi->submit(-name => 'dialog_changepwd', -value => 'Change') . - "
" ; + " " ; + } + + + $ctext .= " " . + " New Password:" . + " " . + $cgi->password_field( + -name => 'new1_password', + -value => $new1_password, + -size => 20, + -maxlength => 80 + ) . + " " . + " " . + " " . + " " . + " Repeat Password:" . + " " . + $cgi->password_field( + -name => 'new2_password', + -value => $new2_password, + -size => 20, + -maxlength => 80 + ) . + " " . + " " . + " " . + " " . + $cgi->reset() . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). + $cgi->submit(-name => 'dialog_changepwd', -value => 'Change') . + " " . + " " . + "" ; return $ctext; @@ -850,12 +976,12 @@ $valid = &validpassword($user, $old_password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}); - if ( $username =~ $cfghash{'TabeaUser'}) { - if ( $user !~ $cfghash{'TabeaUser'}) { $valid = 0; } + if ( ($username eq $cfghash{'TabeaUser'}) && ($user ne $cfghash{'TabeaUser'}) ) { + $valid = 1; } if ( !$valid ) { $cptext .= "The password is incorrect.

\n". - $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); } else { if ($new1_password eq $new2_password) { $pwdfp = IO::File->new("<$pwdfile"); @@ -871,8 +997,8 @@ $pwdfp = IO::File->new(">$pwdfile"); print $pwdfp $pwfiletext; $pwdfp->close(); - $form = 'mainw'; if ( $user =~ $username) {$password=$new1_password;} + $form = 'mainw'; goto NEXTFORM; } else { $cptext .= "The password you typed do not match. Type the same password. ". @@ -886,6 +1012,130 @@ } ######################################################################################## + +######################################################################################## +sub nuser { +######################################################################################## + my $text; + + $text .= + "Akt User: $akt_user" . + "" . + " " . + " " . + " " . + " " . + "
New User:" . + $cgi->textfield( + -name => 'akt_user', + -default => "", + -override => 1, + -size => 20, + -maxlength => 8 + ) . + "
" . + + "

" . + + "" . + + "" . + "" . + + "
" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). + "" . + $cgi->submit(-name => 'dialog_newuser', -value => 'Write User'). + "
" ; + + + return $text; +} +######################################################################################## + + +######################################################################################## +sub newuser { +######################################################################################## + my ($nuser) = @_; + my $ntext; + my $pwfile = $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}; + my $pwin; + my $pwfiletext; + + $ntext .= "Here is newuser $nuser
"; + + if ( $nuser !~ /^[A-Za-z0-9]+$/ ) { + $nuser = ""; + } + + if ( $nuser eq "" ) { + $ntext .= "" . + "
Username wrong

" . + "
" . + $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(); + + +# Checken, ob User in pw +# Checken, ob Subdir gleichen Namens existiert + +# Unterverzeichnis anlegen +# PW Eintrag machen + + } + + return $ntext; +} +######################################################################################## + +######################################################################################## +sub duser { +######################################################################################## + my ($duser) = @_; + my $text; + + + $text .= + + "" . + "". + + "" . + + + "
" . + "" . + "User to delete :" . + "" . + "" . + "$duser" . + "
" . + + "

" . + + "" . + + "" . + "" . + + "
" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). + "" . + $cgi->submit(-name => 'dialog_d2user', -value => 'Del User'). + "
" ; + + return $text; +} +######################################################################################## + ######################################################################################## sub copy {