File:  [LON-CAPA] / loncom / cgi / decompress.pl
Revision 1.5: download - view: text, annotated - select for diffs
Mon Nov 17 23:12:12 2003 UTC (20 years, 5 months ago) by taceyjo1
Branches: MAIN
CVS tags: HEAD
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)

#!/usr/bin/perl
#
# 
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# /home/httpd/cgi-bin/decompress.pl
#
# http://www.lon-capa.org/
#
# The LearningOnline Network with CAPA
#
# A CGI script that decompresses compressed files for mass uploading into
# construction space
####
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";
    print <<END;
	 <html><body>NO COOKIE!</body></html>
END
} else {
    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 .= $`;
	    $back_path .= "/";
	    $path = $'; #' stupid emacs
	}
$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";}
}
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);
}

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