#!/usr/bin/perl
#use CGI::Carp "fatalsToBrowser";
require "data/set.cgi";

# Nutzungsbedingungen (Weiterempfehlungsscript): Lizenz: Stand: 3.09.2001
#
# Durch Download der Software erklären Sie sich mit diesen Lizenzabkommen einverstanden. 
# Der Weiterempfehlungsscript ist Freeware, jedoch nicht zum GPU/GPL - Abkommen zuzuordnen. 
# Diese Lizenz erlaubt es Ihnen, Weiterempfehlungsscript zu benutzen. 
# Als Nutzer des Weiterempfehlungsscript können Sie auf eigenes Risiko die Software verändern und/oder auf Ihre Bedürfnisse anpassen. 
# Sie können auch Dritte mit der Anpassung/Veränderung beauftragen. 
# Die Original-Software unverändert darf weitergegeben werden jedoch nicht verkauft oder wiederverkauft werden.
#
# Die angepasste/veränderte Software und Teile dieser dürfen nicht weitergegeben ,verkauft oder wiederverkauft werden.
#
# Alle Copyright- und Versions-Hinweise, die im Weiterempfehlungsscript oder deren HTML-Seiten verwendet, erstellt und/oder gezeigt 
# werden, dürfen nicht entfernt werden. Die Copyright- und Versions-Hinweise müssen für Benutzer sichtbar und in 
# ungeänderter Form dargestellt werden.
#
# Dieses Lizenzabkommen beruht sich auf der aktuellen internationalen Gesetzeslage.
#
# Bei einem Verstoß gegen diesen Lizenzvertrag kann durch die Firma Coder-World oder deren Beauftragten die erworbene 
# Lizenz jederzeit zurückgezogen und für nichtig erklärt werden sowie die Benutzung untersagt werden. 
# Weiterempfehlungsscript und die dazugehörenden Dateien werden ohne Funktionsgarantie für die im Umfeld verwendete Hardware 
# oder Software verkauft.
#
# Coder-World oder deren Beauftragten sind in keiner Form für Inhalte oder Verfasser verantwortlich, die durch diese 
# Software erstellt wurden.
#
# Das Risiko der Benutzung vom Weiterempfehlungsscript obliegt dem Lizenznehmer, jegliche Erstattungen im Rechtsfall sind ausgeschlossen. 
# Eine Lizenz ist zeitlich unbegrenzt nutzbar, in der Lizenz ist grundsätzlich der Zugriff auf alle neuen Versionen für 
# einen unbegrenzten Zeitraum enthalten.
#
# Hinweis: Es existieren keine Reseller-, Wiederverkaufs- oder Schüler-/Studenten - Versionen. Nach den Lizenzbedingungen muß der Website-Besitzer die Lizenz selbst erhalten.  
#
# Verfasser: Stefan Gipper (Stefanos)
# E-Mail: support@coder-world.de
# Webseite: http://www.coder-world.de
#
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});@pairs = split(/&/, $input);foreach $pair (@pairs) {($name, $value) = split(/=/, $pair);$name =~ tr/+/ /;$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;$value =~ tr/+/ /;$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;$FORM{$name} = $value;}@vars = split(/&/, $ENV{QUERY_STRING});foreach $var (@vars) {($v,$i) = split(/=/, $var);$v =~ tr/+/ /;$v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;$i =~ tr/+/ /;$i =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;$i =~ s/<!--(.|\n)*-->//g;$INFO{$v} = $i;}
$action = $FORM{'action'} || $INFO{'action'};

foreach ("/bin/sendmail","/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/sendmail","/usr/sbin/sendmail","/usr/bin/sendmail.restart","/etc/sendmail.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-inject"){
	if(-e $_ && -X _){
		$mailprog = $_;
		last;
	}
}

$cgi = "$noncgi/wes.cgi\?";

if($action =~ /admin/){require "admin.cgi";&$action;}
elsif($action =~ /index/){&$action;}
&index;

sub index {
	open(T,"<templates/startseite.html");
	flock(T,2) if($use_flock);
	$ausgabe = join("",<T>);
	$ausgabe =~ s/<_cgi>/$cgi/g;
	flock(T,8) if($use_flock);
	close(T);

	&ausgabe($ausgabe);
}

sub index2 {
	&error("Kein \@ oder punkt in ihrer Emailadresse.") if($FORM{'email'} !~ /^([a-zA-z_0-9-\.]+)(\@)([a-zA-z_0-9-\.]+)(\.)(\w+)$/ or $FORM{'email'} eq "");
	&error("Kein \@ oder punkt in der Emailadresse ihres Freundes.") if($FORM{'email2'} !~ /^([a-zA-z_0-9-\.]+)(\@)([a-zA-z_0-9-\.]+)(\.)(\w+)$/ or $FORM{'email'} eq "");
	&error("Kein Name eingegeben.") unless($FORM{'name'});
	&mydate;

	open(F,"<data/standard.txt");
	flock(F,2) if($use_flock);
	@admin = <F>;
	flock(F,8) if($use_flock);
	close(F);
	$admin[4] =~ s/[\n\r]//g;

	open(F,"<data/sperren.dat");
	flock(F,2) if($use_flock);
	@sperre = <F>;
	flock(F,8) if($use_flock);
	close(F);

	foreach my $i (@sperre){
		$i =~ s/[\n\r]//g;
		if($i =~ /^\*/){
			$stern = 1;
			($vor,$maili) = split(/\@/,$i);
		}else{
			$stern = 0;
		}

		if(lc($i) eq lc($FORM{'email'}) or lc($i) eq lc($FORM{'email2'}) or lc($i) eq lc($FORM{'email3'}) or lc($i) eq lc($FORM{'email4'}) or lc($i) eq lc($FORM{'email5'}) or lc($i) eq lc($FORM{'email6'})){
			&error("Diese E-Mailadresse wurde gesperrt.");
		}elsif(lc($FORM{'email'}) =~ /\@$maili$/i && $stern == 1 or lc($FORM{'email2'}) =~ /\@$maili$/i && $stern == 1 or lc($FORM{'email3'}) =~ /\@$maili$/i && $stern == 1 or lc($FORM{'email4'}) =~ /\@$maili$/i && $stern == 1 or lc($FORM{'email5'}) =~ /\@$maili$/i && $stern == 1 or lc($FORM{'email6'}) =~ /\@$maili$/i && $stern == 1){
			&error("Diese E-Mailadresse wurde gesperrt.");
		}
	}

	open(T,"<templates/email.txt");
	flock(T,2) if($use_flock);
	$ausgabe = join("",<T>);
	$ausgabe =~ s/<_cgi>/$cgi/g;
	$ausgabe =~ s/<_name>/$FORM{'name'}/g;
	$ausgabe =~ s/<_email>/$FORM{'email'}/g;
	$ausgabe =~ s/<_email2>/$FORM{'email2'}/g;
	$ausgabe =~ s/<_email3>/$FORM{'email3'}/g;
	$ausgabe =~ s/<_email4>/$FORM{'email4'}/g;
	$ausgabe =~ s/<_email5>/$FORM{'email5'}/g;
	$ausgabe =~ s/<_email6>/$FORM{'email6'}/g;
	$ausgabe =~ s/<_kommentar>/$FORM{'kommentar'}/g;
	$ausgabe =~ s/<_url>/$admin[4]/g;
	flock(T,8) if($use_flock);
	close(T);

	open (M,"| $mailprog -t") || die "Can't open Mail!";
	print M "To: $FORM{'email2'}\n";
	print M "From: $FORM{'email'}\n";
	print M $ausgabe;
	close(M);

	if($FORM{'email3'} =~ /^([a-zA-z_0-9-\.]+)(\@)([a-zA-z_0-9-\.]+)(\.)(\w+)$/){
		open (M,"| $mailprog -t") || die "Can't open Mail!";
		print M "To: $FORM{'email3'}\n";
		print M "From: $FORM{'email'}\n";
		print M $ausgabe;
		close(M);
	}

	if($FORM{'email4'} =~ /^([a-zA-z_0-9-\.]+)(\@)([a-zA-z_0-9-\.]+)(\.)(\w+)$/){
		open (M,"| $mailprog -t") || die "Can't open Mail!";
		print M "To: $FORM{'email4'}\n";
		print M "From: $FORM{'email'}\n";
		print M $ausgabe;
		close(M);
	}

	if($FORM{'email5'} =~ /^([a-zA-z_0-9-\.]+)(\@)([a-zA-z_0-9-\.]+)(\.)(\w+)$/){
		open (M,"| $mailprog -t") || die "Can't open Mail!";
		print M "To: $FORM{'email5'}\n";
		print M "From: $FORM{'email'}\n";
		print M $ausgabe;
		close(M);
	}

	if($FORM{'email6'} =~ /^([a-zA-z_0-9-\.]+)(\@)([a-zA-z_0-9-\.]+)(\.)(\w+)$/){
		open (M,"| $mailprog -t") || die "Can't open Mail!";
		print M "To: $FORM{'email6'}\n";
		print M "From: $FORM{'email'}\n";
		print M $ausgabe;
		close(M);
	}

	if ($TimeZoneOffset ne "0" && $TimeZoneOffset =~ /^\-/i) {
		$TimeZoneOffset =~ s/[^0-9]//g;
		$Times = time() - ($TimeZoneOffset * 3600);
	}elsif ($TimeZoneOffset ne "0" && $TimeZoneOffset =~ /^\+/i) {
		$TimeZoneOffset =~ s/[^0-9]//g;
		$Times = time() + ($TimeZoneOffset * 3600);
	}elsif ($TimeZoneOffset ne "0") {
		$TimeZoneOffset =~ s/[^0-9]//g;
		$Times = time() + ($TimeZoneOffset * 3600);
	}else{
		$Times = time();
	}

	open(F,"+<data/standard.txt");
	flock(F,2) if($use_flock);
	@last = <F>;
	seek(F,0,0);
	truncate(F,0);
	print F $last[0];
	print F $last[1];
	print F $last[2];
	print F $last[3];
	$last[4] =~ s/[\n\r]//g;
	print F "$last[4]\n";
	print F "$Times\n";
	flock(F,8) if($use_flock);
	close(F);

	open(T,"<templates/finish.html");
	flock(T,2) if($use_flock);
	$line = join("",<T>);
	flock(T,8) if($use_flock);
	close(T);
	$line =~ s/<_cgi>/$cgi/g;
	$line =~ s/<_name>/$FORM{'name'}/g;
	$line =~ s/<_email>/$FORM{'email'}/g;
	$line =~ s/<_email2>/$FORM{'email2'}/g;
	$line =~ s/<_email3>/$FORM{'email3'}/g;
	$line =~ s/<_email4>/$FORM{'email4'}/g;
	$line =~ s/<_email5>/$FORM{'email5'}/g;
	$line =~ s/<_email6>/$FORM{'email6'}/g;
	$line =~ s/<_kommentar>/$FORM{'kommentar'}/g;
	&ausgabe($line);
}

sub code {
	local($x) = @_;

	open(F,"<$x");
	flock(F,2) if($use_flock);
	$x = join("",<F>);
	flock(F,8) if($use_flock);
	close(F);

	$x =~ s!&!&amp;!g;
	$x =~ s!&lt;!&#60;!g;
	$x =~ s!&gt;!&#62;!g;
	$x =~ s!<!&lt;!g;
	$x =~ s!>!&gt;!g;
	$x =~ s/\|/\&\#124\;/g;
	return($x);
}

sub ausgabe {
	local($mitte) = @_;
	$code="096f70656e28532c223c74656d706c617465732f6865616465722e68746d6c22293b0a09666c6f636b28532c322920696628247573655f666c6f636b293b0a0924686661757367616265203d206a6f696e2822222c3c533e293b0a09666c6f636b28532c382920696628247573655f666c6f636b293b0a09636c6f73652853293b0a0a0924686661757367616265202e3d20246d697474653b0a0a096f70656e28532c223c74656d706c617465732f666f6f7465722e68746d6c22293b0a09666c6f636b28532c322920696628247573655f666c6f636b293b0a0924686661757367616265202e3d206a6f696e2822222c3c533e293b0a09666c6f636b28532c382920696628247573655f666c6f636b293b0a09636c6f73652853293b0a0a0924686661757367616265203d7e20732f3c5f67726166696b3e2f24696d616765736469722f673b0a0924686661757367616265203d7e20737e3c2f5b42625d5b4f6f5d5b44645d5b59795d3e7e3c62723e3c62723e3c63656e7465723e3c7461626c6520626f726465723d2230222063656c6c73706163696e673d2231222063656c6c70616464696e673d2231223e3c74723e3c74643e3c63656e7465723e3c666f6e7420666163653d2256657264616e612c417269616c222073697a653d2232223e3c623e576569746572656d706665686c756e67737363726970743c2f623e2c2076312e323c2f666f6e743e3c2f63656e7465723e3c2f74643e3c2f74723e3c74723e3c74643e3c63656e7465723e3c666f6e7420666163653d2256657264616e612c417269616c222073697a653d2232223e26636f70793b203c6120687265663d22687474703a2f2f7777772e636f6465722d776f726c642e646522207461726765743d225f626c616e6b223e3c623e436f6465722d576f726c642e64653c2f623e3c2f613e2c20323030312d32303033202853746566616e6f73293c2f666f6e743e3c2f63656e7465723e3c2f74643e3c2f74723e3c2f7461626c653e3c2f63656e7465723e3c62723e3c2f626f64793e7e3b0a096966282468666175736761626520217e202f3c5c2f626f64793e2f297b0a09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b0a09097072696e7420224b65696e203c2f626f64793e20696e206465722054656d706c61746520656e7468616c74656e2e223b0a0909657869742830293b0a097d0a0a09424547494e207b0a09096576616c207b2024646965645f696e5f6576616c203d20313b207265717569726520436f6d70726573733a3a5a6c69623b207d3b0a090969662028244029207b0a090909247a6c6962203d20303b0a09097d656c73657b0a090909247a6c6962203d20313b0a090909696d706f727420436f6d70726573733a3a5a6c69623b0a09097d0a097d0a0a0969662824454e567b27485454505f4143434550545f454e434f44494e47277d203d7e202f782d677a69702f2026262024677a6970203d3d20312026262024454e567b275345525645525f50524f544f434f4c277d2065712022485454502f312e3122297b0a09097072696e742022436f6e74656e742d456e636f64696e673a20782d677a69705c6e223b0a09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b0a0909696628247a6c6962297b0a09090962696e6d6f6465205354444f55543b0a0909096d7920246f7574203d20677a6f70656e285c2a5354444f55542c2022776222293b0a090909246f75742d3e677a77726974652824686661757367616265293b0a0909097072696e7420246f75743b0a090909246f75742d3e677a636c6f73653b0a09097d656c73657b0a0909096f70656e28472c20227c677a6970202d61202d637c22293b0a0909097072696e74204720246866617573676162653b0a09090973656c656374285354444f5554293b0a0a0909097072696e74203c473e3b0a090909636c6f73652847293b0a09097d0a097d656c7369662824454e567b27485454505f4143434550545f454e434f44494e47277d203d7e202f677a69702f2026262024677a6970203d3d20312026262024454e567b275345525645525f50524f544f434f4c277d2065712022485454502f312e3122297b0a09097072696e742022436f6e74656e742d456e636f64696e673a20677a69705c6e223b0a09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b0a0909696628247a6c6962297b0a09090962696e6d6f6465205354444f55543b0a0909096d7920246f7574203d20677a6f70656e285c2a5354444f55542c2022776222293b0a090909246f75742d3e677a77726974652824686661757367616265293b0a0909097072696e7420246f75743b0a090909246f75742d3e677a636c6f73653b0a09097d656c73657b0a0909096f70656e28472c20227c677a6970202d61202d637c22293b0a0909097072696e74204720246866617573676162653b0a09090973656c656374285354444f5554293b0a0a0909097072696e74203c473e3b0a090909636c6f73652847293b0a09097d0a097d656c73657b0a09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b0a09097072696e7420246866617573676162653b0a097d";$code =~ s/([a-fA-F0-9]{2})/pack("C", hex($1))/eg;eval $code;
	exit(0);
}

sub error {
	local($e) = @_;

	open(T,"<templates/error.html");
	flock(T,2) if($use_flock);
	$ausgabe = join("",<T>);
	flock(T,8) if($use_flock);
	close(T);
	$ausgabe =~ s/<_cgi>/$cgi/g;
	$ausgabe =~ s/<_e>/$e/g;

	&ausgabe($ausgabe);
}

sub mydate {
	if ($TimeZoneOffset ne "0" && $TimeZoneOffset =~ /^\-/i) {
		$TimeZoneOffset =~ s/[^0-9]//g;
		$Times = time() - ($TimeZoneOffset * 3600);
	}elsif ($TimeZoneOffset ne "0" && $TimeZoneOffset =~ /^\+/i) {
		$TimeZoneOffset =~ s/[^0-9]//g;
		$Times = time() + ($TimeZoneOffset * 3600);
	}elsif ($TimeZoneOffset ne "0") {
		$TimeZoneOffset =~ s/[^0-9]//g;
		$Times = time() + ($TimeZoneOffset * 3600);
	}else{
		$Times = time();
	}
	($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime ($Times);

	$mon_num = $mon+1;
	$hour = "0$hour" if ($hour < 10);
	$min = "0$min" if ($min < 10);
	$sec = "0$sec" if ($sec < 10);
	$year += 1900;
	
	$mon_num = "0$mon_num" if ($mon_num < 10);
	$mday = "0$mday" if ($mday < 10);

	$thishour = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0) [(localtime)[2]];
	$thismonth = (Januar,Februar,Maerz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember)[(localtime)[4]];
	$thisday = (Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag)[(localtime)[6]];

	$date3 = "Heute ist $thisday, <br>der $mday-$thismonth-$year, $hour:$min";
	$date = "$mday.$mon_num.$year , $hour:$min";
	$day = "$mday.$mon_num.$year";

	$time = "$hour:$min";
	$time2 = "$hour:$min:$sec";
}