Index: ossp-pkg/tabea/tabea.cgi RCS File: /v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v rcsdiff -q -kk '-r1.22' '-r1.23' -u '/v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v' 2>/dev/null --- tabea.cgi 2002/05/17 08:09:07 1.22 +++ tabea.cgi 2002/05/17 13:00:04 1.23 @@ -36,6 +36,7 @@ $|++; + my $cfgfile = "./tabea.cfg"; my $pwdfile = "./tabea.pw"; my $configsdir = "./tabea.d"; @@ -99,15 +100,77 @@ $form = $name; } } - + +NEXTFORM: my $page = $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)); -#if ($dialog eq "") { if ($form eq '') { -# if ($form eq "mainw") { -# $page .= "Form new is login

"; -# } - $page .= + $page .= &login(); +} +elsif ($form eq 'mainw') { + $page .= mainw(); +} +elsif ($form eq 'edit') { + $page .= &edit($cgi->param('configslist')); +} +elsif ($form eq 'save') { + $page .= &save($cgi->param('editfile'), $cgi->param('editwindow')); +} +elsif ($form eq 'view') { + $page .= &view($cgi->param('templatelist')); +} +elsif ($form eq 'new') { + $page .= &new($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username); +} +elsif ($form eq 'newf') { + $page .= &newfile($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, $cgi->param('newfile'), + $cgi->param('new_rights')); +} +elsif ($form eq 'confr') { + $page .= &config_rights($cgi->param('configslist')); +} +elsif ($form eq 'changer') { + $page .= &change_rights($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $cgi->param('filename'), + $cgi->param('changerights') ); +} +elsif ($form eq 'copyt') { + $page .= ©_file($cgi->param('templatelist') ); +} +elsif ($form eq 'copyc') { + $page .= ©_file($cgi->param('configslist')); +} +elsif ($form eq 'copy' ) { + $page .= ©($cgi->param('srcfile'), $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . + $username . "/". $cgi->param('dstfile')); +} +elsif ($form eq 'del' ) { + $page .= &del($cgi->param('configslist')); +} +elsif ($form eq 'run' ) { + $page .= &run($cgi->param('configslist') ); +} +else { + die "no correct dialog found"; +} + +$page .= $cgi->hidden(-name => 'password', -default => $password ) ; +$page .= $cgi->endform; + +my $out = $MY->{TEMPLATE}; +$out =~ s|%%BODY%%|$page|s; +$out =~ s|%%TITLE%%|Test|s; + +print $cgi->header(-cookie => $cookies, -expires => '+1s') . $out; + +exit (0); +############### End of main part ####################################################### + +######################################################################################## +sub login{ +######################################################################################## + my $text = ''; + + $text .= "" . " " . " " . @@ -138,11 +201,17 @@ " " . " " . "
Username:
" ; + + return $text; } -#elsif (($dialog eq 'login') || ($dialog eq 'Back')) { -elsif ($form eq 'mainw') { - # enter Select form - +######################################################################################## + + +######################################################################################## +sub mainw { +######################################################################################## + my $text = ''; + &validpassword($username, $password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}) || print STDOUT $cgi->redirect(-uri => $cgi->url(-full => 1), -type => "text/html"); @@ -157,8 +226,7 @@ my @templatesarray = split(/ /,$templatesfiles); my @configsarray = split(/ /,$configsfiles); - $page .= - $cgi->hidden(-name => 'password', -default => $password ) . + $text .= # Begin with templates part "" . "
Active User: $username

\n" . @@ -226,86 +294,10 @@ " " . "" . "" ; -} -elsif ($form eq 'edit') { - # enter Edit form - $page .= &edit($cgi->param('configslist')); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; - -} -elsif ($form eq 'save') { - # enter save form - $page .= "
" . $cgi->param('editfile') . "
" ; - $page .= &save($cgi->param('editfile'), $cgi->param('editwindow')); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -elsif ($form eq 'view') { - # enter View form - $page .= &view($cgi->param('templatelist')); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -elsif ($form eq 'new') { - $page .= &new($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -#elsif ($dialog eq 'New_file') { -elsif ($form eq 'newf') { - $page .= &newfile($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, $cgi->param('newfile'), - $cgi->param('new_rights')); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -#elsif ($dialog eq 'Config_rights') { -elsif ($form eq 'confr') { - my $configfile; - if (! defined $cgi->param('configslist') ) { - $configfile = ''; - } else { - $configfile = $cgi->param('configslist'); - } - $page .= &config_rights($configfile, $username); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -#elsif ($dialog eq 'Change_rights') { -elsif ($form eq 'changer') { - $page .= &change_rights($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $cgi->param('filename'), - $cgi->param('changerights') ); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -#elsif ($dialog eq 'Copy_Temp') { -elsif ($form eq 'copyt') { - $page .= ©_file($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" .$cgi->param('templatelist'), $username ); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -#elsif ($dialog eq 'Copy_Conf') { -elsif ($form eq 'copyc') { - $page .= ©_file($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" .$cgi->param('configslist'), $username ); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -elsif ($form eq 'copy' ) { - $page .= ©($cgi->param('srcfile'), $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $username . "/". $cgi->param('dstfile')); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -elsif ($form eq 'del' ) { - $page .= &del($cgi->param('configslist'), $username ); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -elsif ($form eq 'run' ) { - $page .= &run($cgi->param('configslist') ); - $page .= $cgi->hidden(-name => 'password', -default => $password ) ; -} -else { - die "no correct dialog found"; -} - -$page .= $cgi->endform; - -my $out = $MY->{TEMPLATE}; -$out =~ s|%%BODY%%|$page|s; -$out =~ s|%%TITLE%%|Test|s; - -print $cgi->header(-cookie => $cookies, -expires => '+1s') . $out; -exit (0); + return $text; +} +######################################################################################## ######################################################################################## @@ -393,6 +385,8 @@ if (defined $fileout) { print $fileout $edittext; $fileout->close; + $form = 'mainw'; + goto NEXTFORM; } else { $text .= "Cannot save file

\n" ; } @@ -503,8 +497,10 @@ system("chmod u=rw $newpath") && die "Cannot set new file rights"; system("chmod o=$filerights $newpath") && die "Cannot set new file rights"; $text .= "


" ; + $form = 'mainw'; + goto NEXTFORM; } else { - $text .= "Cannot write file. It exists

\n" ; + $text .= "Cannot write file. File exists

\n" ; } $text .= $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); @@ -516,26 +512,28 @@ ######################################################################################## sub config_rights { ######################################################################################## - my ( $namefile, $user ) = @_; + my ( $namefile ) = @_; my $text = ''; my $defaultright = ''; - my $filerights = (stat($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $namefile))[2] & 07; - - $text .= $cgi->hidden(-name => 'filename', -default => $namefile ) ; - if ( $filerights == 6 ) { - $defaultright = "public" ; - } elsif ( $filerights == 4 ) { - $defaultright = "protected" ; - } else { - $defaultright = "private" ; - } - - $text .= "" . - "Changing rights of file:

" ; + my $confname = ''; + my $filerights = (stat($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $namefile))[2] & 07; + + if ($namefile ne '') { + if ( $filerights == 6 ) { + $defaultright = "public" ; + } elsif ( $filerights == 4 ) { + $defaultright = "protected" ; + } else { + $defaultright = "private" ; + } + + $text .= "" . + "Changing rights of file:

" ; + $namefile =~ m{^([a-zA-Z0-9!"£$%^&*()-_=+#~]+)/(.+)}sg; - if ($1 eq $user) { + if ($1 eq $username) { $text .= "" . "" . "
" . @@ -554,6 +552,8 @@ "

" . $cgi->submit(-name => 'dialog_mainw', -value => 'Back') . $cgi->submit(-name => 'dialog_changer', -value => 'Set_rights'); + $confname = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $namefile; + $text .= $cgi->hidden(-name => 'filename', -default => $namefile ) ; } else { $text .= "You can only change file rights in your own directory

\n" . $cgi->submit(-name => 'dialog', -value => 'Back'); @@ -589,8 +589,8 @@ die "Unknown file rights"; } system("chmod o=$filerights $filename") && die "Cannot set new file rights"; - $text .= "
Done.

" . - $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + $form = 'mainw'; + goto NEXTFORM; return $text; } @@ -600,48 +600,59 @@ ######################################################################################## sub copy_file { ######################################################################################## - my ( $srcfile, $user ) = @_; + my ( $filename ) = @_; my $text = ''; - $text .= $cgi->hidden(-name => 'srcfile', -default => $srcfile ) . - "" . - "Copying File:
" . - "
" . - "

" . - "Active user: $user
" . - "" . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - " " . - "
Sourcefile :Destinationfile
$srcfile" . - " " . - " " . - " " . - " " . - " " . - "
" . $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $user . "/" . - $cgi->textfield(-name=>'dstfile', - -default=>'', - -size=>30, - -maxlength=>80) . - "
" . - "
" . - "

" . - "" . - " " . - " " . - " " . - "
" . - " " . - $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). - " " . - $cgi->submit(-name => 'dialog_copy', -value => 'Copy'). - "
" ; + + + if ($filename) { + my $srcfile = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $filename; + $text .= $cgi->hidden(-name => 'srcfile', -default => $srcfile ) . + "" . + "Copying File:
" . + "
" . + "

" . + "Active user: $username
" . + "
" . + "" . + " " . + " " . + " " . + " " . + " " . + " " . + " " . + " " . + "
Sourcefile :Destinationfile
$srcfile" . + " " . + " " . + " " . + " " . + " " . + "
" . $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $username . "/" . + $cgi->textfield( + -name=>'dstfile', + -default=>'', + -size=>30, + -maxlength=>80 + ) . + "
" . + "
" . + "

" . + "" . + " " . + " " . + " " . + "
" . + " " . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back'). + " " . + $cgi->submit(-name => 'dialog_copy', -value => 'Copy'). + "
" ; + } else { + $text .= "Missing filename

\n" . + $cgi->submit(-name => 'dialog_mainw', -value => 'Back') ; + } return $text; } @@ -651,23 +662,31 @@ ######################################################################################## sub del { ######################################################################################## - my ( $delfile, $user ) = @_; + my ( $delfile ) = @_; my $text = ''; - my $fpath = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $delfile; - $text= "" . - "Delete File: $fpath

\n" . - "
" . - "

" ; - $delfile =~ m{^([a-zA-Z0-9!"$%^&*()-_=+#~]+)/(.+)}sg; - if ( $1 eq $user ) { + if ($delfile) { + my $fpath = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $delfile; + + $text= "" . + "Delete File: $fpath

\n" . + "
" . + "

" ; + $delfile =~ m{^([a-zA-Z0-9!"$%^&*()-_=+#~]+)/(.+)}sg; + if ( $1 eq $username ) { system("rm $fpath") && die "Cannot delete file"; + $form = 'mainw'; + goto NEXTFORM; + } else { + $text .= "You can only delete file in your own directory

\n" ; + } } else { - $text .= "You can only delete file in your own directory

\n" ; + $text .= "Missing filename

\n" ; } - - $text .= $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); + + $text .= $cgi->submit(-name => 'dialog_mainw', -value => 'Back') ; + return $text; } ######################################################################################## @@ -742,8 +761,9 @@ system("cp $srcf $dstf") && die "Cannot copy file"; system("chmod o= $dstf") && die "Cannot change file rights"; - $text .= $cgi->submit(-name => 'dialog_mainw', -value => 'Back'); - + $form = 'mainw'; + goto NEXTFORM; + return $text; } ########################################################################################