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

version 1.3, 2003/10/20 15:51:51 version 1.7, 2003/11/19 14:58:14
Line 1 Line 1
 #!/usr/bin/perl  #!/usr/bin/perl
 #  #
 #   #
 # Copyright Michigan State University Board of Trustees  # Copyright Michigan State University Board of Trustees
   # 
 #  #
 # 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 28 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 lib '/home/httpd/lib/perl';  
 use LONCAPA::Configuration;  
 use LONCAPA::loncgi();  
   
 if(! &LONCAPA::loncgi::check_cookie_and_load_env()){  #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 lib '/home/httpd/lib/perl';
   use LONCAPA::loncgi ();
   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 {      }
     $url = $ENV{'HTTP_REFERER'};      else
     $url =~ m|/{2}|;      {
     $url = $'; #' stupid emacs          print <<END;
     $url =~ m|/{1}|;   <html><body><b>Output of decompress:</b><br /><br />
     $referer = $`;  END
     if($referer ne $ENV{'SERVER_NAME'}) {          chdir $ENV{'cgi.dir'};
  print "Content-type: text/html\n\n";          if ($ENV{'cgi.file'} =~ m|zip|)
  print "<html><body>You are trying something that is not allowed, go to the real homeserver and try again</body></html>";          {
     } else {              open(OUTPUT, "unzip $ENV{'cgi.file'} 2> /dev/null |");
  $url = $'; #' stupid emacs              while (<OUTPUT>)
  $url =~ m|$ENV{'user.name'}/{1}|;              {
  $url = $'; #' stupid emacs                  print "$_<br />";
  $url =~ m|\?{1}|;              }
  $url = $`;              close(TRACE);
  $path ="/home/$ENV{'user.name'}/public_html/";          }
  $back_path = "";          elsif ($ENV{'cgi.file'} =~ m|tar.gz|)
  while($url =~ m|/|) {          {
     $path .= $`;              open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |");
     $back_path .= $`;              while (<OUTPUT>)
     $path .= "/";              {
     $back_path .= "/";                  print "$_<br />";
     $url = $'; #' stupid emacs              }
  }              close(TRACE);
  chdir $path;          }
  $filename=$url;          elsif ($ENV{'cgi.file'} =~ m|tar.bz2|)
  if      ($url =~ m|zip|) {          {
     system "unzip -qq $filename &> /dev/null";              open(OUTPUT, "tar -jxpvf $ENV{'cgi.file'} 2> /dev/null |");
  } elsif ($url =~ m|tar.gz|) {              while (<OUTPUT>)
     system "tar -zxpvf $filename &> /dev/null";              {
  } elsif ($url =~ m|tar.bz2|){                  print "$_<br />";
     system "tar -jxpvf $filename &> /dev/null";              }
  } elsif ($url =~ m|bz2|){              close(TRACE);
     system "bunzip2 $filename &> /dev/null";          }
  } elsif ($url =~ m|tgz|){          elsif ($ENV{'cgi.file'} =~ m|bz2|)
     system "tar -zxpvf $filename &> /dev/null";          {
  } elsif ($url =~ m|gz|){              open(OUTPUT, "bunzip2 $ENV{'cgi.file'} 2> /dev/null |");
     system "gunzip $filename &> /dev/null";              while (<OUTPUT>)
  } elsif ($url =~ m|tar|){              {
     system "tar -xpvf $filename &> /dev/null";                  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>";
     }      }
 }  }
 print "Content-type: text/html\n\n";  
 print '<html><head>'  
 print '<meta http-equiv="refresh" content="0; URL=';  
 print "http://$ENV{'SERVER_NAME'}/~$ENV{'user.name'}/$back_path"; print '" />';  
 print '</head></html>';  

Removed from v.1.3  
changed lines
  Added in v.1.7


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