#!/usr/bin/perl ############################### # # Candle # ############################### push (@INC,'w:/cgi-bin','e:/worksite/cgi-bin/', '/home/mirab/Public/','/home/mirab/Public/cgi-bin'); require "cgilib.pl5"; &Parse; srand(time); $glBaseDir = '/home/mirab/Public/'; #$glBaseDir = 'e:/worksite'; #$glBaseDir = 'w:/'; if ($parse{t}){$glGarden = $parse{t}} else {$glGarden = 'us_attack'} $glCgiDir = "$glBaseDir/cgi-bin/memorial"; $glDataDir = "$glBaseDir/cgi-data/memorial"; $glTemplatesFolder = "$glDataDir/$glGarden/templates"; $glSurpriseFolder = "$glDataDir/$glGarden/surprises"; $glFlowersDir = "$glCgiDir/$glGarden/data"; $glDifferntCandleImages = 4; $glLocation = "Location: http://cgi1.icq.com/cgi-bin/memorial/candles.pl5?t=$glGarden\r\n\r\n"; if ($parse{a} eq "a"){ &AddCandle; &CreatePage; # print $glLocation; } print "Content-type: text/html\r\n\r\n"; &PrintPage($parse{p}); sub PrintPage { my $page = $_[0]; unless ($page){$page = 'new'}; my $head = &ReadTemplate("$glTemplatesFolder/head.html"); my $nav = &ReadTemplate("$glTemplatesFolder/nav.html"); my $mid = &ReadTemplate("$glTemplatesFolder/mid.html"); my $foot = &ReadTemplate("$glTemplatesFolder/foot.html"); open (CNT, "<$glFlowersDir/pages.cnt") or die ( "$! - Can't Find CNT file - $glFlowersDir/pages.cnt"); # flock (CNT,2); $pages = ; # flock (CNT,8); close CNT; ############################## # fix for wc -l ############################## # $totalCandles = `wc -l $glFlowersDir/bak.can`; # $totalCandles =~ /(.*) $glFlowersDir\/bak.can/; # $totalCandles =$1; # $pages = int($totalCandles/30); $pagesDec = int($pages/100); ############################## ############################## # fix for total cans ############################## open (NEW_CANDLES, "<$glFlowersDir/new.can") or die ( "$! - Can't Read $glFlowersDir/new.can"); @new_candles = (); close NEW_CANDLES; $totalCandles = int(($pages * 40) + $#new_candles); ############################## if ($page eq 'new'){ $pageNum = $pages + 1; } else { $pageNum = $page; } $pageDec = int($pageNum/100); $show = 0; if ($pageDec == 0){ $snav .= "\n"; for ($x=1; ($x<101 && $x<$pages+1); $x++){ $tnav2 = $nav; $tnav2 =~ s//$x/gi; if ($pageNum == $x){ $tnav2 = "\ \;$pageNum"; } $snav .= $tnav2; } } $onav .= $tnav; $dCut = 1; if ($pageDec > 199){ $dCut = 200; } for ($d=$dCut; $d<$pagesDec+1; $d++){ $tnav = $nav; $show = $d * 100; $tnav =~ s//$show/gi; if ($pageDec == $d){ $snav .= "\n"; for ($x=$show; ($x<$show+101 && $x<$pages+1); $x++){ $tnav2 = $nav; $tnav2 =~ s//$x/gi; if ($pageNum == $x){ $tnav2 = "\ \;$pageNum"; } $snav .= $tnav2; } } $onav .= $tnav; } if ($pageDec > 199){ $onav = "$snav

\nView first 20,000 Pages\n$onav"; }else { $onav = "$snav

\n1\n$onav"; } $opage = $page; $tpage = $pages+1; $opage =~ s/new/$tpage/gi; &PrintTemplate("$head",'',"$onav",'',&Psik($opage),'',&Psik($tpage), '',&Psik($totalCandles)); open (CANDLES, "<$glFlowersDir/$page.can") or die ( "$! - Can't Read $glFlowersDir/$page.can"); @candles = (); close CANDLES; $myTR = 0; foreach $candle (@candles){ $myTR++; ($id,$name,$from,$msg) =split(/\t/, "$candle"); $type = &RndType(); $flag = ""; $border = 0; if (length($id) > 4 && length($id) < 10 && $id =~ /^\d+$/){ $url = " "; if ($name eq "ICQ User"){ $name = "$id"; } }elsif ($id =~ /\@/){ $url = ""; }else { $url = ""; } if ($from ne ""){ $flag = $from; $flag =~ tr/A-Z/a-z/; $border = 1; &initCodes; if ($code{$flag} > 1) { $flag = $code{$flag}; }elsif ($code{$flag} eq 'na') { $border = 0; } $from = "\($from\)"; } if ($msg ne ""){ $msg = ": $msg"; } &PrintTemplate("$mid",'',$url,'',$name,'',$from,'',$msg,'',$type,'',$flag,'',$border); if ($myTR == 4){ print ""; $myTR =0; } } &PrintTemplate("$foot",'',"$onav",'',"$opage",'',"$tpage"); } sub RndType{ my $num; $num =(int(rand()* $glDifferntCandleImages) + 1); return $num; } sub AddCandle { my $line; my $dop = 0; if ($parse{name}){ $name = $parse{name}; $name = &clear_input_line("$name"); return if $name =~ /osama/gi; return if $name =~ /laden/gi; }else { $name = 'ICQ User'; } $id = $parse{id}; # $id = &clear_input_line("$id"); $from = $parse{from}; $from = &clear_input_line("$from"); $msg = $parse{msg}; &Init; $msg = &clear_input_line("$msg"); return unless &filter("$msg"); #check for dups on page $line = "$id\t$name\t$from\t$msg\t\n"; $line =~ tr/a-zA-Z//cd; open (NEW, "<$glFlowersDir/new.can") or die ( "$! - Can't Find NEW file - $glFlowersDir/new.can"); flock (NEW,2); while () { $x = $_; $x =~ tr/a-zA-Z//cd; if ($x eq $line){ $dop = 1; last; } } flock (NEW,8); close NEW; return if $dop; #write to file open (NEW, ">>$glFlowersDir/new.can") or die ( "$! - Can't Find NEW file - $glFlowersDir/new.can"); flock (NEW,2); print NEW "$id\t$name\t$from\t$msg\t\n"; flock (NEW,8); close NEW; open (BAK, ">>$glFlowersDir/bak.can") or die ( "$! - Can't Find BAK file - $glFlowersDir/new.can"); flock (BAK,2); print BAK "$id\t$name\t$from\t$msg\t\n"; flock (BAK,8); close BAK; } sub CreatePage { open (CANDLES, "<$glFlowersDir/new.can") or die ( "$! - Can't Read $glFlowersDir/new.can"); @candles = (); close CANDLES; if ($#candles > 49){ open (CNT, "<$glFlowersDir/pages.cnt") or die ( "$! - Can't Find CNT file - $glFlowersDir/pages.cnt"); flock (CNT,2); $pages = ; $pages++; flock (CNT,8); close CNT; if($pages < 10) { $totalCandles = `wc -l $glFlowersDir/bak.can`; $totalCandles =~ /(.*) $glFlowersDir\/bak.can/; $totalCandles =$1; $pages = int($totalCandles/40); } open (CNT, ">$glFlowersDir/pages.cnt") or die ( "$! - Can't Find CNT file - $glFlowersDir/pages.cnt"); flock (CNT,2); print CNT $pages; flock (CNT,8); close CNT; # $pages = `wc -l $glFlowersDir/bak.can`; # $totalCandles =~ /(.*) $glFlowersDir\/bak.can/; #$totalCandles =$1; #$pages = int($totalCandles/30); open (PAGE, ">$glFlowersDir/$pages.can") or die ( "$! - Can't Find PAGE file - $glFlowersDir/pages.can"); flock (PAGE,2); for ($i=0; $i<40; $i++){ print PAGE $candles[$i]; } flock (PAGE,8); close PAGE; open (CANDLES, ">$glFlowersDir/new.can") or die ( "$! - Can't Read $glFlowersDir/new.can"); flock (CANDLES,2); for ($i=40; $i<$#candles; $i++){ print CANDLES $candles[$i]; } flock (CANDLES,8); close CANDLES; } } sub clear_input_line { my ($line) = $_[0]; my $x = 0; my $chars = 0; my $len = length($line); my $new_str = ""; for($x = 0; $x < $len; $x++) { if(substr($line, $x, 1) eq " ") { $chars = 0; } else { $chars++; } if($chars > 20) { $line = substr($line, 0, $x)." ".substr($line, $x, $len - $x); $len++; $chars = 0; } } $new_str = $line; $new_str =~ s/\t/ /gi; $new_str =~ s// /gi; return $new_str; } sub Init { @glBadStrings = ( 'www', 'sex', 'http', 'HAPPY BIRTHDAY', 'fuck', 'hahaha', 'Poor little monkeys', 'AMERIKA IZ DED', 'USA WILL FALL IN PEACES', 'HAHAHA', 'vagina', 'KILL ALL ', 'AMERICA MUST DIE', 'lesbian teen', 'gay teen', 'teen gay', 'teen lesbian', 'lesbians teen', 'gays teen', 'teens lesbian', 'teens gay', 'lottery', 'mortgage', 'hitler', 'nazi', 'makemoney', 'blowjob', 'bondage', 'cornhole', 'cunnilingus', 'masturbation', 'sadomasochism', 'genitalia', 'gaylovers', 'fellatio', 'feltch', 'penis', 'pussy', 'nigger', 'semen', ); } sub filter { my $temp = $_[0]; my $pass = 1; foreach $b (@glBadStrings){ if ($temp =~ /$b/gi){ $pass = 0; # print "$temp\n"; last; } } return $pass; } sub initCodes { $code{'chile, republic of'} = 56; $code{'czech republic'} = 42; $code{'dominican republic'} = 110; $code{'korea, north (dprk)'} = 850; $code{'korea, republic of (south)'} = 82; $code{'lao people\'s democratic republic'} = 856; $code{'moldova, republic of'} = 373; $code{'puerto rico, common wealth of'} = 121; $code{'st. lucia'} = 122; $code{'st. helena'} = 290; $code{'st. kitts'} = 115; $code{'syrian arab republic'} = 963; $code{'tanzania, united republic of'} = 255; $code{'vietnam'} = 84; # countries which have no support $code{'bosnia and herzegovina'} = 'na'; $code{'british virgin islands'} = 'na'; $code{'cape verde islands'} = 'na'; $code{'central african republic'} = 'na'; $code{'congo, democratic republic of (zaire)'} = 'na'; $code{'congo, republic of the'} = 'na'; $code{'cocos-keeling islands'} = 'na'; $code{'cocos (keeling) islands'} = 'na'; $code{'cote d\'ivoire (ivory coast)'} = 'na'; $code{'equatorial guinea'} = 'na'; $code{'guam, us territory of'} = 'na'; $code{'iran, islamic republic of'} = 'na'; $code{'st. kitts and nevis'} = 'na'; $code{'st. pierre and miquelon'} = 'na'; $code{'st. vincent and the grenadines'} = 'na'; $code{'sao tome and principe'} = 'na'; $code{'trinidad and tobago'} = 'na'; $code{'turks and caicos islands'} = 'na'; $code{'united arab emirates'} = 'na'; $code{'wallis and futuna islands'} = 'na'; $code{'virgin islands of the united states'} = 'na'; $code{'yugoslavia - serbia'} = 'na'; $code{'yugoslavia - montenegro'} = 'na'; $code{'libyan arab jamahiriya'} = 'na'; $code{'macedonia (f.y.r.o.m.)'} = 'na'; $code{'micronesia, federated states of'} = 'na'; $code{'netherlands antilles'} = 'na'; } sub Psik { my $temp = reverse $_[0]; $temp =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g; return scalar reverse $temp; }