#!/usr/local/bin/perl ############################################################################## # Free For All Link Page Version 2.2 # # Copyright 1996 Matt Wright mattw@scriptarchive.com # # Created 5/14/95 Last Modified 7/17/96 # # Scripts Archive at: http://www.scriptarchive.com/ # ############################################################################## # COPYRIGHT NOTICE # # Copyright 1996 Matthew M. Wright All Rights Reserved. # # # # Free For All Links may be used and modified free of charge by anyone so # # long as this copyright notice and the comments above remain intact. By # # using this this code you agree to indemnify Matthew M. Wright from any # # liability that might arise from it's use. # # # # Selling the code for this program without prior written consent is # # expressly forbidden. In other words, please ask first before you try and # # make money off of my program. # # # # Obtain permission before redistributing this software over the Internet or # # in any other medium. In all cases copyright and header must remain intact.# ############################################################################## # Define Variables $filename = "/home/scriptarchive/demos/links/links.html"; $linksurl = "http://www.scriptarchive.com/demos/links/links.html"; $linkscgi = "http://www.scriptarchive.com/demos/links/links.cgi"; $linkstitle = "Matt's Script Archive: Free For All Demo"; $database = "/home/scriptarchive/demos/links/database.txt"; # Done ############################################################################## # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<([^>]|\n)*>//g; $value =~ s///g; $FORM{$name} = $value; } if ($FORM{'url'} eq 'http://' || $FORM{'url'} !~ /^(f|ht)tp:\/\/\w+\.\w+/) { &no_url; } if (!($FORM{'title'})) { &no_title; } # Enter our tags and sections into an associative array %sections = ("busi","Business","comp","Computers","educ","Education", "ente","Entertainment","gove","Government", "pers","Personal","misc","Miscellaneous"); # Suck previous link file into one big string open(FILE,"$filename"); @lines = ; close(FILE); $i=1; foreach $line (@lines) { if ($line =~ /\\([^<]+)<\/a>/) { if ($FORM{'url'} eq $1) { &repeat_url; } $i++; } } # Open Link File to Output open (FILE,">$filename"); foreach $line (@lines) { # For every line in our data if ($line =~ //) { @months = ('January','February','March','April','May','June', 'July','August','September','October','November','December'); @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday', 'Friday','Saturday'); ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6]; if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } if ($mday < 10) { $mday = "0$mday"; } $year += 1900; $date = "on $days[$wday], $months[$mon] $mday, $year at $hour:$min:$sec"; print FILE "Last link was added $date
\n"; } elsif ($line =~ //) { print FILE "There are $i links on this "; print FILE "page.
\n"; } else { print FILE $line; } foreach $tag ( keys %sections) { # For every tag if ( ($FORM{'section'} eq $sections{$tag}) && ($line =~ //) ) { print FILE "
  • $FORM{'title'}\n"; } } } close (FILE); # Return Link File print "Location: $linksurl\n\n"; if ($database ne '') { open (DATABASE,">>$database"); print DATABASE "$FORM{'url'}\n"; close(DATABASE); } sub no_url { print "Content-type: text/html\n\n"; print "ERROR: No URL\n"; print "
    "; print "

    No URL

    \n"; print "You forgot to enter a url you wanted added to the Free for "; print "all link page. Another possible problem was that your link "; print "was invalid.

    \n"; print "

    \n"; print "\n"; print "\n"; print "URL:

    \n"; print " * \n"; print "


    \n"; print "$linkstitle\n"; print "
    \n"; exit; } sub no_title { print "Content-type: text/html\n\n"; print "ERROR: No Title\n"; print "
    "; print "

    No Title

    \n"; print "You forgot to enter a title you wanted added to the Free for "; print "all link page. Another possible problem is that you title "; print "contained illegal characters.

    \n"; print "

    \n"; print "\n"; print "\n"; print "TITLE:

    \n"; print " * \n"; print "


    \n"; print "$linkstitle\n"; print "
    \n"; exit; } sub repeat_url { print "Content-type: text/html\n\n"; print "ERROR: Repeat URL\n"; print "

    Repeat URL

    \n"; print "Sorry, this URL is already in the Free For All Link Page.\n"; print "You cannot add this URL to it again. Sorry.

    \n"; print "$linkstitle"; print "\n"; exit; }