#!/usr/bin/perl
#############################################
#      Copyright 1999 Xavier Media          #
#         http://www.servers.nu/            #
#                                           #
#    If you need help, please visit our     #
#         CGI discussion board at           #
#  http://www.servers.nu/wwwboard/cgi.html  #
#                   or                      #
#    http://www.servers.nu/redirect.html    #
#############################################

$temp=$ENV{'QUERY_STRING'};
@pairs=split(/&/,$temp);
foreach $item(@pairs) {
	($key,$content)=split (/=/,$item,2);
	$content=~tr/+/ /;
	$content=~ s/%(..)/pack("c",hex($1))/ge;
	$fields{$key}=$content;
}

# Admin password
$admin = "test";

# Your email address
$email = "webmaster\@kor.dk";

# Mail the log file to me (1 = Yes, 0 = No)
$mail_log = 0;

# When do you want me to email the logfile to you?
# Enter number of total clicks. Example 150.
$mail_clicks = "150";

# Where can I find sendmail?
$mailprog = "/bin/sendmail";

# Do you want me to add new links (1 = Yes, 0 = No)?
$add = 1;

# Where is the logfile located?
$logclick = "click.log";

# No more editing is required!

$link = $fields{'link'};
$page = $fields{'page'};
$url = $fields{'url'};
$passwd = $fields{'passwd'};

if ($link) {
	open(DATA,"$logclick");
	   @lines = <DATA>;
	close(DATA);
	
	open(DATA,">$logclick");
	  foreach $line (@lines)
	  {
	  	($start, $end, $click, $xx) = split(/\|/,$line);
	  	if (($ENV{'HTTP_REFERER'} eq $start) && ($link eq $end)) {
			$click++;
			print DATA "$start|$end|$click|xx\n";
			$add = 0;
	  	}
	      else {
			print DATA $line;
	  	}
		$total_click = ($total_click + $click);
		$mail_logfile .= "$start =>\n";
		$mail_logfile .= "   $end\n";
		$mail_logfile .= "Clicks: $click\n\n";
	  }
	close(DATA);

	if ($add eq 1) {
		open(DATA,">>$logclick");
		print DATA "$ENV{'HTTP_REFERER'}|$link|1|xx\n";
		close(DATA);
		$total_click++;

		$mail_logfile .= "$ENV{'HTTP_REFERER'} =>\n";
		$mail_logfile .= "   $link\n";
		$mail_logfile .= "Clicks: 1\n\n";
	}

	if ($total_click eq $mail_clicks) {
		&email_log;
	}

	print "Content-type: text/html\n";
	print ("Location: $link\n\n");
}
else {

	print "Content-type: text/html\n\n";
	print "<HTML><TITLE>Servers Redirection script</TITLE><BODY>\n";
	print "<CENTER><TABLE WIDTH=480 BORDER=0><TR><TD>\n";
	print "<FONT FACE=\"Arial, Helvetica\" SIZE=2>\n";
	if ($admin eq $passwd) {
		print "<CENTER><SMALL>[ <A HREF=\"redirect.cgi?passwd=$passwd&page=main\">MAIN</A> ] | \n";
		print " [ <A HREF=\"redirect.cgi?passwd=$passwd&page=html\">HTML code</A> ] | \n";
		print " [ <A HREF=\"redirect.cgi?passwd=$passwd&page=delete\">CLEAR LOGFILE</A> ] | \n";
		print " [ <A HREF=\"http://www.servers.nu/\">Xavier Media</A> ]</SMALL></CENTER><HR>\n";
	}
	else {
		print "<CENTER><SMALL>[ MAIN ] | \n";
		print " [ HTML code ] | \n";
		print " [ CLEAR LOGFILE ] | \n";
		print " [ Xavier Media ]</SMALL></CENTER><HR>\n";
	}
	if (($page eq "main") && ($admin eq $passwd)) {

	 	open(DATA,"$logclick");
		   @lines = <DATA>;
		close(DATA);
		
		  foreach $line (@lines)
		  {
		  	($start, $end, $click, $xx) = split(/\|/,$line);
			print "<A HREF=\"redirect.cgi?passwd=$passwd&page=query1&url=$start\">$start</A>\n";
			print " =&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
			print "<A HREF=\"redirect.cgi?passwd=$passwd&page=query2&url=$end\">$end</A><BR>\n";
			print "<B>Clicks:</B> $click<P>\n";
			$total_click = ($total_click + $click);
		  }
		print "<B>Total # of clicks:</B> $total_click<P>\n";
	}
	elsif (($page eq "query1") && ($admin eq $passwd)) {
	 	open(DATA,"$logclick");
		   @lines = <DATA>;
		close(DATA);
		
		  foreach $line (@lines)
		  {
		  	($start, $end, $click, $xx) = split(/\|/,$line);
			if ($start eq $url) {
				print "<A HREF=\"redirect.cgi?passwd=$passwd&page=query1&url=$start\">$start</A>\n";
				print " =&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
				print "<A HREF=\"redirect.cgi?passwd=$passwd&page=query2&url=$end\">$end</A><BR>\n";
				print "<B>Clicks:</B> $click<P>\n";
				$total_click = ($total_click + $click);
			}
		  }
		print "<B>Total # of clicks:</B> $total_click<P>\n";
	}
	elsif (($page eq "query2") && ($admin eq $passwd)) {
	 	open(DATA,"$logclick");
		   @lines = <DATA>;
		close(DATA);
		
		  foreach $line (@lines)
		  {
		  	($start, $end, $click, $xx) = split(/\|/,$line);
			if ($end eq $url) {
				print "<A HREF=\"redirect.cgi?passwd=$passwd&page=query1&url=$start\">$start</A>\n";
				print " =&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
				print "<A HREF=\"redirect.cgi?passwd=$passwd&page=query2&url=$end\">$end</A><BR>\n";
				print "<B>Clicks:</B> $click<P>\n";
				$total_click = ($total_click + $click);
			}
		  }
		print "<B>Total # of clicks:</B> $total_click<P>\n";
	}
	elsif (($page eq "delete") && ($admin eq $passwd)) {
		open(DATA,">$logclick");
		print DATA "";
		close(DATA);
		print "<FONT COLOR=red><B>The logfile has been deleted!</B></FONT><P>\n";

	}
	elsif (($page eq "html") && ($admin eq $passwd)) {
		($x1, $x2) = split(/\.cgi/,$ENV{'HTTP_REFERER'});
		print "<B>Drop-down box</B><P>\n";
		print "&lt;FORM METHOD=\"get\" ACTION=\"<FONT COLOR=red>http://www.yoursite.com/cgi-bin/redirect.cgi</FONT>\"&gt;<BR>\n";
		print "&lt;SELECT NAME=link&gt;<BR>\n";
		print "&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE=\"<FONT COLOR=red>http://www.servers.nu</FONT>\"&gt;Xavier Media<BR>\n";
		print "&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE=\"<FONT COLOR=red>http://www.netscape.com</FONT>\"&gt;Netscape<BR>\n";
		print "&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE=\"<FONT COLOR=red>http://www.altavista.com</FONT>\"&gt;Altavista<BR>\n";
		print "&lt;/SELECT&gt;<BR>\n";
		print "&lt;INPUT TYPE=submit VALUE=\"GO!\"&gt;<BR>\n";
		print "&lt;/FORM&gt;<P>\n";
		print "<B>Text link</B><P>\n";
		print "&lt;A HREF=\"<FONT COLOR=red>http://www.yoursite.com/cgi-bin/redirect.cgi?link=http://www.netscape.com</FONT>\"&gt;<FONT COLOR=red>Netscape</FONT>&lt;/A&gt;<P>\n"; 

	}
	else {
		print "<CENTER><FORM METHOD=get ACTION=\"redirect.cgi\">\n";
		print "<INPUT TYPE=hidden NAME=page VALUE=main>\n";
		print "<B>Password:</B><BR>\n";
		print "<INPUT TYPE=password NAME=passwd SIZE=10>\n";
		print "<INPUT TYPE=submit VALUE=\"Login!\">\n";
		print "</FORM>\n";
	}
	print "<HR><CENTER><SMALL>Script created by <A HREF=\"http://www.servers.nu/\">Xavier Media</A></SMALL></CENTER>\n";
	print "</FONT></TD></TR></TABLE></CENTER>\n";
	print "</BODY></HTML>\n";
}


exit;

sub email_log {
	open (MAIL, "|$mailprog $email") || die "Can't open $mailprog\n";
		print MAIL "Reply-to: hotspider\@servers.nu (Servers Redirection script)\n";
		print MAIL "From: hotspider\@servers.nu (Servers Redirection script)\n";
		print MAIL "Subject: Redirection log\n\n";
		print MAIL "$mail_logfile";
	close (MAIL);

	open(DATA,">$logclick");
	print DATA "";
	close(DATA);
}