Diff for /loncom/cgi/decompress.pl between versions 1.6 and 1.8

version 1.6, 2003/11/18 04:07:49 version 1.8, 2003/11/19 15:07:25
Line 1 Line 1
 #!/usr/bin/perl  #!/usr/bin/perl
 #  #
 #   #
 # Copyright Michigan State University Board of Trustees  # Copyright Michigan State University Board of Trustees
 #    # $Id
 #  #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).  # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
 #  #
Line 29 Line 29
 # A CGI script that decompresses compressed files for mass uploading into  # A CGI script that decompresses compressed files for mass uploading into
 # construction space  # construction space
 ####  ####
   use strict;
 #Things still todo,   
 #It has been tabinated  
 #Now uses strict! with added feature of making everything very strict!  
 #about 50% through rewriting things to use split and join  
 #still have a lot of debugging statements that will go away after I get it to work ok(along with all the <br>'s)  
 #still have to rewrite the refresh tag to work right, its broken  
 #the whole thing is broken right now  
 #will rename the variables and reorder most of the script to make it more sane  
 #improve the general readability of the whole thing, because unlike C everyone gets to look at it, so it has to be readable  
 #will get to it tommorrow night as I have a calc test to "pass" yea, or something like that :0)  
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
 use LONCAPA::Configuration;  use LONCAPA::loncgi ();
 use LONCAPA::loncgi();  if(! &LONCAPA::loncgi::check_cookie_and_load_env())
 use Apache::lonnet;  {
 use strict;   
   
 if(! &LONCAPA::loncgi::check_cookie_and_load_env()){  
     print "Content-type: text/html\n\n";      print "Content-type: text/html\n\n";
     print <<END;      print <<END;
  <html><body>NO COOKIE!</body></html>      <html><body>NO COOKIE!</body></html>
   END
   }
   else
   {
       print "Content-type: text/html\n\n";
       if(! $ENV{'cgi.file'} || ! $ENV{'cgi.dir'})
       {
           print <<END;
           <html><body>Bad Enviroment!</body></html>
 END  END
 } else {my $username;      }
     print "Content-type: text/html\n\n";      else
  print "<html><head></head><body>";      {
  my $path = $ENV{'cgi.path'};          print <<END;
  $path =~ m|/{1}|;   <html><body><b>Output of decompress:</b><br /><br />
  $path = $'; #' stupid emacs  END
  $path =~ m|/{1}|;          chdir $ENV{'cgi.dir'};
  $path = $';          if ($ENV{'cgi.file'} =~ m|zip|)
  my (@right) = split(/\./,$ENV{'request.role'});          {
  my $role = shift(@right);              open(OUTPUT, "unzip $ENV{'cgi.file'} 2> /dev/null |");
  my $temp = shift(@right);              while (<OUTPUT>)
  my (@left) = split(/\/+/,$temp);;              {
  shift(@left);                  print "$_<br />";
  shift(@left);              }
  $temp = shift(@left);              close(TRACE);
  print "temp: $temp";          }
  my $path2 = "/home/$username/public_html/";          elsif ($ENV{'cgi.file'} =~ m|tar.gz|)
  $path2 .=$path;          {
  my $back_path = "";              open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |");
  while($path =~ m|/|) {              while (<OUTPUT>)
     $back_path .= $`;              {
     $back_path .= "/";                  print "$_<br />";
     $path = $'; #' stupid emacs              }
  }              close(TRACE);
  $path .= '/';          }
  $path .= $back_path;          elsif ($ENV{'cgi.file'} =~ m|tar.bz2|)
  print "<br>path: $path<br>";          {
  print "back_path: $back_path <br>";              open(OUTPUT, "tar -jxpvf $ENV{'cgi.file'} 2> /dev/null |");
  print "path2: $path2 <br>";              while (<OUTPUT>)
  print "$path2<br>";              {
  if ( -r $path2){                  print "$_<br />";
  print "Good read access is allowed";              }
  print "<br><br>";              close(TRACE);
  print "<br><br>right: $role";          }
  my $filename = $ENV{'cgi.file'};          elsif ($ENV{'cgi.file'} =~ m|bz2|)
  if($role eq "ca" || $role eq "au") {          {
  chdir $path;              open(OUTPUT, "bunzip2 $ENV{'cgi.file'} 2> /dev/null |");
  if      ($filename =~ m|zip|) {              while (<OUTPUT>)
     system "unzip -qq $path2 &> /dev/null";              {
  } elsif ($filename =~ m|tar.gz|) {                  print "$_<br />";
     system "tar -zxpvf $path2 &> /dev/null";              }
  } elsif ($filename =~ m|tar.bz2|){              close(TRACE);
    system "tar -jxpvf $path2 &> /dev/null";          }
  } elsif ($filename =~ m|bz2|){          elsif ($ENV{'cgi.file'} =~ m|tgz|)
     system "bunzip2 $path2 &> /dev/null";          {
  } elsif ($filename =~ m|tgz|){              open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |");
     system "tar -zxpvf $path2 &> /dev/null";              while (<OUTPUT>)
  } elsif ($filename =~ m|gz|){              {
     system "gunzip $path2 &> /dev/null";                  print "$_<br />";
  } elsif ($filename =~ m|tar|){              }
     system "tar -xpvf $path2 &> /dev/null";              close(TRACE);
  }          }
  }           elsif ($ENV{'cgi.file'} =~ m|gz|)
  else {print "You don't have proper privledges";}          {
  }              open(OUTPUT, "gunzip $ENV{'cgi.file'} 2> /dev/null |");
  else { print "Read access not allowed!"; }              while (<OUTPUT>)
  #print '<meta http-equiv="refresh" content="0; URL=';              {
  #print "http://$ENV{'SERVER_NAME'}/~$username'}/$back_path"; print '" />';                  print "$_<br />";
  print '</body></html>';              }
  &Apache::lonnet::delenv('cgi.file');              close(TRACE);
  &Apache::lonnet::delenv('cgi.path');          }
           elsif ($ENV{'cgi.file'} =~ m|tar|)
           {
               open(OUTPUT, "tar -xpvf $ENV{'cgi.file'} 2> /dev/null |");
               while (<OUTPUT>)
               {
                   print "$_<br />";
               }
               close(TRACE);
           }
           else
           {
               print "There has been an error in determining the file type of $ENV{'cgi.file'}, please check name";
           }
           print "<br /><b>Decompress complete!</b><br /></body></html>";
       }
 }  }
   

Removed from v.1.6  
changed lines
  Added in v.1.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>