#!/usr/bin/perl
my $ok=1;

use Fcntl ':flock';
require 'admin/config.pm';

open(LOG,">>./admin/data/_pp.log"); #{INSERTED}#

my $query_string=$ENV{'QUERY_STRING'};
my @query_string_datas=split("\&",$query_string);

my ($t0,$id)=split("\=",$query_string_datas[0]);
my ($t1,$type)=split("\=",$query_string_datas[1]);

if ($type=~/form/i) {
	shift(@query_string_datas);
	shift(@query_string_datas);
	$query_string="\?".join('&',@query_string_datas);
}#///
else {$query_string='';}

my $verguetung;
my $symbol_found=0;
my $location=$standard_loc;

foreach (@codes) {
	my($name,$symbol,$betrag,$ziel)=split(';',$_);
	if ($symbol eq $type) {
		$verguetung=$betrag;
		$location=$ziel;
		$symbol_found=1;
	}#///
}#///

if (!$symbol_found) {$query_string='';$ok=0;}

my $ip=$ENV{'REMOTE_ADDR'};
my $ref=$ENV{'HTTP_REFERER'};
my ($day,$month,$year) = (localtime(time))[3,4,5];
my $date=sprintf("%02d.%02d.%02d",$day,$month+1,$year-100);

print LOG time."\t$id\t$ENV{'REMOTE_ADDR'}\t$ENV{'HTTP_REFERER'}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_X_FORWARDED_FOR'}\tSYMBOL/LANG:$ok\t"; #{INSERTED}#

if (length($ref) < 7 or $id eq '' or $type eq '') {$ok=0;}

print LOG "REF:$ok\t"; #{INSERTED}#

if ($ok) {&reclick_check;}
if ($ok and -e "$data_dir$id.dat") {&write_click;}

print LOG "RECLICK:$ok\n"; #{INSERTED}#
close(LOG); #{INSERTED}#

use CGI::Cookie;
my $c = new CGI::Cookie(-name=>'partner',
				-value=>$id,
				-path=>"/cgi-bin/partner/save_lead.pl",
				-expires=>'+12M',
			);
print "Set-Cookie: $c\n";

my $c3 = new CGI::Cookie(-name=>'partner',
				-value=>$id,
				-path=>"/",
				-expires=>'+12M',
			);
print "Set-Cookie: $c3\n";

my $c2 = new CGI::Cookie(-name=>"$cookie_name",
				-value=>$id,
				-path=>"$anm_script_url",
				-expires=>'+12M',
			);
print "Set-Cookie: $c2\n";

print "Location: $location$query_string\n\n";


sub write_click {
	open(DAT,"+<$data_dir$id.dat");
	flock(DAT,LOCK_EX);
	my $data_blocks_string=join("",<DAT>);
	my @blocks=split(/$trennlinie\r?\n/,$data_blocks_string);
	my @stats=split(/\r?\n/,$blocks[1]);
	my $vorhanden=0;
	my @stats_changed;
	foreach(@stats) {
		my (@stats_data)=split("\#",$_);
		if ($stats_data[0] eq $date) {
			$vorhanden=1;
			shift(@stats_data);
			my $vorh2=0;
			my $line;
			foreach(@stats_data) {
				my($i_type,$i_klicks,$i_money)=split(';',$_);chomp($i_money);
				if ($i_type eq $type) {$vorh2=1;$i_klicks++;$i_money=$i_money+$verguetung;$line="$line#$i_type;$i_klicks;$i_money";}
				else {$line="$line#$_";}
			}#///
			if (!$vorh2) {$line="$line#$type;1;$verguetung";}
			push(@stats_changed,"$date$line");
		}#///
		else {push(@stats_changed,"$_");}
	}#///

	if (!$vorhanden) {push(@stats_changed,"$date#$type;1;$verguetung");}
	$blocks[1]=join("\n",@stats_changed)."\n";

	my @ref_lines=split(/\r?\n/,$blocks[2]);
	if ($ref_lines[0] ne 'none' and -e "$data_dir$ref_lines[0].dat") {&write_ref_click($ref_lines[0]);}

	my (@ip_sub)=split(/\./, $ip);
	$ip="$ip_sub[0]";
	my @ip_lines=split(/\r?\n/,$blocks[4]);
	if ($blocks[4]=~ /\;$ip/i) {
		my($zaehler,$upzaehler);
		foreach (@ip_lines) {
			my ($counter,$in_ip) = split(/;/,$_);
			if ($in_ip eq $ip) {$zaehler=$counter;$upzaehler=$counter+1;}
		}#///
		$blocks[4]=~ s/$zaehler;$ip/$upzaehler;$ip/gi;
	}#///
	else {$blocks[4]="$blocks[4]1;$ip\n";}

	if ($blocks[5]=~ /$ref/i) {}
	else {$blocks[5]="$blocks[5]$ref\n";}

	truncate DAT,0;
	seek DAT,0,0;
	print DAT "$blocks[0]$trennlinie\n$blocks[1]$trennlinie\n$blocks[2]$trennlinie\n$blocks[3]$trennlinie\n$blocks[4]$trennlinie\n$blocks[5]";
	flock(DAT,LOCK_UN);
	close(DAT);
}#///



sub write_ref_click {
	my $ref_webmaster=$_[0];
	open(REF,"+<$data_dir$ref_webmaster.dat");
	flock(REF,LOCK_EX);
	my $ref_data_blocks_string=join("",<REF>);
	my @ref_blocks=split(/$trennlinie\r?\n/,$ref_data_blocks_string);
	my @ref_ref_lines=split(/\r?\n/,$ref_blocks[2]);
	if ($ref_ref_lines[2]=~/$id\;/i) {$ref_ref_lines[1]=$ref_ref_lines[1]+(($ref_proz / 100) * $verguetung);}
	$ref_blocks[2]="$ref_ref_lines[0]\n$ref_ref_lines[1]\n$ref_ref_lines[2]\n";
	truncate REF,0;
	seek REF,0,0;
	print REF "$ref_blocks[0]$trennlinie\n$ref_blocks[1]$trennlinie\n$ref_blocks[2]$trennlinie\n$ref_blocks[3]$trennlinie\n$ref_blocks[4]$trennlinie\n$ref_blocks[5]";
	flock(REF,LOCK_UN);
	close(REF);
}#///



sub reclick_check {
	if (-e "$data_dir$lock_ip_file") {open(LOCK,"+<$data_dir$lock_ip_file");}
	else {open(LOCK,">$data_dir$lock_ip_file");}
	flock(LOCK,LOCK_EX);
	my $lockdata=join("",<LOCK>);
	if ($lockdata=~ /$ip/i) {$ok=0;}
	if ($ok) {
		my @lock_lines = split(/\n/,$lockdata);
		$lockdata='';
		while ($#lock_lines > $lock_ip_file_length) {shift(@lock_lines);}
		while (@lock_lines) {
			my $lockip=shift(@lock_lines);
			$lockdata="$lockdata$lockip\n";
		}#///
		$lockdata=$lockdata."$ip\n";
		truncate LOCK,0;
		seek LOCK,0,0;
		print LOCK $lockdata;
	}#///
	flock(LOCK,LOCK_UN);
	close(LOCK);
}#///
