#!/usr/bin/perl -w 

use strict;

##use CGI;

use LWP;

use URI::Escape;

sub main
{
    # my $cgi = new CGI();

##    print STDOUT "Access-Control-Allow-Origin: *\n";

    my $query_string = $ENV{"QUERY_STRING"};

    if (defined $query_string && ($query_string !~ m/^\s*$/)) {

	# define user agent
	my $ua = LWP::UserAgent->new();
	$ua->agent("USER/AGENT/IDENTIFICATION");

##	print STDERR "**** query string = $query_string\n\n";

	my $url = uri_unescape($query_string);
##	print STDERR "*** orign url = $url\n\n";

#	if ($url =~ m/^(.*?)\?(.*?)$/) {
#	    # $url = $1 . "?" . uri_escape($2);
#	    $url = $1;
#	    my $cgiargs = $2;
#	    $cgiargs =~ s/\+/%2B/g;
#
#	    $url .= "?$cgiargs";

###	    print STDERR "*** new url = $url\n\n";
#	}

	my $user = 'admin';
	my $pass = 'admin';

	# make request
	my $request = HTTP::Request->new(GET => $url);

	# authenticate
	$request->authorization_basic($user, $pass);

	# get response
	my $response = $ua->request($request);

	if ($response->is_success()) {

	    my $content_type = $response->content_type();

	    my $content = $response->content();

	    if ($content_type eq "text/html") {
		if ($content !~ m/<base.*?>/i) {
		    my $base_url = $url;
		    $base_url =~ s/[^\/]*$//; # cut URL down to the last '/'

		    $content =~ s/<(head)>/<$1>\n<base href="$base_url"\/>/i;
		}
	    }


	    print STDOUT "Content-type:$content_type\n\n";
	    print STDOUT $content;

	}
	else {
	    # did not exist
	    print STDOUT "Status: 404 Not Found\n";
	    print STDOUT "Content-type:text/html\n\n";
	    print STDOUT "<html><body><p>Error: Failed to retrieve $url\n<p>",$response->content(),"</body></html>\n";

	}	
    }
    else {
	print STDOUT "Content-type:text/html\n\n";
	print STDOUT "<html><body><p>Error: No GET arguments found in QUERY_STRING</body></html>\n";
    }
}

main();
