#!/usr/bin/perl ############################### # Hot Links Pro 3 addlink.cgi # Created by Mike Ramirez # Nothing below here is configurable ############################### require './source/headerfooter.pl'; require './source/config.pl'; require './source/get.pl'; require './lang/langset.pl'; ############################### use CGI; my $q = CGI->new; print $q->header; $action = $q->param("action"); if ($action eq "add") {&addform} if ($action eq 'edit') {&passcheck} if ($action eq 'login') {&lookup} if ($action eq 'addlink') {&checkforduplicate} if ($action eq 'metaform') {&metaform} if ($action eq 'getmeta') {&getmeta} ################################################## sub metaform { ################################################## $category = $q->param("category"); &header; print <<"HTML";
 $shtext1 : $altext1
$altext6:

HTML &footer; } ################################################## sub getmeta { ################################################## $url = $q->param("url"); open (FILE, "$basepath/bannedurls.txt"); my @urls = ; close(FILE); foreach $line (@urls) { chomp($line); if ($url =~ m/http:\/\/$line/i) {&error2("$altext33")} } $content = get($url); if ($content) { #Get the title $content =~ /(.*)<\/title>/ig; $usetitle = $1; $usetitle =~ s/\"//g; #remove double quotes $usetitle =~ s/\'//g; #remove single quotes #Get the description $content =~ /<META name=\"description\" content=\"(.*?)\">/i; $description = $1; $description =~ s/\"//g; #remove double quotes $description =~ s/\'//g; #remove single quotes #Get the keywords $content =~ /<META name=\"keywords\" content=\"(.*?)\">/i; $keywords = $1; $keywords =~ s/\"//g; #remove double quotes $keywords =~ s/\'//g; #remove single quotes &addform; } else {&addform} } ################################################## sub addform { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext1</td></tr> <form method=post> <tr><td class=bodytext valign=top align=right>$altext2</td><td><Select name=category class=formtext> HTML &dropdownlist; print <<"HTML"; </select><br><font size=$smalllink><a href='mailto:$adminemail?subject=$altext3'>$altext4</a></font></td></tr> <tr><td class=bodytext align=right>$altext5:</td><td><input type=text class=formtext size=30 name=sitename value=\"$usetitle\"></td></tr> HTML if ($url) { print "<tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value=\"$url\" name=url></td></tr>"; } else { print "<tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value=\"http://\" name=url></td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext7:</td><td><textarea name=description cols=40 rows=5 class=formtext>$description</textarea></td></tr> <tr><td class=bodytext align=right>$altext26:</td><td><input type=text size=35 class=formtext name=keywords value=\"$keywords\"></td></tr> HTML if ($requirerecip == 2) { print "<tr><td class=bodytext valgin=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='http://'><br>$altext28</td></tr>"; } elsif ($requirerecip == 1) { print "<tr><td class=bodytext valign=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='http://'><br>$altext29</td></tr>"; } if ($allowsiteimages == 1) { print "<tr><td class=bodytext align=right>$altext30:</td><td><input type=text size=30 class=formtext name=image></td></tr>"; } if ($allowexpire == 1) { print "<tr><td class=bodytext align=right>End Date:</td><td class=bodytext>$altext31 <input type=text size=5 class=formtext name=enddate value='None'> $altext32</td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext8:</td><td><input type=text size=30 class=formtext name=email></td></tr> <tr><td class=bodytext align=right>$altext9:</td><td><input type=text size=30 class=formtext name=name></td></tr> <tr><td class=bodytext align=right>$altext10:</td><td><input type=text size=30 class=formtext name=password></td></tr> <tr><td colspan=2 align=center><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=action value=addlink></form></table> HTML &footer; } ################################################## sub passcheck { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth> <tr><td> <table> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext12</td></tr> </table><form method=post> </td></tr> <tr><td> <table align=center> <tr><td class=bodytext>$altext13:</td><td><input type=text size=15 name=userid class=formtext></td></tr> <tr><td class=bodytext>$altext14:</td><td><input type=password size=15 name=userpass class=formtext></td></tr> <tr><td colspan=2 align=right><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=action value=login> </table> </td></tr> <tr><td> <div align=center class=bodytext><a href="$passwordscript">$altext15</a></div> </td></tr> </table> </form> HTML &footer; } ################################################## sub lookup { ################################################## my $userid = $q->param("userid"); my $userpass = $q->param("userpass"); my $filetolock = $datafilepath; my $tempfile = $filetolock . ".lock"; open (LOCK, ">$tempfile"); if ($useflock == 1) {flock (LOCK, 2)} open (FILE, "$datafilepath"); @alllinks = <FILE>; close(FILE); close(LOCK); unlink ($tempfile); foreach $line (@alllinks) { chomp($line); @currentline = split(/\|/, $line); $checkpass = $currentline[6]; chomp ($checkpass); chomp ($currentline[8]); if (($userid == $currentline[0]) && ($userpass eq $checkpass)) { $modifylink = $line; &editscreen; } } if ($modifylink eq '') { &error; } } ################################################## sub editscreen { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext16</td></tr> <form action=$processscript method=post> <tr><td class=bodytext align=right>$altext2</td><td><Select name=category class=formtext> HTML &dropdownlist; print <<"HTML"; </select></td></tr> <tr><td class=bodytext align=right>$altext5:</td><td><input type=text size=30 class=formtext value='$currentline[2]' name=sitename></td></tr> <tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value='$currentline[3]' name=url></td></tr> <tr><td class=bodytext align=right>$altext7:</td><td><textarea name=description cols=40 rows=5 class=formtext>$currentline[7]</textarea></td></tr> <tr><td class=bodytext align=right>$altext26:</td><td><input type=text size=35 class=formtext name=keywords value='$currentline[10]'></td></tr> HTML if ($requirerecip == 2) { print "<tr><td class=bodytext valgin=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$currentline[14]'><br>$altext28</td></tr>"; } elsif ($requirerecip == 1) { print "<tr><td class=bodytext valign=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$currentline[14]'><br>$altext29</td></tr>"; } if ($allowsiteimages == 1) { print "<tr><td class=bodytext align=right>$altext30:</td><td><input type=text size=30 class=formtext value='$currentline[16]' name=image></td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext8:</td><td><input type=text size=30 class=formtext value='$currentline[4]' name=email></td></tr> <tr><td class=bodytext align=right>$altext9:</td><td><input type=text size=30 class=formtext value='$currentline[5]' name=name></td></tr> <tr><td class=bodytext align=right>$altext10:</td><td><input type=text size=30 class=formtext value='$currentline[6]' name='password'></td></tr> <tr><td colspan=2 align=right><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=linkid value=$currentline[0]> <input type=hidden name=enddate value='$currentline[12]'> <input type=hidden name=udate value='$currentline[13]'> <input type=hidden name=addedon value=\"$currentline[8]\"> <input type=hidden name=action value=modifylink> </form></table> <br> <table><form action=$processscript method=post> <tr><td class=catheadertext align=left colspan=2>$altext17:</td></tr> <tr><td align=right><input type=checkbox name=delete value=yes class=formtext></td><td class=bodytext>$altext18</td></tr> <tr><td align=right colspan=2><input type=submit value='$altext19' class=button></td></tr> <input type=hidden name=subaction value=Delete> <input type=hidden name=linkid value=$currentline[0]> <input type=hidden name=action value=deletelink> </form></table> HTML &footer; } ################################################## sub checkforduplicate { ################################################## my $url = $q->param("url"); my $category = $q->param("category"); my $sitename = $q->param("sitename"); my $email = $q->param("email"); my $name = $q->param("name"); my $password = $q->param("password"); my $description = $q->param("description"); my $keywords = $q->param("keywords"); my $recipurl = $q->param("recipurl"); my $image = $q->param("image"); my $enddate = $q->param("enddate"); my $filetolock = $datafilepath; my $tempfile = $filetolock . ".lock"; open (FILE, "$basepath/bannedurls.txt"); my @urls = <FILE>; close(FILE); foreach $line (@urls) { chomp($line); if ($url =~ m/http:\/\/$line/i) {&error2("$altext33")} } open (LOCK, ">$tempfile"); if ($useflock == 1) {flock (LOCK, 2)} open (FILE, "$datafilepath"); @links = <FILE>; close(FILE); close(LOCK); unlink ($tempfile); foreach $line (@links) { my @linkinfo = split(/\|/, $line); if ($duprestriction == 1) { if (($linkinfo[3] eq $url) && ($linkinfo[1] eq $category)) {$duplicate = 1;} } elsif ($duprestriction == 2) { if ($linkinfo[3] eq $url) {$duplicate = 1;} } } if (($q->param("url") eq '') || ($q->param("sitename") eq '') || ($q->param("email") eq '') || ($q->param("name") eq '') || ($q->param("password") eq '') || ($q->param("description") eq '')) {$incomplete = 1;} if ($duplicate == 1) {&duplicate} elsif ($incomplete == 1) {&incomplete} else { &header; print <<"HTML"; <table width=$tablewidth> <form action=$processscript method=post> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext1</td></tr> <tr><td class=bodytext align=left colspan=2><dd><b>$altext20</b></dd></td></tr> <tr><td class=bodytext align=right>$altext2</td><td><Select name=category class=formtext> HTML &dropdownlist; print <<"HTML"; </select></td></tr> <br> <tr><td class=bodytext align=right>$altext5:</td><td><input type=text size=30 class=formtext value='$sitename' name=sitename></td></tr> <tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value='$url' name=url></td></tr> <tr><td class=bodytext align=right>$altext7:</td><td><textarea name=description cols=40 rows=5 class=formtext>$description</textarea></td></tr> <tr><td class=bodytext align=right>$altext26:</td><td><input type=text size=35 class=formtext value='$keywords' name=keywords></td></tr> HTML if ($requirerecip == 2) { print "<tr><td class=bodytext valgin=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$recipurl'><br>$altext28</td></tr>"; } elsif ($requirerecip == 1) { print "<tr><td class=bodytext valign=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$recipurl'><br>$altext29</td></tr>"; } if ($allowsiteimages == 1) { print "<tr><td class=bodytext align=right>$altext30:</td><td><input type=text size=30 class=formtext value='$image' name=image></td></tr>"; } if ($allowexpire == 1) { print "<tr><td class=bodytext align=right>End Date:</td><td class=bodytext>$altext31 <input type=text size=5 class=formtext name=enddate value='$enddate'> $altext32</td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext8:</td><td><input type=text size=30 class=formtext value='$email' name=email></td></tr> <tr><td class=bodytext align=right>$altext9:</td><td><input type=text size=30 class=formtext value='$name' name=name></td></tr> <tr><td colspan=2 align=center><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=password value='$password'></form> </table> HTML &footer; } } ################################################## sub duplicate { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext21</td></tr> <tr><td class=bodytext>$altext22</td></tr> </table> HTML &footer; } ################################################## sub dropdownlist { ################################################## my $filetolock = $datafilepath; my $tempfile = $filetolock . ".lock"; open (LOCK, ">$tempfile"); if ($useflock == 1) {flock (LOCK, 2)} open (FILE, "$datafilepath"); @links = <FILE>; close(FILE); close(LOCK); unlink ($tempfile); my $filetolock = $catfilepath; my $tempfile = $filetolock . ".lock"; open (LOCK, ">$tempfile"); if ($useflock == 1) {flock (LOCK, 2)} open (FILE, "$catfilepath"); @cats = <FILE>; close(FILE); close(LOCK); unlink ($tempfile); opendir (DIR, "$catinfopath"); @catbuild = grep (!/^\.\.?$/, readdir (DIR)); closedir(DIR); foreach $line (@catbuild) { chomp($line); if ($line =~ /main/) { $category = $line; $category =~ s/\.main//; foreach $x (@cats) { chomp($x); my @catinfo = split(/\|/, $x); if ($catinfo[0] == $category) {$categorybuild{$category} = "$catinfo[1]"} } open (FILE, "$catinfopath/$category.main"); my @subs = <FILE>; close(FILE); foreach $sub (@subs) { chomp($sub); my @subinfo = split(/\|/, $sub); $categorybuild{$subinfo[0]} = "$categorybuild{$category}/$subinfo[1]"; &buildsubs("$subinfo[0]", "$categorybuild{$subinfo[0]}"); } } } sub buildsubs { foreach $y (@catbuild) { chomp($y); if ($y eq "$_[0].sub") { open (FILE, "$catinfopath/$y"); my @moresubs = <FILE>; close(FILE); foreach $sub (@moresubs) { chomp($sub); my @subinfo = split(/\|/, $sub); $categorybuild{$subinfo[0]} = "$_[1]/$subinfo[1]"; &buildsubs("$subinfo[0]", "$categorybuild{$subinfo[0]}"); } } } } # Build the Drop down menu foreach $key (keys %categorybuild) { push(@getvalues, "$categorybuild{$key}|$key"); } foreach $value (sort values %categorybuild) { foreach $line (@getvalues) { chomp($line); my @comparevalue = split(/\|/, $line); if ($comparevalue[0] eq $value) { if ($currentline[1] == $comparevalue[1]) { print "<option value=$comparevalue[1] class=formtext selected>$value\n"; } elsif ($q->param("category") == $comparevalue[1]) { print "<option value=$comparevalue[1] class=formtext selected>$value\n"; } else { print "<option value=$comparevalue[1] class=formtext>$value\n"; } } } } } ################################################## sub incomplete { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext21</td></tr> <tr><td class=bodytext>$altext23</td></tr> </table> HTML &footer; } ################################################## sub error { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext24</td></tr> <tr><td class=bodytext>$altext25</td></tr> </table> HTML &footer; } ################################################## sub error2 { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext24</td></tr> <tr><td class=bodytext>$_[0]</td></tr> </table> HTML &footer; exit; }