[LON-CAPA-cvs] cvs: loncom /cgi decompress.pl
taceyjo1
lon-capa-cvs@mail.lon-capa.org
Wed, 19 Nov 2003 14:58:14 -0000
taceyjo1 Wed Nov 19 09:58:14 2003 EDT
Modified files:
/loncom/cgi decompress.pl
Log:
Third time's a charm right? rewritten again, this time with the new implimentation, and now with buffered output for easy viewing
Index: loncom/cgi/decompress.pl
diff -u loncom/cgi/decompress.pl:1.6 loncom/cgi/decompress.pl:1.7
--- loncom/cgi/decompress.pl:1.6 Mon Nov 17 23:07:49 2003
+++ loncom/cgi/decompress.pl Wed Nov 19 09:58:14 2003
@@ -1,8 +1,8 @@
#!/usr/bin/perl
#
-#
+#
# Copyright Michigan State University Board of Trustees
-# $Id:
+# $Id:
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
@@ -30,7 +30,7 @@
# construction space
####
-#Things still todo,
+#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
@@ -39,77 +39,99 @@
#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 strict;
use lib '/home/httpd/lib/perl';
-use LONCAPA::Configuration;
-use LONCAPA::loncgi();
-use Apache::lonnet;
-use strict;
-
-if(! &LONCAPA::loncgi::check_cookie_and_load_env()){
+use LONCAPA::loncgi ();
+if(! &LONCAPA::loncgi::check_cookie_and_load_env())
+{
print "Content-type: text/html\n\n";
print <<END;
- <html><body>NO COOKIE!</body></html>
+ <html><body>NO COOKIE!</body></html>
END
-} else {my $username;
- 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 "path2: $path2 <br>";
- print "$path2<br>";
- if ( -r $path2){
- print "Good read access is allowed";
- print "<br><br>";
- print "<br><br>right: $role";
- my $filename = $ENV{'cgi.file'};
- if($role eq "ca" || $role eq "au") {
- chdir $path;
- if ($filename =~ m|zip|) {
- system "unzip -qq $path2 &> /dev/null";
- } elsif ($filename =~ m|tar.gz|) {
- system "tar -zxpvf $path2 &> /dev/null";
- } elsif ($filename =~ m|tar.bz2|){
- system "tar -jxpvf $path2 &> /dev/null";
- } elsif ($filename =~ m|bz2|){
- system "bunzip2 $path2 &> /dev/null";
- } elsif ($filename =~ m|tgz|){
- system "tar -zxpvf $path2 &> /dev/null";
- } elsif ($filename =~ m|gz|){
- system "gunzip $path2 &> /dev/null";
- } elsif ($filename =~ m|tar|){
- system "tar -xpvf $path2 &> /dev/null";
- }
- }
- else {print "You don't have proper privledges";}
- }
- else { print "Read access not allowed!"; }
- #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');
}
+else
+{
+ print "Content-type: text/html\n\n";
+ if(! $ENV{'cgi.file'} || ! $ENV{'cgi.dir'})
+ {
+ print <<END;
+ <html><body>Bad Enviroment!</body></html>
+END
+ }
+ else
+ {
+ print <<END;
+ <html><body><b>Output of decompress:</b><br /><br />
+END
+ chdir $ENV{'cgi.dir'};
+ if ($ENV{'cgi.file'} =~ m|zip|)
+ {
+ open(OUTPUT, "unzip $ENV{'cgi.file'} 2> /dev/null |");
+ while (<OUTPUT>)
+ {
+ print "$_<br />";
+ }
+ close(TRACE);
+ }
+ elsif ($ENV{'cgi.file'} =~ m|tar.gz|)
+ {
+ open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |");
+ while (<OUTPUT>)
+ {
+ print "$_<br />";
+ }
+ close(TRACE);
+ }
+ elsif ($ENV{'cgi.file'} =~ m|tar.bz2|)
+ {
+ open(OUTPUT, "tar -jxpvf $ENV{'cgi.file'} 2> /dev/null |");
+ while (<OUTPUT>)
+ {
+ print "$_<br />";
+ }
+ close(TRACE);
+ }
+ elsif ($ENV{'cgi.file'} =~ m|bz2|)
+ {
+ 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>";
+ }
+}
+