Diff for /loncom/cgi/decompress.pl between versions 1.7 and 1.17

version 1.7, 2003/11/19 14:58:14 version 1.17, 2008/11/28 20:42:20
Line 2 Line 2
 #  #
 #  #
 # 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
 ####  ####
   
 #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  
 use strict;  use strict;
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
 use LONCAPA::loncgi ();  use Apache::lonnet;
 if(! &LONCAPA::loncgi::check_cookie_and_load_env())  use Apache::lonlocal;
 {  use LONCAPA::loncgi;
     print "Content-type: text/html\n\n";  
     print <<END;  my %location_of;
     <html><body>NO COOKIE!</body></html>  foreach my $program ('tar','gunzip','bunzip2','unzip') {
 END      foreach my $dir ('/bin/','/usr/bin/','/usr/local/bin/','/sbin/',
        '/usr/sbin/') {
    if (-x $dir.$program) {
       $location_of{$program} = $dir.$program;
    }
       }
 }  }
 else  
 {  print("Content-type: text/html\n\n");
     print "Content-type: text/html\n\n";  
     if(! $ENV{'cgi.file'} || ! $ENV{'cgi.dir'})  if (!&LONCAPA::loncgi::check_cookie_and_load_env()) {
     {      &Apache::lonlocal::get_language_handle();
         print <<END;      print(&LONCAPA::loncgi::missing_cookie_msg());
         <html><body>Bad Enviroment!</body></html>  } else {
       &Apache::lonlocal::get_language_handle();
       my %lt = &Apache::lonlocal::texthash (
                                               bade => 'Bad Environment!',
                                               outo => 'Output of decompress:',
                                               comp => 'Decompress complete.', 
                                               erro => 'An error occurred',
                                            );
       my $file=$Apache::lonnet::env{'cgi.file'};
       my $dir=$Apache::lonnet::env{'cgi.dir'}; 
       if(! $file || ! $dir) {
           print(<<END);
           <html><body><span class="LC_error">$lt{'bade'}</span></body></html>
 END  END
     }      } else {
     else          print(<<END);
     {   <html><body><p><b>$lt{'outo'}</b></p>
         print <<END;  
  <html><body><b>Output of decompress:</b><br /><br />  
 END  END
         chdir $ENV{'cgi.dir'};          chdir($dir);
         if ($ENV{'cgi.file'} =~ m|zip|)   my @cmd;
         {          if ($file =~ m|\.zip$|) {
             open(OUTPUT, "unzip $ENV{'cgi.file'} 2> /dev/null |");              @cmd = ($location_of{'unzip'},"-o");
             while (<OUTPUT>)          } elsif ($file =~ m|\.tar\.gz$|
             {   || $file =~ m|\.tgz$| ) {
                 print "$_<br />";              @cmd = ($location_of{'tar'},"-zxpvf");
             }          } elsif ($file =~ m|\.tar\.bz2$|) {
             close(TRACE);              @cmd = ($location_of{'tar'},"-jxpvf");
         }          } elsif ($file =~ m|\.bz2$|) {
         elsif ($ENV{'cgi.file'} =~ m|tar.gz|)              @cmd = ($location_of{'bunzip2'});
         {          } elsif ($file =~ m|\.gz$|) {
             open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |");      @cmd = ($location_of{'gunzip'});
             while (<OUTPUT>)          } elsif ($file =~ m|\.tar$|) {
             {              @cmd = ($location_of{'tar'},"-xpvf");
                 print "$_<br />";          } else {
             }              print('<span class="LC_error">'.&Apache::lonlocal::mt('There has been an error in determining the file type of [_1], please check the name',$file).'</span>');
             close(TRACE);          }
         }   if (@cmd) {
         elsif ($ENV{'cgi.file'} =~ m|tar.bz2|)      undef($!);
         {      undef($@);
             open(OUTPUT, "tar -jxpvf $ENV{'cgi.file'} 2> /dev/null |");      open(OUTPUT,"-|", @cmd, $file);
             while (<OUTPUT>)      while (my $line = <OUTPUT>) { print("$line<br />"); }
             {      close(OUTPUT);
                 print "$_<br />";      print("<p><b>$lt{'comp'}</b></p>");
             }      if ($! || $@) {
             close(TRACE);   print('<p><span class="LC_error">'.$lt{'erro'}.'<br />'.$!.'<br />'.$@.'</span></p>');
         }      }
         elsif ($ENV{'cgi.file'} =~ m|bz2|)   }
         {          print('</body></html>');
             open(OUTPUT, "bunzip2 $ENV{'cgi.file'} 2> /dev/null |");  
             while (<OUTPUT>)  
             {  
                 print "$_<br />";  
             }  
             close(TRACE);  
         }  
         elsif ($ENV{'cgi.file'} =~ m|tgz|)  
         {  
             open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |");  
             while (<OUTPUT>)  
             {  
                 print "$_<br />";  
             }  
             close(TRACE);  
         }  
         elsif ($ENV{'cgi.file'} =~ m|gz|)  
         {  
             open(OUTPUT, "gunzip $ENV{'cgi.file'} 2> /dev/null |");  
             while (<OUTPUT>)  
             {  
                 print "$_<br />";  
             }  
             close(TRACE);  
         }  
         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.7  
changed lines
  Added in v.1.17


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.