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

version 1.17, 2008/11/28 20:42:20 version 1.18, 2012/04/19 02:13:00
Line 1 Line 1
 #!/usr/bin/perl  #!/usr/bin/perl
 #  #
   # $Id$
 #  #
 # 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 27 Line 27
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 #  #
 # 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 or into a course.
 ####  ####
 use strict;  use strict;
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
Line 53  if (!&LONCAPA::loncgi::check_cookie_and_ Line 53  if (!&LONCAPA::loncgi::check_cookie_and_
 } else {  } else {
     &Apache::lonlocal::get_language_handle();      &Apache::lonlocal::get_language_handle();
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                                             bade => 'Bad Environment!',                                              bade => 'Invalid file or directory name',
                                             outo => 'Output of decompress:',                                              outo => 'Output of decompress:',
                                             comp => 'Decompress complete.',                                               comp => 'Decompress complete.', 
                                             erro => 'An error occurred',                                              erro => 'An error occurred.',
                                               extf => 'Extraction failed.',
                                          );                                           );
     my $file=$Apache::lonnet::env{'cgi.file'};      my $file=$Apache::lonnet::env{'cgi.file'};
     my $dir=$Apache::lonnet::env{'cgi.dir'};       my $dir=$Apache::lonnet::env{'cgi.dir'};
     if(! $file || ! $dir) {      if (!$file || !$dir) {
         print(<<END);          print(<<END);
         <html><body><span class="LC_error">$lt{'bade'}</span></body></html>          <html><body><span class="LC_error">$lt{'extf'} $lt{'bade'}</span></body></html>
 END  END
       } elsif (!-d $dir) {
           print('<html><body><span class="LC_error">'.$lt{'extf'}.' '."\n".
                 &Apache::lonlocal::mt('The specified directory "[_1]" is invalid.',$dir).
                 '</span></body></html>');
     } else {      } else {
         print(<<END);          my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
  <html><body><p><b>$lt{'outo'}</b></p>          my $lonuserroot = $Apache::lonnet::perlvar{'lonUsersDir'};
           if (($dir !~ /^\Qlondocroot\E/) && ($dir !~ /^\Q$lonuserroot\E/)) {
               print('<html><body><span class="LC_error">'.$lt{'extf'}.'<br />'."\n".
                     &Apache::lonlocal::mt('The specified directory "[_1]" is invalid',$dir).
                     '</span></body></html>');
           } elsif (chdir($dir)) {
               if (-e $file) {
                   print(<<END);
           <html><body><p><b>$lt{'outo'}</b></p>
 END  END
         chdir($dir);                  my @cmd;
  my @cmd;                  if ($file =~ m|\.zip$|) {
         if ($file =~ m|\.zip$|) {                      @cmd = ($location_of{'unzip'},"-o");
             @cmd = ($location_of{'unzip'},"-o");                  } elsif ($file =~ m|\.tar\.gz$|
         } elsif ($file =~ m|\.tar\.gz$|              || $file =~ m|\.tgz$| ) {
  || $file =~ m|\.tgz$| ) {                      @cmd = ($location_of{'tar'},"-zxpvf");
             @cmd = ($location_of{'tar'},"-zxpvf");                  } elsif ($file =~ m|\.tar\.bz2$|) {
         } elsif ($file =~ m|\.tar\.bz2$|) {                      @cmd = ($location_of{'tar'},"-jxpvf");
             @cmd = ($location_of{'tar'},"-jxpvf");                  } elsif ($file =~ m|\.bz2$|) {
         } elsif ($file =~ m|\.bz2$|) {                      @cmd = ($location_of{'bunzip2'});
             @cmd = ($location_of{'bunzip2'});                  } elsif ($file =~ m|\.gz$|) {
         } elsif ($file =~ m|\.gz$|) {              @cmd = ($location_of{'gunzip'});
     @cmd = ($location_of{'gunzip'});                  } elsif ($file =~ m|\.tar$|) {
         } elsif ($file =~ m|\.tar$|) {                      @cmd = ($location_of{'tar'},"-xpvf");
             @cmd = ($location_of{'tar'},"-xpvf");                  }
           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 />'.$!."\n".
                                 '<br />'.$@.'</span></p>');
               } else {
                           &Apache::lonnet::appenv({'cgi.decompressed' => 'ok'});
                       }
                   } 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>');
                   }
                   print('</body></html>');
               } else {
                   print('<html><body><span class="LC_error">'.$lt{'extf'}.'<br />'."\n".
                         &Apache::lonlocal::mt('The specified file "[_1]" does not exist.',$file).
                         '</span></body></html>');
               }
         } else {          } 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>');              print('<html><body><span class="LC_error">'.$lt{'extf'}.'<br />'."\n".
                     &Apache::lonlocal::mt('Could not change working directory to "[_1]".',$dir).
                     '</span></body></html>');
         }          }
  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>');  
     }  
  }  
         print('</body></html>');  
     }      }
 }  }
   

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


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