#!/usr/bin/perl #alarm(10); # Höchstens 10 Sekunden #use CGI::Carp qw(fatalsToBrowser); require "templates/standard.org"; # Nutzungsbedingungen (Newsletter): # Lizenz: # Stand: 9.09.2001 # # Durch Download der Software erklären Sie sich mit diesen Lizenzabkommen einverstanden. # Der Newsletter ist Freeware, jedoch nicht zum GNU/GPL - Abkommen zuzuordnen. # Diese Lizenz erlaubt es Ihnen, Newsletter zu benutzen. # Als Nutzer des Newsletter können Sie auf eigene Gefahr die Software verändern und/oder auf # Ihre Bedürfnisse anpassen. Sie können auch Dritte mit der Anpassung/Veränderung beauftragen. # Aus rechtlichen Gründen, ist es nicht gestattet den Link zur Abmeldung zu entfernen, der beim Newsletter zu finden ist. # # 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 Newsletter 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. # Newsletter 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 Newsletter 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. # # Autor: Stefan Gipper (Stefanos) # Webseite: http://www.coder-world.de # E-Mail: support@coder-world.de # $version = "1.54"; $OS = $ENV{HTTP_USER_AGENT}; if($OS=~/vms/i){ $CRLF = "\n"; }elsif($OS=~/^MacOS$/i){ $CRLF = "\n\r"; }else{ $CRLF = "\015\012"; } binmode STDIN; read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'}); if($ENV{'CONTENT_TYPE'} =~ /^(.+)boundary=(.+)$/){ $boundary = '--'.$2; @parts = split(/$boundary/, $Daten); }else{ @parts = split(/&/, $Daten); } foreach (@parts){ if($boundary){ ($header, $content) = split(/$CRLF$CRLF/,$_,2); ($name) = ($header =~ / name="([^"]*?)"/s); }else{ ($name, $content) = split(/=/,$_,2); } if($name =~ /^[Ff][Ii][Ll][Ee]-[Uu][Pp][Ll][Oo][Aa][Dd]-[\d]+$/){ ($filename) = ($header =~ /; filename="([^"]*?)"/s); $filename =~ s/^.*\\//; ($mimetype) = ($header =~ /Content-Type: (.*)/s); $mimetype =~ s/($CRLF.*)//s; if($filename ne ""){ $content =~ s/^$CRLF//gs; $content =~ s/$CRLF$//gs; $FORM{$name} = "$content"; $FILE{$name} = "$filename"; $MIME{$name} = "$mimetype"; } }else{ $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if($name ne "emails" && $name ne "subject"){ $content =~ tr/+/ /; } $content =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $content =~ s/$CRLF/\n/g; chomp($content); if($FORM{$name} ne ""){ $FORM{$name} .= ",$content"; }else{ $FORM{$name} = "$content"; } } } foreach (split(/&/, $ENV{QUERY_STRING})){ ($name,$value) = split(/=/,$_,2); $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; $value =~ s///g; if($INFO{$name} ne ""){ $INFO{$name} .= ",$value"; }else{ $INFO{$name} = "$value"; } } $action = $INFO{'action'} || $FORM{'action'}; $cgi = "newsletter.cgi\?"; if($action eq "subscribe") {&eintragen;} elsif($action eq "unsubscribe") {&austragen;} elsif($action =~ /aktiv|archiv/) {&$action;} elsif($action =~ /admin/) {require "admin.cgi";&$action;} elsif($action =~ /newsletter/) {&$action;} &newsletter; sub newsletter { open(T,"); flock(T,8) if($use_flock); close(T); $temp =~ s/<_cgi>/$cgi/g; $temp =~ s/<_url>/$url/g; &ausgabe($temp); } sub eintragen { $email = $FORM{'submitemail'}; if($email =~ /^([a-zA-Z_0-9-\.]+)(\@)([a-zA-Z_0-9-\.]+)(\.)(\w+)$/ && $email ne ""){ open(F, "; flock(F,8) if($use_flock); close(F); foreach my $line (@file){ $line =~ s/[\n\r]//g; if(lc($line) eq lc($email)){ &error("Diese E-Mailadresse wurde schon eingetragen."); } } open(F, "; flock(F,8) if($use_flock); close(F); foreach my $i (@not){ $i =~ s/[\n\r]//g; if($i =~ /^\*/){ $stern = 1; ($vor,$maili) = split(/\@/ , $i); }else{ $stern = 0; } if(lc($i) eq lc($email)){ &error("Diese E-Mailadresse wurde gesperrt."); }elsif(lc($email) =~ /\@$maili$/i && $stern == 1){ &error("Diese E-Mailadresse wurde gesperrt."); } } unless($mailprog){ 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; } } } $key = crypt("$email","$cryptkey"); # Key generieren $key =~ s/^$cryptkey//isg; open(T,"); flock(T,8) if($use_flock); close(T); $i =~ s/<_cgi>/$cgi/g; $i =~ s/<_to>/$email/g; $i =~ s/<_from>/$webmasteremail/g; $i =~ s/<_aktiv>/$url\/newsletter.cgi?email=$email\&key=$key\&action=aktiv/g; if($path == 1){ open (M,"| $mailprog -f $webmasteremail -t"); }else{ open (M,"| $mailprog -t"); } print M $i; close(M); open(T,"); flock(T,8) if($use_flock); close(T); $line =~ s/<_email>/$email/g; &ausgabe($line); }else{ &error("Die E-Mailadresse ist leider nicht korrekt."); } } sub aktiv { $email = $INFO{'email'}; $key = $INFO{'key'}; open(F,"; flock(F,8) if($use_flock); close(F); foreach my $line (@file){ $line =~ s/[\n\r]//g; if(lc($line) eq lc($email)){ &error("Diese Emailadresse wurde schon eingetragen."); } } open(F,"; flock(F,8) if($use_flock); close(F); foreach my $i (@not){ $i =~ s/[\n\r]//g; if($i =~ /^\*/){ $stern = 1; ($vor,$maili) = split(/\@/ , $i); }else{ $stern = 0; } if(lc($i) eq lc($email)){ &error("Diese E-Mailadresse wurde gesperrt."); }elsif(lc($email) =~ /\@$maili$/i && $stern == 1){ &error("Diese E-Mailadresse wurde gesperrt."); } } $keyG = crypt("$email", "$cryptkey"); $keyG =~ s/^$cryptkey//isg; if($keyG ne $key){&error("Key stimmt nicht.");} open(F, "+; flock(F,8) if($use_flock); seek(F,0,0); truncate(F,0); print F "$email\n"; print F @file; flock(F,8) if($use_flock); close(F); if($new == 1){ open(T,"); flock(T,8) if($use_flock); close(T); $i =~ s/<_cgi>/$url\/$cgi/g; $i =~ s/<_email>/$email/g; unless($mailprog){ 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; } } } if($path == 1){ open (M,"| $mailprog -f $webmasteremail -t"); }else{ open (M,"| $mailprog -t"); } print M "To: $webmasteremail\n"; print M "From: $email\n"; print M "Reply-To: $webmasteremail2\n"; print M $i; close(M); } open(T,"); flock(T,8) if($use_flock); close(T); $i =~ s/<_cgi>/$url\/$cgi/g; $i =~ s/<_(to|email)>/$email/g; unless($mailprog){ 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; } } } if($path == 1){ open (M,"| $mailprog -f $webmasteremail -t"); }else{ open (M,"| $mailprog -t"); } print M "To: $email\n"; print M "From: $webmasteremail\n"; print M "Reply-To: $webmasteremail2\n"; print M $i; close(M); open(F,"+; seek(F,0,0); truncate(F,0); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime; $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]]; print F "$email\|Angemeldet\|$mday.$mon_num.$year , $hour:$min\|$ENV{'REMOTE_ADDR'}\|\n"; print F @ip; flock(F,8) if($use_flock); close(F); open(T,"); flock(T,8) if($use_flock); close(T); $i =~ s/<_email>/$email/g; &ausgabe($i); } sub aktiv2 { open(F,"; flock(F,8) if($use_flock); close(F); open(T,"); flock(T,8) if($use_flock); close(T); $daten[0] =~ s/[\n\r]//g; ($FORM{'empfang'},$FORM{'empfang2'},$html,$FORM{'subject'},$boundary) = split(/\|/,shift(@daten)); if($html == 1){ $FORM{'emails'} = join("",@daten); }else{ $FORM{'emails'} = join("",@daten); $FORM{'emails'} =~ s/\r//g; $FORM{'emails'} =~ s/\n/
/g; } $split =~ s/<_titel>/$FORM{'subject'}/g; $split =~ s/<_datum>//g; $split =~ s/<_text>/$FORM{'emails'}/g; $split =~ s/<_webseite>/$url2/g; &ausgabe("$split"); } sub archiv { &error("Zugriff verweigert.") if($SELECTarchiv == 1 && $INFO{'sid'} eq ""); if($INFO{'sid'} ne ""){ &sid; } open(F,"; flock(F,8) if($use_flock); close(F); open(T,"/,join("",)); flock(T,8) if($use_flock); close(T); for($i=0;$i<@daten;$i++){ $daten[$i] =~ s/[\n\r]//g; $plus = $split2; ($html,$subject,$text,$datum) = split(/\|/,$daten[$i]); if($subject){ $plus =~ s/<_titel>/$subject/g; }else{ $plus =~ s/<_titel>/Kein Titel/g; } $plus =~ s/<_datum>/$datum/g; $plus =~ s/<_i>/$i/g; $rest .= $plus; } $split .= $rest . $split3; $split =~ s/<_webseite>/$url2/g; $split =~ s/<_sid>/$INFO{'sid'}/g; if($INFO{'sid'} ne ""){ $split =~ s//$1/sg; }else{ $split =~ s///sg; } &ausgabe("$split"); } sub archiv2 { &error("Newsletter im Archiv nicht gefunden.") if($INFO{'x'} eq ""); &error("Zugriff verweigert.") if($SELECTarchiv == 1 && $INFO{'sid'} eq ""); if($INFO{'sid'} ne ""){ &sid; } open(F,"; flock(F,8) if($use_flock); close(F); open(T,"); flock(T,8) if($use_flock); close(T); $daten[$INFO{'x'}] =~ s/[\n\r]//g; ($html,$subject,$text,$datum) = split(/\|/,$daten[$INFO{'x'}]); if($html == 1){ $text =~ s/\[br\]/\n/g; }else{ $text =~ s/\[br\]/
/g; } $split =~ s/<_titel>/$subject/g; $split =~ s/<_datum>/$datum/g; $split =~ s/<_text>/$text/g; $split =~ s/<_webseite>/$url2/g; &ausgabe("$split"); } sub austragen { $email = $FORM{'submitemail'} || $INFO{'submitemail'} || $INFO{'email'} || $FORM{'email'}; open(F,"; flock(F,8) if($use_flock); close(F); foreach (@file){ $_ =~ s/[\n\r]//g; if(lc($_) eq lc($email)){ $nein = 1; } } if($nein != 1){ &error("Diese E-Mailadresse ist nicht vorhanden."); } $INFO{'del'} = $FORM{'del'} unless($INFO{'del'}); $INFO{'key'} = $FORM{'key'} unless($INFO{'key'}); $keyG = crypt("$email","$cryptkey"); # Key generieren $keyG =~ s/^$cryptkey//isg; if($optout == 1 && !$INFO{'key'} && $INFO{'del'} != 1 or $abmeldung == 2 && $INFO{'key'} && $INFO{'del'} != 1){ open(T,"); flock(T,8) if($use_flock); close(T); $temp =~ s/<_cgi>/$url\/$cgi/g; $temp =~ s/<_to>/$email/g; $temp =~ s/<_from>/$webmasteremail/g; $temp =~ s/<_aktiv>/$url\/newsletter.cgi?email=$email\&key=$keyG&del=1\&action=unsubscribe/g; unless($mailprog){ 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; } } } if($path == 1){ open (M,"| $mailprog -f $webmasteremail -t"); }else{ open (M,"| $mailprog -t"); } print M "To: $email\n"; print M "From: $webmasteremail\n"; print M "Reply-To: $webmasteremail2\n"; print M $temp; close(M); open(T,"); flock(T,8) if($use_flock); close(T); $temp =~ s/<_email>/$email/g; &ausgabe($temp); }elsif($abmeldung == 1 && $INFO{'del'} != 1 && $INFO{'key'}){ open(T,"); flock(T,8) if($use_flock); close(T); $temp =~ s/__email__/$email/g; $temp =~ s/__key__/$INFO{'key'}/g; &ausgabe($temp); } if($keyG ne $INFO{'key'} && $optout == 1){ &error("Key stimmt nicht."); } open(F,">templates/standard.dat"); flock(F,2) if($use_flock); foreach my $i (@file){ $i =~ s/[\n\r]//g; if(lc($i) ne lc($email)){ print F "$i\n"; } } flock(F,8) if($use_flock); close(F); open(T,"); flock(T,8) if($use_flock); close(T); $i =~ s/<_email>/$email/g; open(T,"); flock(T,8) if($use_flock); close(T); $i2 =~ s/<_cgi>/$url\/$cgi/g; $i2 =~ s/<_(email|to)>/$email/g; unless($mailprog){ 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; } } } if($path == 1){ open (M,"| $mailprog -f $webmasteremail -t"); }else{ open (M,"| $mailprog -t"); } print M "To: $email\n"; print M "From: $webmasteremail\n"; print M "Reply-To: $webmasteremail2\n"; print M $i2; close(M); if($newx == 1){ open(T,"); flock(T,8) if($use_flock); close(T); $x =~ s/<_cgi>/$url\/$cgi/g; $x =~ s/<_email>/$email/g; unless($mailprog){ 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; } } } if($path == 1){ open (M,"| $mailprog -f $webmasteremail -t"); }else{ open (M,"| $mailprog -t"); } print M "To: $webmasteremail\n"; print M "From: $email\n"; print M "Reply-To: $webmasteremail2\n"; print M $x; close(M); } open(F,"; flock(F,8) if($use_flock); close(F); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime; $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]]; open(F,">templates/standard.ip"); flock(F,2) if($use_flock); print F "$email\|Abgemeldet\|$mday.$mon_num.$year , $hour:$min\|$ENV{'REMOTE_ADDR'}\|\n"; print F @ip; flock(F,8) if($use_flock); close(F); &ausgabe($i); } # # Errorseite # sub error { local($e) = @_; open(T,"); flock(T,8) if($use_flock); close(T); $line =~ s/<_e>/$e/g; &ausgabe($line); } sub generate_boundary() { return "------=====================_" . time() . "==_"; } sub base64enc { my $mailpipe = shift; my $filename = shift; open(F,"<$filename"); my @b64str = ("A".."Z","a".."z","0".."9","+","/"); my($buflen,$num,$len,$dat,@dat,$a,$b,$c,$d,$e,$f,$g); $buflen=300*3; $num=0; { local $^W = 0; while(!eof(F)){ $len=read(F, $dat, $buflen); @dat=unpack('C*', $dat); while(@dat){ $a=shift(@dat); $b=shift(@dat); $c=shift(@dat); if($b eq ""){ ($d,$e)=($a>>2, ($a<<4)&0x3f); print $mailpipe "$b64str[$d]$b64str[$e]=="; }elsif($c eq "") { ($d,$e,$f)=(($a>>2), ((($a<<4)&0x3f) | $b>>4), ($b<<2)&0x3f); print $mailpipe "$b64str[$d]$b64str[$e]$b64str[$f]="; }else{ ($d,$e,$f,$g)= ($a>>2,(($a<<4)&0x3f) | $b>>4,($b<<2)&0x3f | $c>>6,$c&0x3f); print $mailpipe "$b64str[$d]$b64str[$e]$b64str[$f]$b64str[$g]"; } if(++$num==15){ print $mailpipe "\n"; $num=0; } } } } print $mailpipe "\n" unless ($num==0); } sub ausgabe { local($mitte) = @_; $code="09246d69747465203d7e20732f3c5f6367693e2f246367692f673b09246d69747465203d7e2073213c2f5b42625d5b4f6f5d5b44645d5b59795d3e213c62723e3c62723e3c63656e7465723e3c7461626c6520626f726465723d2230222063656c6c73706163696e673d2231222063656c6c70616464696e673d2231223e3c74723e3c746420616c69676e3d2263656e746572223e3c666f6e7420666163653d2256657264616e612c417269616c222073697a653d2232223e3c623e4e6577736c65747465727363726970743c2f623e2c20762476657273696f6e3c2f666f6e743e3c2f74643e3c2f74723e3c74723e3c746420616c69676e3d2263656e746572223e3c666f6e7420666163653d2256657264616e612c417269616c222073697a653d2232223e26636f70793b203c6120687265663d22687474703a2f2f7777772e636f6465722d776f726c642e646522207461726765743d225f626c616e6b223e3c623e436f6465722d576f726c642e64653c2f623e3c2f613e2c20323030312d32303034202853746566616e6f73293c2f666f6e743e3c2f63656e7465723e3c2f74643e3c2f74723e3c2f7461626c653e3c2f63656e7465723e3c2f626f64793e21673b09696628246d6974746520217e202f3c5c2f626f64793e2f2026262024616374696f6e206e652022616b74697632222026262024616374696f6e206e6520226172636869763222297b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b09097072696e7420224b65696e20266c743b2f626f64792667743b20656e7468616c74656e21223b0909657869743b097d09424547494e207b09096576616c207b2024646965645f696e5f6576616c203d20313b207265717569726520436f6d70726573733a3a5a6c69623b207d3b090969662028244029207b090909247a6c6962203d20303b09097d656c73657b090909247a6c6962203d20313b090909696d706f727420436f6d70726573733a3a5a6c69623b09097d097d0969662824454e567b27485454505f4143434550545f454e434f44494e47277d203d7e202f28782d677a69707c677a6970292f2026262024454e567b275345525645525f50524f544f434f4c277d2065712022485454502f312e31222026262024677a6970203d3d2031297b09097072696e742022436f6e74656e742d456e636f64696e673a2024315c6e223b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b090962696e6d6f6465205354444f55543b0909696628247a6c6962297b0909097072696e7420436f6d70726573733a3a5a6c69623a3a6d656d477a697028246d69747465293b09097d656c73657b0909096f70656e28475a49502c20227c20677a6970202d6622293b09090962696e6d6f646528475a4950293b0909097072696e7420475a495020246d697474653b090909636c6f736528475a4950293b09097d097d656c73657b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b09097072696e7420246d697474653b097d";$code =~ s/([a-fA-F0-9]{2})/pack("C", hex($1))/eg;eval $code; exit; } sub sid { $sid = $INFO{'sid'} || $FORM{'sid'}; if(!-e("templates/session.dat")){ open(F,"+; seek(F,0,0); truncate(F,0); foreach(@session){ s/[\n\r]//g; ($SESSIONkey,$SESSIONtime,$SESSIONip) = split(/\|/); if($Times < ($SESSIONtime+1800)){ if($ENV{'REMOTE_ADDR'} eq $SESSIONip && $SESSIONkey eq $sid){ $ySESSIONkey = $SESSIONkey; $ySESSIONtime = $Times; $ySESSIONip = $SESSIONip; print F "$SESSIONkey\|$Times\|$SESSIONip\|\n"; $yes = 1; }else{ print F $_ . "\n" if($ENV{'REMOTE_ADDR'} ne $SESSIONip); } } } flock(F,8) if($flock); close(F); &error("Keine gültige Session gefunden.") unless($yes); }