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

version 1.6, 2003/11/18 04:07:49 version 1.17, 2008/11/28 20:42:20
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 Apache::lonnet;  use Apache::lonnet;
 use strict;   use Apache::lonlocal;
   use LONCAPA::loncgi;
   
 if(! &LONCAPA::loncgi::check_cookie_and_load_env()){  my %location_of;
     print "Content-type: text/html\n\n";  foreach my $program ('tar','gunzip','bunzip2','unzip') {
     print <<END;      foreach my $dir ('/bin/','/usr/bin/','/usr/local/bin/','/sbin/',
  <html><body>NO COOKIE!</body></html>       '/usr/sbin/') {
 END   if (-x $dir.$program) {
 } else {my $username;      $location_of{$program} = $dir.$program;
     print "Content-type: text/html\n\n";  
  print "<html><head></head><body>";  
  my $path = $ENV{'cgi.path'};  
  $path =~ m|/{1}|;  
  $path = $'; #' stupid emacs  
  $path =~ m|/{1}|;  
  $path = $';  
  my (@right) = split(/\./,$ENV{'request.role'});  
  my $role = shift(@right);  
  my $temp = shift(@right);  
  my (@left) = split(/\/+/,$temp);;  
  shift(@left);  
  shift(@left);  
  $temp = shift(@left);  
  print "temp: $temp";  
  my $path2 = "/home/$username/public_html/";  
  $path2 .=$path;  
  my $back_path = "";  
  while($path =~ m|/|) {  
     $back_path .= $`;  
     $back_path .= "/";  
     $path = $'; #' stupid emacs  
  }   }
  $path .= '/';      }
  $path .= $back_path;  }
  print "<br>path: $path<br>";  
  print "back_path: $back_path <br>";  print("Content-type: text/html\n\n");
  print "path2: $path2 <br>";  
  print "$path2<br>";  if (!&LONCAPA::loncgi::check_cookie_and_load_env()) {
  if ( -r $path2){      &Apache::lonlocal::get_language_handle();
  print "Good read access is allowed";      print(&LONCAPA::loncgi::missing_cookie_msg());
  print "<br><br>";  } else {
  print "<br><br>right: $role";      &Apache::lonlocal::get_language_handle();
  my $filename = $ENV{'cgi.file'};      my %lt = &Apache::lonlocal::texthash (
  if($role eq "ca" || $role eq "au") {                                              bade => 'Bad Environment!',
  chdir $path;                                              outo => 'Output of decompress:',
  if      ($filename =~ m|zip|) {                                              comp => 'Decompress complete.', 
     system "unzip -qq $path2 &> /dev/null";                                              erro => 'An error occurred',
  } elsif ($filename =~ m|tar.gz|) {                                           );
     system "tar -zxpvf $path2 &> /dev/null";      my $file=$Apache::lonnet::env{'cgi.file'};
  } elsif ($filename =~ m|tar.bz2|){      my $dir=$Apache::lonnet::env{'cgi.dir'}; 
    system "tar -jxpvf $path2 &> /dev/null";      if(! $file || ! $dir) {
  } elsif ($filename =~ m|bz2|){          print(<<END);
     system "bunzip2 $path2 &> /dev/null";          <html><body><span class="LC_error">$lt{'bade'}</span></body></html>
  } elsif ($filename =~ m|tgz|){  END
     system "tar -zxpvf $path2 &> /dev/null";      } else {
  } elsif ($filename =~ m|gz|){          print(<<END);
     system "gunzip $path2 &> /dev/null";   <html><body><p><b>$lt{'outo'}</b></p>
  } elsif ($filename =~ m|tar|){  END
     system "tar -xpvf $path2 &> /dev/null";          chdir($dir);
  }   my @cmd;
  }           if ($file =~ m|\.zip$|) {
  else {print "You don't have proper privledges";}              @cmd = ($location_of{'unzip'},"-o");
           } elsif ($file =~ m|\.tar\.gz$|
    || $file =~ m|\.tgz$| ) {
               @cmd = ($location_of{'tar'},"-zxpvf");
           } elsif ($file =~ m|\.tar\.bz2$|) {
               @cmd = ($location_of{'tar'},"-jxpvf");
           } elsif ($file =~ m|\.bz2$|) {
               @cmd = ($location_of{'bunzip2'});
           } elsif ($file =~ m|\.gz$|) {
       @cmd = ($location_of{'gunzip'});
           } elsif ($file =~ m|\.tar$|) {
               @cmd = ($location_of{'tar'},"-xpvf");
           } 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>');
           }
    if (@cmd) {
       undef($!);
       undef($@);
       open(OUTPUT,"-|", @cmd, $file);
       while (my $line = <OUTPUT>) { print("$line<br />"); }
       close(OUTPUT);
       print("<p><b>$lt{'comp'}</b></p>");
       if ($! || $@) {
    print('<p><span class="LC_error">'.$lt{'erro'}.'<br />'.$!.'<br />'.$@.'</span></p>');
       }
  }   }
  else { print "Read access not allowed!"; }          print('</body></html>');
  #print '<meta http-equiv="refresh" content="0; URL=';      }
  #print "http://$ENV{'SERVER_NAME'}/~$username'}/$back_path"; print '" />';  
  print '</body></html>';  
  &Apache::lonnet::delenv('cgi.file');  
  &Apache::lonnet::delenv('cgi.path');  
 }  }
   

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


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