Index: ossp-pkg/tabea/tabea.cgi RCS File: /v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v rcsdiff -q -kk '-r1.26' '-r1.27' -u '/v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v' 2>/dev/null --- tabea.cgi 2002/05/17 18:36:58 1.26 +++ tabea.cgi 2002/06/14 13:42:32 1.27 @@ -85,11 +85,14 @@ my $dialog = $cgi->param("dialog") || ""; my $username = $cgi->param("username") || ""; my $password = $cgi->param("password") || ""; +my $old_password = $cgi->param("old_password") || ""; +my $new1_password = $cgi->param("new1_password") || ""; +my $new2_password = $cgi->param("new2_password") || ""; my $filename = $cgi->param("filename") || ""; my $form = ''; -for my $name (qw(mainw copyt view new copyc edit del run confr newf changer copy save)) { +for my $name (qw(mainw changepwd copyt view new copyc edit del run admin confr newf changer copy save)) { my $val = $cgi->param("dialog_$name") || ""; if ($val ne '') { $form = $name; @@ -144,6 +147,13 @@ elsif ($form eq 'run' ) { $page .= &run($cgi->param('configslist') ); } +elsif ($form eq 'admin' ) { + $page .= &admin($cgi->param('username') ); +} +elsif ($form eq 'changepwd' ) { + $page .= &changepwd($cgi->param('username') ); +} + else { die "no correct dialog found"; } @@ -263,7 +273,7 @@ $cgi->scrolling_list( -name => 'configslist', -value => [@configsarray], - -size => 10 + -size => 12 ) . " " . " " . @@ -286,6 +296,9 @@ " " . $cgi->submit(-name => 'dialog_run', -value => 'Run') . " " . + " " . + $cgi->submit(-name => 'dialog_admin', -value => 'Admin') . + " " . " " . " " . "" . @@ -748,6 +761,128 @@ } ######################################################################################## + +######################################################################################## +sub admin { +######################################################################################## + my $user = @_; + my $text; + + $text .= &chpwd($user); + + + return $text; +} +######################################################################################## + + +######################################################################################## +sub chpwd { +######################################################################################## + my $user = @_; + my $ctext; + + $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, + -size => 20, + -maxlength => 80 + ) . + "
" . + $cgi->reset() . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). + $cgi->submit(-name => 'dialog_changepwd', -value => 'Change') . + "
" ; + + return $ctext; + +} +######################################################################################## + + +######################################################################################## +sub changepwd { +######################################################################################## + my ($user) = @_; + my $cptext; + my $valid; + my $uname; + my $pwd; + my $pwdfp; + my $pwdfile = $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}; + my $pwfiletext; + my @pwarray; + my $akt_u_p; + + + $valid = &validpassword($user, $old_password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}); + if ( $user !~ $cfghash{'TabeaUser'}) { $valid = 1; } + if ( !$valid ) { + $cptext .= "The password is incorrect.

\n". + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + } else { + if ($new1_password eq $new2_password) { + $pwdfp = IO::File->new("<$pwdfile"); + $pwfiletext .= $_ while (<$pwdfp>); + @pwarray = split(/\s/, $pwfiletext); + foreach (@pwarray) { + $akt_u_p = $_; + $akt_u_p =~ s|^(\w+):(.+)$|{$uname=$1; $pwd=$2}|eg; + ( $uname =~ $user ) && do { $_ = $username .":". crypt($new1_password, $pwd); } + } + $pwdfp->close(); + $pwfiletext = join("\n", @pwarray); + $pwdfp = IO::File->new(">$pwdfile"); + print $pwdfp $pwfiletext; + $pwdfp->close(); + $form = 'mainw'; + if ( $user =~ $username) {$password=$new1_password;} + goto NEXTFORM; + } else { + $cptext .= "The password you typed do not match. Type the same password. ". + "in both boxes

\n". + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + } + } + + return $cptext; +} +######################################################################################## + ######################################################################################## sub copy {