[LON-CAPA-cvs] cvs: loncom /cgi decompress.pl

taceyjo1 lon-capa-cvs@mail.lon-capa.org
Mon, 17 Nov 2003 23:12:12 -0000


taceyjo1		Mon Nov 17 18:12:12 2003 EDT

  Modified files:              
    /loncom/cgi	decompress.pl 
  Log:
  Ok, I re-wrote it, I am just saving my work, however, comments are appreciated... the refresh still needs a little work, and I need to remove a lot of debugging statements :0)
  
  
Index: loncom/cgi/decompress.pl
diff -u loncom/cgi/decompress.pl:1.4 loncom/cgi/decompress.pl:1.5
--- loncom/cgi/decompress.pl:1.4	Mon Oct 20 18:38:28 2003
+++ loncom/cgi/decompress.pl	Mon Nov 17 18:12:12 2003
@@ -31,6 +31,7 @@
 use lib '/home/httpd/lib/perl';
 use LONCAPA::Configuration;
 use LONCAPA::loncgi();
+use Apache::lonnet;
 
 if(! &LONCAPA::loncgi::check_cookie_and_load_env()){
     print "Content-type: text/html\n\n";
@@ -38,50 +39,63 @@
 	 <html><body>NO COOKIE!</body></html>
 END
 } else {
-    $url = $ENV{'HTTP_REFERER'};
-    $url =~ m|/{2}|;
-    $url = $'; #' stupid emacs
-    $url =~ m|/{1}|;
-    $referer = $`;
-    if($referer ne $ENV{'SERVER_NAME'}) {
-	print "Content-type: text/html\n\n";
-	print "<html><body>You are trying something that is not allowed, go to the real homeserver and try again</body></html>";
-    } else {
-	$url = $'; #' stupid emacs	
-	$url =~ m|$ENV{'user.name'}/{1}|;
-	$url = $'; #' stupid emacs
-	$url =~ m|\?{1}|;
-	$url = $`;
-	$path ="/home/$ENV{'user.name'}/public_html/";
-	$back_path = "";
-	while($url =~ m|/|) {
-	    $path .= $`;
+    print "Content-type: text/html\n\n";
+print "<html><head></head><body>";
+print "$ENV{'cgi.path'}";
+print "<br>$ENV{'cgi.file'}";
+print "<br>$ENV{'user.name'}<br>";
+$path = $ENV{'cgi.path'};
+$path =~ m|/{1}|;
+$path = $'; #' stupid emacs
+$path =~ m|/{1}|;
+$path = $';
+$username = $`; #Hmm, can't use the enviroment for this, if you are a co-author.. so we work around it.
+$path2 = "/home/$username/public_html/";
+$path2 .=$path;
+$back_path = "";
+	while($path =~ m|/|) {
 	    $back_path .= $`;
-	    $path .= "/";
 	    $back_path .= "/";
-	    $url = $'; #' stupid emacs
+	    $path = $'; #' stupid emacs
 	}
-	chdir $path;
-	$filename=$url;
-	if      ($url =~ m|zip|) {
-	    system "unzip -qq $filename &> /dev/null";
-	} elsif ($url =~ m|tar.gz|) {
-	    system "tar -zxpvf $filename &> /dev/null";
-	} elsif ($url =~ m|tar.bz2|){
-	    system "tar -jxpvf $filename &> /dev/null";
-	} elsif ($url =~ m|bz2|){
-	    system "bunzip2 $filename &> /dev/null";
-	} elsif ($url =~ m|tgz|){
-	    system "tar -zxpvf $filename &> /dev/null";
-	} elsif ($url =~ m|gz|){
-	    system "gunzip $filename &> /dev/null";
-	} elsif ($url =~ m|tar|){
-	    system "tar -xpvf $filename &> /dev/null";
+$path = "/home/$username/public_html";
+$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>";
+$right = $ENV{'request.role'};
+$right =~ m|\.|;
+$right = $`;
+$filename = $ENV{'cgi.file'};
+if($right eq "ca" || $right 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";}
 }
-print "Content-type: text/html\n\n";
-print '<html><head>';
+else { print "Read access not allowed!"; }
 print '<meta http-equiv="refresh" content="0; URL=';
-print "http://$ENV{'SERVER_NAME'}/~$ENV{'user.name'}/$back_path"; print '" />';
-print '</head></html>';
+print "http://$ENV{'SERVER_NAME'}/~$username'}/$back_path"; print '" />';
+print '</body></html>';
+&Apache::lonnet::delenv(cgi.file);
+&Apache::lonnet::delenv(cgi.path);
+}