--- loncom/cgi/decompress.pl 2003/10/18 17:42:45 1.2 +++ loncom/cgi/decompress.pl 2003/11/17 23:12:12 1.5 @@ -31,53 +31,71 @@ 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 <NO COOKIE! END -} -else -{ - $url = $ENV{'HTTP_REFERER'}; - $url =~ m|/{2}|; - $url = $'; - $url =~ m|/{1}|; - $referer = $`; - if($referer ne $ENV{'SERVER_NAME'}) - { print "Content-type: text/html\n\n"; - print "You are trying something that is not allowed, go to the real homeserver and try again"; +} else { + print "Content-type: text/html\n\n"; +print ""; +print "$ENV{'cgi.path'}"; +print "
$ENV{'cgi.file'}"; +print "
$ENV{'user.name'}
"; +$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 } - else - { - $url = $'; - $url =~ m|$ENV{'user.name'}/{1}|; - $url = $'; - $url =~ m|\?{1}|; - $url = $`; - $path ="/home/$ENV{'user.name'}/public_html/"; - $back_path = ""; - while($url =~ m|/|) - { - $path .= $`; - $back_path .= $`; - $path .= "/"; - $back_path .= "/"; - $url = $'; - } - 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 "
path: $path
"; +print "back_path: $back_path
"; +print "path2: $path2
"; +print "$path2
"; +if ( -r $path2){ +print "Good read access is allowed"; +print "

"; +$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 ''; +print ''; +&Apache::lonnet::delenv(cgi.file); +&Apache::lonnet::delenv(cgi.path); } -print "Content-type: text/html\n\n"; -print ''; \ No newline at end of file