#!/usr/bin/perl # # ------------- # Links # ------------- # Links Manager # # File: add.cgi # Description: Adds a record marked unvalidated to the database and # optionally emails someone. # Author: Alex Krohn # Email: alex@gossamer-threads.com # Web: http://www.gossamer-threads.com/ # Version: 1.11 # # COPYRIGHT NOTICE: # # Copyright 1997 Gossamer Threads Inc. All Rights Reserved. # # This program is being distributed as shareware. It may be used and # modified free of charge for personal, academic, government or non-profit # use, so long as this copyright notice and the header above remain intact. # Any commercial use should be registered. Please also send me an email, # and let me know where you are using this script. By using this program # you agree to indemnify Gossamer Threads Inc. from any liability. # # Selling the code for this program without prior written consent is # expressly forbidden. Obtain written permission before redistributing this # program over the Internet or in any other medium. In all cases # copyright and header must remain intact. # # Please check the README file for full details on registration. # ===================================================================== # # Setup Notes: # Make sure the require statement below points to the config file. # Required Librariers # -------------------------------------------------------- eval { ($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); # Get the script location: UNIX / ($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); # Get the script location: Windows \ require "admin/links.cfg"; # Change this to full path to links.cfg if you have problems. require "$db_lib_path/db.pl"; require "$db_lib_path/site_html.pl"; }; if ($@) { print "Content-type: text/plain\n\n"; print "Error including libraries: $@\n"; print "Make sure they exist, permissions are set properly, and paths are set correctly."; exit; } # ======================================================== eval { &main; }; # Trap any fatal errors so the program hopefully if ($@) { &cgierr("fatal error: $@"); } # never produces that nasty 500 server error page. exit; # There are only two exit calls in the script, here and in in &cgierr. sub main { # -------------------------------------------------------- local (%in) = &parse_form; # We are processing the form. if ((keys %in != 0) and !$in{'Cat'}) { &process_form; } # Otherwise we are displaying the form (in site_html.pl). else { &site_html_add_form; } } sub process_form { # -------------------------------------------------------- my ($key, $status, $line, $output); # basic "anti-spam" checking of HTTP referer if ($check_referer) { if ($ENV{'HTTP_REFERER'} !~ /$check_referer/) { $status = "
This add request doesn't seem to come through the form installed on this server.
Please don't spam our link database.
";
&site_html_add_failure($status);
return;
}
}
# This will set system fields like Validated to their proper values.
foreach $key (keys %add_system_fields) {
$in{$key} = $add_system_fields{$key};
}
# This will set system fields like Validated to their proper values.
foreach $key (keys %add_system_fields) {
$in{$key} = $add_system_fields{$key};
}
# Set date variable to today's date.
$in{$db_cols[$db_modified]} = &get_date;
open (ID, "<$db_links_id_file_name") or &cgierr("error in process_form. unable to open id file: $db_links_id_file_name. Reason: $!");
$in{$db_key} =
";
&site_html_add_failure($status);
}
}
sub send_email {
# --------------------------------------------------------
# Sends an email to the admin, letting him know that there is
# a new link waiting to be validated.
# Check to make sure that there is an admin email address defined.
$db_admin_email or &cgierr("Admin Email Address Not Defined in config file!");
open (MAIL, "|$db_mail_path") or &cgierr("error opening mail program: $db_mail_path. Reason: $!");
print MAIL "To: $db_admin_email\n";
print MAIL "From: $in{$db_cols[$db_contact_email]} ($in{$db_cols[$db_contact_name]})\n";
print MAIL "Subject: Addition to Database: $in{'Title'}\n";
print MAIL qq|
The following link is awaiting validation:
Title: $in{'Title'}
Review: $in{'Review'}
URL: $in{'URL'}
Category: $in{'Category'}
Description: $in{'Description'}
Contact Name: $in{'Contact Name'}
Contact Email: $in{'Contact Email'}
Expires in: $in{'Expire'}
Remote Host: $ENV{'REMOTE_HOST'}
To validate, please go to:
$db_script_url?validate_form=1
Sincerely,
Links Manager.
|;
close MAIL;
}