#!/usr/bin/perl require "protected/admin.pl"; $| = 1; $form_action = "lspro.cgi"; $ipblocktimout = 10800; ################################################################ # lspro.cgi # ################################################################ sub tz {if ($ENV{'SCRIPT_NAME'} !~ /lspro.cgi/) {die;}} ################################################################ # LIST SITE PRO # # Version 2.1 # # Copyright © 1999 # # by Gilbert Murgallis # # For latest version and support forum please visit # # http://www.listsitepro.com # ################################################################ ################################################################ # WARNING! Nothing Needs To Be Edited Below This Line WARNING!# ################################################################ &init_cgi; if ($in{'click'} ne "") { &log_in_hit; &time_check; print "Location: $lspro_base_url/$lspro_file_name\n\n"; exit; } elsif ($in{'display'} ne "") { &log_in_display; #&time_check; #print "Location: http://www.vinsalt.de/grafiken/dsa-top-50a.gif\n\n"; $filename = $image_filename{$in{'logo'}}||$image_filename{'default'}; print "Location: $image_url/$filename\n\n"; exit; } elsif ($in{'hit_out'} ne "") { &log_out_hit; &time_check; print "Location: $outurl\n\n"; exit; } elsif ($in{'request'} eq "new") { &sign_up; exit; } elsif ($in{'request'} eq "login_manager") { &login_manager; exit; } elsif ($in{'new_final'}) { &new_final; exit; } elsif ($in{'login'}) { &account_manager; exit; } else { print "Location: $lspro_base_url/$lspro_file_name\n\n"; exit; } sub create_html_file { if ($set_update > 1) { $update_minutes = "s"; } if ($set_reset > 1) { $reset_days = "s"; } open (DATA,"protected/data.file"); flock (DATA,2); @data_array = ; flock (DATA,8); close(DATA); @data_array = sort {$b <=> $a} @data_array; $found=0; $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); if (($new_array[0] >= $min_record_to_list) && ($found < $max_record)) { push(@sorted_array, join("\|", @new_array)); $found++; } $a++; } @data_array = @sorted_array; $ranking = "$lspro_site_name - powered by List Site PRO"; $ranking .= ""; $html_file = "html/lspro_list_header.txt"; &insert_html; if ($display_site_name =~ /^y/i) { $ranking .= "

$lspro_site_name

"; } #$ranking .= "

$lspro_site_name werden alle $set_update Minuten aktualisiert und beginnt alle $set_reset Tage von vorn.

"; $ranking .= "

Die $lspro_site_name werden alle $set_update Minuten aktualisiert und beginnt alle $set_reset Tage von vorn."; $ranking .= "

Webmaster: "; #$ranking .= ""; $ranking .= ""; $ranking .= "FAQ (nebst Anmeldung)"; $ranking .= " | "; $ranking .= "Account editieren
 

"; $ranking .= "
"; $ranking .= ""; #$ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $a=0; $b=1; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; if ($b == 10) { $ranking .= "
"; #$ranking .= "Die besten Seiten"; #$ranking .= "
"; $ranking .= "Rang"; $ranking .= ""; $ranking .= "
Website-Beschreibung"; $ranking .= "
"; $ranking .= " Wertung "; $ranking .= ""; $ranking .= " Verlinkung "; $ranking .= "
"; $ranking .= "
$b
"; $ranking .= "
"; if (($a < $max_banner) && ($new_array[9] ne "")) { $ranking .= "
"; $ranking .= ""; $ranking .= "\"$new_array[6]\"
"; } $ranking .= ""; $ranking .= "$new_array[6]"; $ranking .= " $new_array[7]"; &tz; $ranking .= "
"; $ranking .= "
$new_array[0]
"; $ranking .= "
"; $ranking .= "
$new_array[1]
"; $ranking .= "
"; $html_file = "html/lspro_break_10.txt"; &insert_html; $ranking .= "
TOP 11 - 25 Seiten

"; } if (($b == 10) && ($found > 10)) { $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; } if ($b == 25) { $ranking .= "
"; $ranking .= "Rang"; $ranking .= ""; $ranking .= "
Website-Beschreibung"; $ranking .= "
"; $ranking .= " Wertung "; $ranking .= ""; $ranking .= " Verlinkung "; $ranking .= "
"; $html_file = "html/lspro_break_25.txt"; &insert_html; $ranking .= "
TOP 26 - 50 Seiten

"; } if (($b == 25) && ($found > 25)) { $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; } if ($b == 50) { $ranking .= "
"; $ranking .= "Rang"; $ranking .= ""; $ranking .= "
Website-Beschreibung"; $ranking .= "
"; $ranking .= " Wertung "; $ranking .= ""; $ranking .= " Verlinkung "; $ranking .= "
"; $html_file = "html/lspro_break_50.txt"; &insert_html; $ranking .= "
TOP 51 - 75 Seiten

"; } if (($b == 50) && ($found > 50)) { $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; } if ($b == 75) { $ranking .= "
"; $ranking .= "Rang"; $ranking .= ""; $ranking .= "
Website-Beschreibung"; $ranking .= "
"; $ranking .= " Wertung "; $ranking .= ""; $ranking .= " Verlinkung "; $ranking .= "
"; $html_file = "html/lspro_break_75.txt"; &insert_html; $ranking .= "
Der Rest

"; } if (($b == 75) && ($found > 75)) { $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; $ranking .= ""; } $b++; $a++; } $ranking .= "
"; $ranking .= "Rang"; $ranking .= ""; $ranking .= "
Website-Beschreibung"; $ranking .= "
"; $ranking .= " Wertung "; $ranking .= ""; $ranking .= " Verlinkung "; $ranking .= "
"; $ranking .= "
Webmaster: "; #$ranking .= ""; $ranking .= ""; $ranking .= "FAQ (nebst Anmeldung)"; $ranking .= " | "; $ranking .= "Account editieren
"; $ranking .= "

Kontakt: "; $ranking .= ""; $ranking .= "$lspro_email_address

"; $html_file = "html/lspro_list_footer.txt"; &insert_html; #Do not remove the copyright notice. If you are using the program and remove the copyright notice you are in violation of our copyright. $ranking .= "

Copyright © 1999 List Site PRO, All Rights Reserved

"; $ranking .= ""; open (RANKING,">$lspro_root_path/$lspro_file_name"); flock (RANKING,2); print RANKING $ranking; flock (RANKING,8); close (RANKING); } sub init_cgi { my $length = $ENV{CONTENT_LENGTH}; my $query = $ENV{QUERY_STRING}; my (@assign); if ($query){ @assign = split(/&/,$query); $formlength = @assign; } elsif ($length) { read(STDIN, $_, $length); chomp; @assign = split('&'); $formlength = @assign; } else { $formlength = 0; } for (my $i=0; $i<$formlength; $i++) { my ($name,$value) = split('=',$assign[$i]); $value =~ tr/+/ /; $value =~ s/%([a-fFA-F0-9][a-fFA-F0-9])/pack("C", hex($1))/eg; $value =~ s/~!/ ~!/g; if (defined($in{$name})) { $in{$name} .= ",$value"; } else { $in{$name} = $value; } } } sub insert_html { open (html_insert,"$html_file"); @html_insert = ; close (html_insert); foreach $line (@html_insert) { $ranking .= $line; } } sub insert_html2 { open (html_insert,"$html_file"); @html_insert = ; close (html_insert); foreach $line (@html_insert) { print $line; } } sub read_ipblock_file() { if( open(IPBLOCK, "; close(IPBLOCK); } else { @ips = (); } %block = (); $curtime = time(); foreach $blocked_ip (@ips) { chop $blocked_ip; if( $blocked_ip =~ /^([^:]+):([^:]+)$/ && $2 > $curtime ) { $block{$1} = $2; } } return %block; } sub write_ipblock_file($) { my ($datahash) = @_; if( open(IPBLOCK, ">protected/ipblock.file") ) { foreach $hashkey ( sort(keys(%$datahash)) ) { print(IPBLOCK $hashkey.':'.$datahash->{$hashkey}."\n"); } close(IPBLOCK); } } sub log_in_hit { %blocked_ips = read_ipblock_file(); $blockid = $ENV{'REMOTE_ADDR'}.'.'.$in{'click'}.'.click'; if( $blocked_ips{$blockid} < time() ) { $blocked_ips{$blockid} = time() + $ipblocktimout; open (DATA,"+; $account = $in{'click'}; $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); if ($new_array[12] == $account) { @new_array[2]++; $data_array[$a] = join("\|",@new_array); } $a++; } seek (DATA, 0, 0); print DATA @data_array; flock (DATA,8); close (DATA); write_ipblock_file(\%blocked_ips); } } sub log_in_display { %blocked_ips = read_ipblock_file(); $blockid = $ENV{'REMOTE_ADDR'}.'.'.$in{'display'}.'.display'; if( $blocked_ips{$blockid} < time() ) { $blocked_ips{$blockid} = time() + $ipblocktimout; open (DATA,"+; $account = $in{'display'}; $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); if ($new_array[12] == $account) { @new_array[2]++; $data_array[$a] = join("\|",@new_array); } $a++; } seek (DATA, 0, 0); print DATA @data_array; flock (DATA,8); close (DATA); write_ipblock_file(\%blocked_ips); } } sub log_out_hit { %blocked_ips = read_ipblock_file(); $blockid = $ENV{'REMOTE_ADDR'}.'.'.$in{'hit_out'}.'.hit_out'; if( $blocked_ips{$blockid} < time() ) { $blocked_ips{$blockid} = time() + $ipblocktimout; open (DATA,"+; $account = $in{'hit_out'}; $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); if ($new_array[12] == $account) { @new_array[3]++; $outurl = $new_array[8]; $data_array[$a] = join("\|",@new_array); } $a++; } seek (DATA, 0, 0); print DATA @data_array; flock (DATA,8); close (DATA); write_ipblock_file(\%blocked_ips); } else { open(DATA, "; flock(DATA, 8); close(DATA); if( $#mydata == 0 ) { @new_array = split(/\|/,$mydata[0]); $outurl = $new_array[8]; } } } sub time_check { $current_time = time(); open (RESET_TIME,"; flock (RESET_TIME,8); close (RESET_TIME); open (UPDATE_TIME,"; flock (UPDATE_TIME,8); close (UPDATE_TIME); if ($current_time > $reset_time+($set_reset*86400)) { open (RESET_TIME,">protected/reset_time.txt"); flock (RESET_TIME,2); print RESET_TIME "$current_time"; flock (RESET_TIME,8); close (RESET_TIME); &reset; } elsif ($current_time > $update_time+($set_update*60)) { open (UPDATE_TIME,">protected/update_time.txt"); flock (UPDATE_TIME,2); print UPDATE_TIME "$current_time"; flock (UPDATE_TIME,8); close (UPDATE_TIME); &update; } } sub update { open (DATA,"; flock (DATA,8); close (DATA); $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); $new_array[0] = $new_array[0] + $new_array[2]; $new_array[1] = $new_array[1] + $new_array[3]; $new_array[2] = 0; $new_array[3] = 0; $data_array[$a] = join("\|",@new_array); $a++; } open (DATA,">protected/data.file"); flock (DATA,2); print DATA @data_array; flock (DATA,8); close (DATA); &create_html_file; } sub reset { open (DATA,"; flock (DATA,8); close (DATA); $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); $new_array[0] = 0; $new_array[1] = 0; $data_array[$a] = join("\|",@new_array); $a++; } open (DATA,">protected/data.file"); flock (DATA,2); print DATA @data_array; flock (DATA,8); close (DATA); &create_html_file; } sub header { print "Content-type: text/html\n\n"; $header = "$html_page_title"; $header .= ""; print $header; } sub footer { $footer = ""; print $footer; } sub sign_up { $html_page_title = "$lspro_site_name - powered by List Site PRO"; &header; $html_file = "html/lspro_std_header.txt"; &insert_html2; $html_file = "html/lspro_rules.txt"; &insert_html2; print <$lspro_site_name

Anmelden bei der DSA-Top 50

Name

eMail-Adresse

Website-Name

Website-Beschreibung

Website-Adresse (URL)

Banner-Adresse (URL)

Banner-Breite
(max $max_banner_width)

Banner-Höhe
(max $max_banner_height)

Passwort

Zurück zu $lspro_site_name

EOF $html_file = "html/lspro_std_footer.txt"; &insert_html2; #Do not remove the copyright notice. If you are using the program and remove the copyright notice you are in violation of our copyright. print "

Copyright © 1999 List Site PRO, All Rights Reserved

"; &footer; } sub new_final { &validate_data; $member_id = time(); $line = join ("\|",0,0,0,0,$in{'name'},$in{'email'},$in{'site_name'},$in{'site_description'},$in{'site_url'},$in{'banner_url'},$in{'preview_url'},$in{'password'},$member_id,$in{'banner_height'},$in{'banner_width'},0,0,0,0); $line .= "\n"; open(DATA, ">>protected/hiddendata.file"); flock (DATA,2); print DATA $line; flock (DATA,8); close (DATA); $html_page_title = "$lspro_title"; &header; $html_file = "html/lspro_std_header.txt"; &insert_html2; print "

$lspro_site_name

"; print "
"; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print "
"; print "
Vielen Dank $in{'name'}!
"; print "
"; print "eMail-Adresse "; print ""; print "$in{'email'}"; print "
"; print "Website-Name "; print ""; print "$in{'site_name'}"; print "
"; print "Website-Beschreibung "; print ""; print "$in{'site_description'}"; print "
"; print "Website-Adresse (URL) "; print ""; print "$in{'site_url'}"; print "
"; print "Banner-Adresse (URL) "; print ""; print "$in{'banner_url'}"; print "
"; print "Banner-Höhe"; print ""; print "$in{'banner_height'}"; print "
"; print "Banner-Breite "; print ""; print "$in{'banner_width'}"; print "
"; print "Account-Nummer (merken) "; print ""; print "$member_id"; print "
"; print "Passwort "; print ""; print "$in{'password'}"; print "
"; print "
"; print "Account editieren
"; print "
"; print "
"; print ""; print ""; print ""; print ""; print ""; print ""; print "
"; print "
Link-Anweisungen
"; print "
"; &get_link_footer; print "
"; print "
"; print "Zurück zu $lspro_site_name
"; $html_file = "html/lspro_std_footer.txt"; &insert_html2; #Do not remove the copyright notice. If you are using the program and remove the copyright notice you are in violation of our copyright. print "

Copyright © 1999 List Site PRO, All Rights Reserved

"; &footer; &email_member; &email_webmaster; exit; } sub get_link_footer { #

Copy the the graphic banner below to your #hard drive, then upload it to your web site.

#

print <GRAFISCHR LINK:

<A HREF="$lspro_cgi_url/lspro.cgi?click=$member_id">
<IMG SRC="$lspro_cgi_url/lspro.cgi?display=$member_id&logo=default" HEIGHT="$image_height" WIDTH="$image_width" BORDER="0"></A>

 

NORMALER TEXT LINK:

<A HREF="$lspro_cgi_url/lspro.cgi?click=$member_id">$image_text</A>

EOF } sub email_member { open(MAIL,"|$mailprog -t"); print MAIL "To: $in{'email'}\n"; print MAIL "From: $lspro_email_address\n"; print MAIL "Subject: Bestaetigung des Mitglieds-Kontos $member_id\n\n"; print MAIL "Vielen Dank $in{'name'} fuer die Teilnahme an der $lspro_site_name.\n\n"; print MAIL "Folgende Informationen wurden uebermittelt:\n\n"; print MAIL "eMail-Adresse: $in{'email'}\n\n"; print MAIL "Website-Name: $in{'site_name'}\n\n"; print MAIL "Website-Beschreibung: $in{'site_description'}\n\n"; print MAIL "Website-Adresse (URL): $in{'site_url'}\n\n"; print MAIL "Banner-Adresse (URL): $in{'banner_url'}\n\n"; print MAIL "Banner-Hoehe: $in{'banner_height'}\n\n"; print MAIL "Banner-Breite: $in{'banner_width'}\n\n"; print MAIL "Account-Nummer: $member_id\n\n"; print MAIL "Passwort: $in{'password'}\n\n"; print MAIL "Wenn diese Informationen inkorrekt sind, oder sie an den DSA-Top 50 nicht teilnehmen wollen gehen sie zu $lspro_cgi_url/lspro.cgi?request=login_manager.\n\n"; print MAIL "\n\n"; print MAIL "GRAFISCHER LINK:\n\n"; print MAIL "\n"; print MAIL "
$image_text
\n\n"; #print MAIL "To get the graphic banner go to $image_filename and copy it to your hard drive, then upload it to your web site.\n\n"; print MAIL "TEXT LINK:\n\n"; print MAIL "$image_text\n\n"; print MAIL "\n\n"; close (MAIL); } sub email_webmaster { open(MAIL,"|$mailprog -t"); print MAIL "To: $lspro_email_address\n"; print MAIL "From: $lspro_email_address\n"; print MAIL "Subject: Ein neues Mitglied fuer $lspro_site_name!\n\n"; print MAIL "Zum neuen Mitglied gibt es folgende Informationen:\n\n"; print MAIL "eMail-Adresse: $in{'email'}\n\n"; print MAIL "Website-Name: $in{'site_name'}\n\n"; print MAIL "Website-Beschreibung: $in{'site_description'}\n\n"; print MAIL "Website-Adresse (URL): $in{'site_url'}\n\n"; print MAIL "Banner-Adresse (URL): $in{'banner_url'}\n\n"; print MAIL "Banner-Hoehe: $in{'banner_height'}\n\n"; print MAIL "Banner-Breite: $in{'banner_width'}\n\n"; print MAIL "Account-Nummer: $member_id\n\n"; print MAIL "Passwort: $in{'password'}\n\n"; print MAIL "Dies ist eine automatische Nachricht, bitte nicht antworten.\n\n"; print MAIL "\n\n"; close (MAIL); } sub validate_data { unless ($in{'email'} =~ /^[\w-.]+\@[\w-.]+$/) { $error_text .= "Keine gültige eMail-Adresse.
"; $error = 1; } if ($in{'name'} eq "") { $error_text .= "Der Name muß angegeben werden.
"; $error = 1; } if ($in{'site_name'} eq "") { $error_text .= "Der Website-Name muß angegeben werden.
"; $error = 1; } unless ($in{'site_url'} =~ /\http:/) { $error_text .= "Keine gültige Website-Adresse.
"; $error = 1; } if ($in{'banner_url'} ne ""){ unless ($in{'banner_url'} =~ /\http:/) { $error_text .= "Keine gültige Banner-Adresse.
"; $error = 1; } } if (($in{'banner_url'} ne "") && ($in{'banner_width'} > $max_banner_width)) { $error_text .= "Das Banner darf maximal $max_banner_width Pixel breit sein.
"; $error = 1; } if (($in{'banner_url'} ne "") && ($in{'banner_height'} > $max_banner_height)) { $error_text .= "Das Banner darf maximal $max_banner_height Pixel hoch sein.
"; $error = 1; } if (($in{'banner_url'} ne "") && ($in{'banner_height'} eq "")) { $error_text .= "Die Höhe des Banners (in Pixel) müssen angegeben werden.
"; $error = 1;} if (($in{'banner_url'} ne "") && ($in{'banner_width'} eq "")) { $error_text .= "Die Breite des Banners (in Pixel) müssen angegeben werden.
"; $error = 1;} if ($in{'password'} eq "") { $error_text .= "Es muß ein Passwort eingegeben werden.
"; $error = 1; } require "lsp_fktneu.pl"; if ($error == 1) { &error; } } sub error { $html_page_title = "Error!"; &header; $html_file = "html/lspro_std_header.txt"; &insert_html2; print "

Folgende/r Fehler sind aufgetreten:

"; print $error_text; print "
Bitte benutze die Zurück-Funktion des Browsers um den/die Fehler zu korrigieren.


"; $html_file = "html/lspro_std_footer.txt"; &insert_html2; #Do not remove the copyright notice. If you are using the program and remove the copyright notice you are in violation of our copyright. print "

Copyright © 1999 List Site PRO, All Rights Reserved

"; &footer; exit; } sub update_account { open (DATA,"; flock (DATA,8); close (DATA); $account = $in{'account'}; $a=0; foreach (@data_array) { @new_array = split(/\|/,$data_array[$a]); if ($new_array[12] == $account) { $new_array[4]=$in{'name'}; $new_array[5]=$in{'email'}; $new_array[6]=$in{'site_name'}; $new_array[7]=$in{'site_description'}; $new_array[8]=$in{'site_url'}; $new_array[9]=$in{'banner_url'}; $new_array[11]=$in{'new_password'}; $new_array[13]=$in{'banner_height'}; $new_array[14]=$in{'banner_width'}; } $data_array[$a] = join("\|",@new_array); $a++; } open (DATA,">protected/data.file"); flock (DATA,2); print DATA @data_array; flock (DATA,8); close (DATA); } sub login_manager { $html_page_title = "Account Manager - Powered by List Site PRO"; &header; $html_file = "html/lspro_std_header.txt"; &insert_html2; print < 

Account Manager
Account-Nummer
Passwort

EOF print "
"; print "Zurück zu $lspro_site_name
"; $html_file = "html/lspro_std_footer.txt"; &insert_html2; #Do not remove the copyright notice. If you are using the program and remove the copyright notice you are in violation of our copyright. print "

Copyright © 1999 List Site PRO, All Rights Reserved

"; &footer; exit; } sub account_manager { open (EDIT_MEMBER,"; flock (EDIT_MEMBER,8); close (EDIT_MEMBER); $valid=0; $a=0; foreach (@edit_member) { @edit_array = split(/\|/,$edit_member[$a]); if (($in{'account'} == $edit_array[12]) && ($in{'password'} eq $edit_array[11])) { $valid++; if ($in{'action'} eq "process") { $in{'password'} = $in{'new_password'}; $edit_array[4]=$in{'name'}; $edit_array[5]=$in{'email'}; $edit_array[6]=$in{'site_name'}; $edit_array[7]=$in{'site_description'}; $edit_array[8]=$in{'site_url'}; $edit_array[9]=$in{'banner_url'}; $edit_array[10]=$in{'preview_url'}; $edit_array[11]=$in{'new_password'}; &update_account } $html_page_title = "Account Manager - Powered by List Site PRO"; &header; $html_file = "html/lspro_std_header.txt"; &insert_html2; print <$lspro_site_name

EOF if ($in{'action'} eq "process") { print < EOF } print <
Account editieren
Account aktualisiert...

Name

eMail-Adresse

Website-Name

Website-Beschreibung

Website-Adresse (URL)

Banner-Adresse (URL)

Banner-Breite
(max $max_banner_width)

Banner-Höhe
(max $max_banner_height)

Passwort

Zurück zu $lspro_site_name

EOF $html_file = "html/lspro_std_footer.txt"; &insert_html; #Do not remove the copyright notice. If you are using the program and remove the copyright notice you are in violation of our copyright. print "

Copyright © 1999 List Site PRO, All Rights Reserved

"; &footer; exit; } $a++; } if ($valid == 0) { $error_text = "Eine falsche Account-Nummer oder ein falsches Passwort wurde eingegeben.
"; &error; } exit; }