OSSP CVS Repository

ossp - Difference in ossp-pkg/tabea/tabea.cgi versions 1.16 and 1.17
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/tabea/tabea.cgi 1.16 -> 1.17

--- tabea.cgi    2002/05/14 15:34:02     1.16
+++ tabea.cgi    2002/05/15 11:47:41     1.17
@@ -27,6 +27,7 @@
 ##
 ##  tabea.cgi: Tabea CGI (syntax: Perl)
 ##
+##
 
 require 5.000;
 use strict;
@@ -40,7 +41,6 @@
 
 my $pwdfile = "./tabea.pw";
 my $configsdir = "./tabea.d";
-#my $tabeauser = "tabea";
 
 
 # establish my configuration
@@ -56,7 +56,7 @@
 
 #   activate a general error handler
 $SIG{__DIE__} = sub {
-    my ($err) = @_;
+    my ($err) = @@_;
 
     #$err =~ s|at\s+\S+\s+line\s+(\d+)|(line $1)|s;
     $err =~ s|\n|<br>\n|sg;
@@ -68,12 +68,11 @@
 };
 
 
-
 #   update cookies
 my $cookies = [];
 foreach my $param (qw(username)) { # FIXME!
     if ($cgi->param($param) ne '' and ($cgi->param($param) ne $cgi->cookie($param))) {
-        push(@{$cookies}, $cgi->cookie(
+        push(@@{$cookies}, $cgi->cookie(
              -name    => $param,
              -value   => $cgi->param($param),
              -expires => '+1d',
@@ -91,10 +90,12 @@
 
 #print "Test: $cfghash{'TabeaUser'}\n";
 
+
 #   fetch parameters
 my $dialog   = $cgi->param("dialog")   || "";
 my $username = $cgi->param("username") || "";
 my $password = $cgi->param("password") || "";
+my $filename = $cgi->param("filename") || "";
 
 my $page = '';
 
@@ -153,8 +154,8 @@
     $templatesfiles = &strsort($templatesfiles);
     $configsfiles = &strsort($configsfiles);
     
-    my @templatesarray = split(/ /,$templatesfiles);
-    my @configsarray = split(/ /,$configsfiles);
+    my @@templatesarray = split(/ /,$templatesfiles);
+    my @@configsarray = split(/ /,$configsfiles);
     
     
 #
@@ -169,7 +170,7 @@
         "    <td>" .
         $cgi->scrolling_list(
             -name => 'templatelist',
-            -value => [@templatesarray],
+            -value => [@@templatesarray],
             -size => 3
         ) .
         "   </td>" .
@@ -200,7 +201,7 @@
         "    <td>" .
         $cgi->scrolling_list(
             -name => 'configslist',
-            -value => [@configsarray],
+            -value => [@@configsarray],
             -size => 10
         ) .
         "   </td>" .
@@ -258,11 +259,23 @@
     $page .= &newfile($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, $cgi->param('newfile'), $cgi->param('new_rights'));
     $page .= $cgi->endform;
 }
-
-else {
-    die "invalid dialog \"$dialog\"";
+elsif ($dialog eq 'Config_rights') {
+    $page .= $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1));
+    my $configfile;        
+    if (! defined $cgi->param('configslist') ) {
+        $configfile = '';
+    } else {
+        $configfile = $cgi->param('configslist');
+    }
+    $page .= &config_rights($configfile, $username);
+   # $page .= "Returnvalue: " . $cgi->param('filename') . "<br>";
+    $page .= $cgi->endform;
+}
+elsif ($dialog eq 'Change_rights') {
+    $page .= $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1));
+    $page .= &change_rights($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" .  $cgi->param('filename'), $cgi->param('changerights') );
+    $page .= $cgi->endform;
 }
-
 } else {
     die "no configuration found";
 }
@@ -279,22 +292,22 @@
 ########################################################################################
 sub get_name_files {
 ########################################################################################
-    my ($dirname, $user, $rights) = @_;
+    my ($dirname, $user, $rights) = @@_;
     my $filel = '';
-    my @filelarray;
+    my @@filelarray;
     my $filelist = '';
     my $subdir = '';
     my $filemode = '';
     my $entry = '';
 
     my $dirlist = &readsubdir($dirname . "/" );    
-    my @dirarray =  split (/ /, $dirlist);
+    my @@dirarray =  split (/ /, $dirlist);
 
-    DIR: foreach $subdir (@dirarray)  {
+    DIR: foreach $subdir (@@dirarray)  {
         next DIR if $subdir eq $user;
         $filel = &readdir($dirname . "/" . $subdir . "/") ;
-        @filelarray = split (/ /, $filel);
-        FILE: foreach $entry (@filelarray) {
+        @@filelarray = split (/ /, $filel);
+        FILE: foreach $entry (@@filelarray) {
             my $path = $dirname . "/" . $subdir . "/" . $entry;
             next FILE if  (((stat($dirname . "/" . $subdir . "/" . $entry))[2]) & 07)  !=  $rights;
             $filelist .= $subdir . "/" . $entry . " ";
@@ -309,14 +322,14 @@
 ########################################################################################
 sub get_own_files {
 ########################################################################################
-    my ($dirname, $user) = @_;
+    my ($dirname, $user) = @@_;
     my $filelist = '';
     my $entry = '';
 
     my $flist = &readdir($dirname . "/" . $user . "/");
-    my @flistarray = split (/ /,$flist);
+    my @@flistarray = split (/ /,$flist);
 
-    foreach $entry (@flistarray) {
+    foreach $entry (@@flistarray) {
         $filelist .= $user . "/" . $entry . " ";
     }
 
@@ -328,7 +341,7 @@
 ########################################################################################
 sub edit {
 ########################################################################################
-    my ($file) = @_;
+    my ($file) = @@_;
     my $text;
     #   enter Edit form
     if($file) {
@@ -336,7 +349,7 @@
         &editconfig($filename, 'w', $username);
     } else {
         $text = $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)) .
-        "<font color=red>Missing filename<br><br>\n" .
+        "<font color=red>Missing iilename<br><br>\n" .
         $cgi->submit(-name => 'dialog', -value => 'Back') .
         $cgi->endform;
     }
@@ -348,7 +361,7 @@
 ########################################################################################
 sub view {
 ########################################################################################
-    my ($file) = @_; 
+    my ($file) = @@_; 
     my $text;
     
     if ($file) {
@@ -368,8 +381,8 @@
 #########################################################################################
 sub new {
 ########################################################################################
-    my ( $dirname, $user ) = @_;
-    my $text;
+    my ( $dirname, $user ) = @@_;
+    my $text = '';
 
     $text= "<font size=+2>" .
     "New File:<br><br>\n" .
@@ -416,11 +429,12 @@
 
     return $text;
 }
+
 ########################################################################################
 sub newfile {
 ########################################################################################
-    my ( $dirname, $user, $newfilename, $newrights ) = @_;
-    my $text;
+    my ( $dirname, $user, $newfilename, $newrights ) = @@_;
+    my $text = '';
     my $newpath = $dirname . "/" . $user . "/" . $newfilename;
     my $filerights = '';
 
@@ -451,11 +465,105 @@
 ########################################################################################
 
 
+
+########################################################################################
+sub config_rights {
+########################################################################################
+    my ( $namefile, $user ) = @@_; 
+    my $text = '';
+    my $defaultright = '';
+    my $filerights = stat( (($namefile)[2]) & 07 );
+    my $fnamehash ={ -name => 'filename',
+          -default => $namefile,
+          -size => 20,
+          -maxlength => 30
+    };
+    $fnamehash->{readonly}="";
+    
+#    $text .= $cgi->hidden(-name => 'filename', -default => ['xxx', 'xxx2'] ) ;
+    if ( $filerights == 6 ) {
+        $defaultright = "public" ;     
+    } elsif ( $filerights == 4 ) {
+        $defaultright = "protected" ;
+    } else {
+        $defaultright = "private" ;
+    }
+
+    $text= "<font size=+2>" .
+    "Changing rights of file:<br><br>" ;
+    
+    if ($namefile ne '') {
+        $namefile =~ m{^([a-zA-Z0-9!"£$%^&*()-_=+#~]+)/(.+)}sg;
+        if ($1 eq $user) {
+            $text .= "<table>" .
+            "<tr>" .
+            " <td>" . 
+            $cgi->textfield($fnamehash). 
+            " </td>" .
+            " <td>" . 
+            $cgi->scrolling_list(
+                -name => 'changerights',
+                -value => ['private', 'protected', 'public'],
+                -default => $defaultright,
+                -size => 1
+            ) .
+            " </td>" .
+            "</tr>" .
+            "</table>" .
+            "<br><br>" .
+            $cgi->submit(-name => 'dialog', -value => 'Back') .
+            $cgi->submit(-name => 'dialog', -value => 'Change_rights');
+        } else {
+            $text .= "<font color=red>You can only change file rights in your directory<br><br>\n" .
+            $cgi->submit(-name => 'dialog', -value => 'Back');
+        }
+    } else {
+
+        $text .= "<font color=red>Missing filename<br><br>\n" .
+        $cgi->submit(-name => 'dialog', -value => 'Back');
+    }
+
+   return $text;
+}
+########################################################################################
+
+
+########################################################################################
+sub change_rights {
+########################################################################################
+    my ( $filename, $newrights ) = @@_;
+    my $text = '';
+    my $filerights = '';
+
+    $text= "<font size=+2>" .
+    "Changing rights of file:<br>" .
+    "</font>" .
+   "<br><font size=+1> $filename </font> to <font size=+1> $newrights </font><br>";
+    if ($newrights eq "private" ) {
+           $filerights = '';
+    } elsif ($newrights eq "protected" ) {
+           $filerights = "r";
+    } elsif ($newrights eq "public" ) {
+           $filerights = "rw";
+    } else {
+           die "Unknown file rights";
+    }
+#    $text .= "Name : $filename<br>Rights: $filerights<br>" ;
+    system("chmod o=$filerights $filename") && die "Cannot set new file rights";
+    $text .= "<br>Done.<br><br>" .
+    $cgi->submit(-name => 'dialog', -value => 'Back');
+
+    return $text;
+}
+########################################################################################
+
+
+
 ########################################################################################
 sub read_config {
 ########################################################################################
 
-my ($cfgfile) = @_;   
+my ($cfgfile) = @@_;   
 my %cfghash ;
 my $cfgin ;
 my $key;
@@ -493,7 +601,7 @@
 ########################################################################################
 sub validpassword {
 ########################################################################################
-    my ($username, $password) = @_;
+    my ($user, $password) = @@_;
 
     my $returnvalue = 0;
     my $uname;
@@ -504,7 +612,7 @@
     if(defined $pwdin) {
         while(<$pwdin>) {
             $_ =~ s|^(\w+):(.+)$|{$uname=$1; $pwd=$2}|eg;
-            ( $uname =~ $username ) && do {     # check the password
+            ( $uname =~ $user ) && do {     # check the password
                 if (crypt($password, $pwd) eq $pwd){
                     $returnvalue = 1;
                 }
@@ -522,7 +630,7 @@
 ########################################################################################
 sub readsubdir {
 ########################################################################################
-    my ( $dir ) = @_;
+    my ( $dir ) = @@_;
     my $filestring = "";
     my $direntry = "";
 
@@ -547,7 +655,7 @@
 ########################################################################################
 sub readdir {
 ########################################################################################
-    my ( $dir ) = @_;
+    my ( $dir ) = @@_;
     my $filestring = "";
     my $direntry = "";
 
@@ -571,12 +679,12 @@
 ########################################################################################
 sub strsort {
 ########################################################################################
-    my ( $sortstr ) = @_;
+    my ( $sortstr ) = @@_;
 
-    my @sortarray = split (/ /, $sortstr);
+    my @@sortarray = split (/ /, $sortstr);
      
-    @sortarray = reverse sort {$b cmp $a} @sortarray;
-    $sortstr = join(" ", @sortarray);
+    @@sortarray = reverse sort {$b cmp $a} @@sortarray;
+    $sortstr = join(" ", @@sortarray);
 
     return $sortstr;
 }
@@ -589,7 +697,7 @@
 ########################################################################################
 sub editconfig {
 ########################################################################################
-    my ($file, $mode, $user) = @_;
+    my ($file, $mode, $user) = @@_;
     my $text = '';
     my $filein ;
     my $readonly ;

CVSTrac 2.0.1