home *** CD-ROM | disk | FTP | other *** search
/ Internet 1996 World Exposition / park.org.s3.amazonaws.com.7z / park.org.s3.amazonaws.com / cgi-bin / guestbook.pl- < prev    next >
Text File  |  2017-09-21  |  20KB  |  741 lines

  1. #!/usr/bin/perl
  2.  
  3. # Guestbook for the World Wide Web
  4. # Created by Matt Wright           Version 2.3.1
  5. # Created on: 4/21/95      Last Modified: 10/29/95
  6.  
  7. # modification history:
  8. #
  9. # when         who    what
  10. # -----------  ---    -------------------------------------------------------
  11. # 02-jan-1996  bjb    added file locking.
  12. # 25-may-1996  bjb    use DOCUMENT_ROOT for guestbook html location.
  13. #
  14.  
  15.  
  16. #############################################################################
  17. # Set Variables
  18.  
  19. $docroot = $ENV{'DOCUMENT_ROOT'};
  20.  
  21. $guestbookurl = "http://park.org/Tools/Guestbook/guestbook.html";
  22. $guestbookreal = "$docroot/Tools/Guestbook/guestbook.html";
  23. $guestlog = "$docroot/Tools/Guestbook/guestlog.html";
  24. $cgiurl = "http://park.org/cgi-bin/guestbook.pl";
  25. $date_command = "/usr/bin/date";
  26.  
  27. # Set Your Options:
  28. $mail = 0;              # 1 = Yes; 0 = No
  29. $uselog = 1;            # 1 = Yes; 0 = No
  30. $linkmail = 1;          # 1 = Yes; 0 = No
  31. $separator = 1;         # 1 = <hr>; 0 = <p>
  32. $redirection = 0;       # 1 = Yes; 0 = No
  33. $entry_order = 1;       # 1 = Newest entries added first;
  34.                         # 0 = Newest Entries added last.
  35. $remote_mail = 0;       # 1 = Yes; 0 = No
  36. $allow_html = 1;        # 1 = Yes; 0 = No
  37. $line_breaks = 0;    # 1 = Yes; 0 = No
  38.  
  39. # If you answered 1 to $mail or $remote_mail you will need to fill out 
  40. # these variables below:
  41. $mailprog = '/usr/lib/sendmail';
  42. $recipient = 'fairmaster@park.org';
  43.  
  44. # lock file name - bjb, 02-jan-1996
  45. local($lockfile) = "/tmp/guestbook.lock";
  46.  
  47. # Done
  48. #############################################################################
  49.  
  50.  
  51. # Get the Date for Entry
  52. $date = `$date_command +"%A, %B %d, %Y at %T (%Z)"`; chop($date);
  53. $shortdate = `$date_command +"%D %T %Z"`; chop($shortdate);
  54.  
  55. # Get the input
  56. read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  57.  
  58. # Split the name-value pairs
  59. @pairs = split(/&/, $buffer);
  60.  
  61. foreach $pair (@pairs) {
  62.    ($name, $value) = split(/=/, $pair);
  63.  
  64.    # Un-Webify plus signs and %-encoding
  65.    $value =~ tr/+/ /;
  66.    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  67.    $value =~ s/<!--(.|\n)*-->//g;
  68.  
  69.    if ($allow_html != 1) {
  70.       $value =~ s/<([^>]|\n)*>//g;
  71.    }
  72.  
  73.    $FORM{$name} = $value;
  74. }
  75.  
  76. # Print the Blank Response Subroutines
  77. &no_comments unless $FORM{'comments'};
  78. &no_name unless $FORM{'realname'};
  79.  
  80. # attempt to lock guestbook access
  81. if (&lockFile == 1) {
  82.     # lock failed
  83.     &lock_failed;
  84.     exit 0;
  85. }
  86.  
  87. # Begin the Editing of the Guestbook File
  88. $retcode = open (FILE, "$guestbookreal");
  89. if (! defined ($retcode)) {
  90.     $fatal_error_string="Can't Open $guestbookreal: $!\n";
  91.     &fatal_error;
  92.     }
  93. @LINES=<FILE>;
  94. close(FILE);
  95. $SIZE=@LINES;
  96.  
  97. # Open Link File to Output
  98. $retcode = open (GUEST, "+>$guestbookreal");
  99. if (! defined ($retcode)) {
  100.     $fatal_error_string="Can't Open $guestbookreal for writing: $!\n";
  101.     &fatal_error;
  102.     }
  103. for ($i=0;$i<=$SIZE;$i++) {
  104.    $_=$LINES[$i];
  105.    if (/<!--begin-->/) { 
  106.  
  107.       if ($entry_order eq '1') {
  108.          print GUEST "<!--begin-->\n";
  109.       }
  110.    
  111.       if ($line_breaks == 1) {
  112.          $FORM{'comments'} =~ s/\cM\n/<br>\n/g;
  113.       }
  114.  
  115.       print GUEST "$FORM{'comments'}<br>\n";
  116.  
  117.  
  118.       if ($FORM{'url'}) {
  119.          print GUEST "<p><a href=\"$FORM{'url'}\"> $FORM{'realname'}</a>";
  120.       }
  121.       else {
  122.          print GUEST "<p>$FORM{'realname'}";
  123.       }
  124.  
  125.       if ( $FORM{'username'} ){
  126.          if ($linkmail eq '1') {
  127.             print GUEST " <a href=\"mailto:$FORM{'username'}\">";
  128.             print GUEST "\($FORM{'username'}\)</a>";
  129.          }
  130.          else {
  131.             print GUEST " $FORM{'username'}";
  132.          }
  133.       }
  134.  
  135.       print GUEST "<br>\n";
  136.  
  137.       if ( $FORM{'city'} ){
  138.          print GUEST "$FORM{'city'},";
  139.       }
  140.      
  141.       if ( $FORM{'state'} ){
  142.          print GUEST " $FORM{'state'}";
  143.       }
  144.  
  145.       if ( $FORM{'country'} ){
  146.          print GUEST " $FORM{'country'}";
  147.       }
  148.  
  149.       if ($separator eq '1') {
  150.          print GUEST "<br>\n$date<hr align=left width=400>\n\n<!--New Entry-->\n<p>\n";
  151.       }
  152.       else {
  153.          print GUEST "<br>\n$date<hr align=left width=400>\n\n<!--New Entry-->\n<p>\n";
  154.       }
  155.  
  156.       if ($entry_order eq '0') {
  157.          print GUEST "<!--begin-->\n";
  158.       }
  159.       if ($uselog eq '1') {
  160.       &log('entry');
  161.       }
  162.    }
  163.    else {
  164.       print GUEST $_;
  165.    }
  166. }
  167.  
  168. close (GUEST);
  169.  
  170. # unlock guestbook access
  171. &unlockFile;
  172.  
  173. # Log The Entry
  174.  
  175.  
  176.  
  177. #########
  178. # Options
  179.  
  180. # Mail Option
  181. if ($mail eq '1') {
  182.     if (!open (MAIL, "|$mailprog $recipient")) {
  183.     $fatal_error_string="Can't open $mailprog!\n";
  184.     &fatal_error;
  185.     }
  186.    print MAIL "Reply-to: $FORM{'username'} ($FORM{'realname'})\n";
  187.    print MAIL "From: $FORM{'username'} ($FORM{'realname'})\n";
  188.    print MAIL "Subject: Entry to Guestbook\n\n";
  189.    print MAIL "You have a new entry in your guestbook:\n\n";
  190.    print MAIL "------------------------------------------------------\n";
  191.    print MAIL "$FORM{'comments'}\n";
  192.    print MAIL "$FORM{'realname'}";
  193.  
  194.    if ( $FORM{'username'} ){
  195.       print MAIL " <$FORM{'username'}>";
  196.    }
  197.  
  198.    print MAIL "\n";
  199.  
  200.    if ( $FORM{'city'} ){
  201.       print MAIL "$FORM{'city'},";
  202.    }
  203.  
  204.    if ( $FORM{'state'} ){
  205.       print MAIL " $FORM{'state'}";
  206.    }
  207.  
  208.    if ( $FORM{'country'} ){
  209.       print MAIL " $FORM{'country'}";
  210.    }
  211.  
  212.    print MAIL " - $date\n";
  213.    print MAIL "------------------------------------------------------\n";
  214.  
  215.    close (MAIL);
  216. }
  217.  
  218. if ($remote_mail eq '1' && $FORM{'username'}) {
  219.     if (!open (MAIL, "|$mailprog $recipient")) {
  220.     $fatal_error_string="Can't open $mailprog!\n";
  221.     &fatal_error;
  222.     }
  223.  
  224.    print MAIL "To: $FORM{'username'}\n";
  225.    print MAIL "From: $recipient\n";
  226.    print MAIL "Subject: Entry to Guestbook\n\n";
  227.    print MAIL "Thank you for adding to my guestbook.\n\n";
  228.    print MAIL "------------------------------------------------------\n";
  229.    print MAIL "$FORM{'comments'}\n";
  230.    print MAIL "$FORM{'realname'}";
  231.  
  232.    if ( $FORM{'username'} ){
  233.       print MAIL " <$FORM{'username'}>";
  234.    }
  235.  
  236.    print MAIL "\n";
  237.  
  238.    if ( $FORM{'city'} ){
  239.       print MAIL "$FORM{'city'},";
  240.    }
  241.  
  242.    if ( $FORM{'state'} ){
  243.       print MAIL " $FORM{'state'}";
  244.    }
  245.  
  246.    if ( $FORM{'country'} ){
  247.      print MAIL " $FORM{'country'}";
  248.    }
  249.  
  250.    print MAIL " - $date\n";
  251.    print MAIL "------------------------------------------------------\n";
  252.  
  253.    close (MAIL);
  254. }
  255.  
  256. # Print Out Initial Output Location Heading
  257. if ($redirection eq '1') {
  258.    print "Location: $guestbookurl\n\n";
  259. }
  260. else { 
  261.    &no_redirection;
  262. }
  263.  
  264. #######################
  265. # Subroutines
  266.  
  267. sub no_comments {
  268.    print "Content-type: text/html\n\n";
  269.  
  270. print "<HTML><HEAD><TITLE>\n";
  271. print "No Comments\n";
  272. print "</TITLE></HEAD>\n";
  273. print "\n";
  274. print "\n";
  275. print "<BODY BGCOLOR=\"#FFFFFF\" background=\"/Images/expo_hbk_01.gif\" TEXT=\"#000000\" LINK=\"#97694F\" VLINK=\"#42426f\">\n";
  276. print "\n";
  277. print "<a href=\"/cgi-bin/imagemap/Images/htoolbar.map\">\n";
  278. print "<img align=\"left\" width=\"486\" height=\"101\" \n";
  279. print "SRC=\"/Images/htoolbar.gif\" ISMAP border=\"0\"></a>\n";
  280. print "<br clear=\"all\">\n";
  281. print "\n";
  282. print "<table width=\"500\" height=\"0\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  283. print "    <tr>\n";
  284. print "        <td align=\"left\" valign=\"top\" height=\"26\" colspan=\"2\">\n";
  285. print "    </td></tr>\n";
  286. print "<tr>\n";
  287. print "<td align=\"left\" valign=\"top\" width=\"100\"></td>\n";
  288. print "\n";
  289. print "<td align=\"left\" valign=\"top\" width=\"400\">\n";
  290. print "\n";
  291. print "<p>\n";
  292. print "<font size=\"+2\"><b>Your <i>Comments</i> Are Blank</font size=\"+2\"></b>\n";
  293. print "\n";
  294. print "<p>\n";
  295. print "You did not fill out the comments section.  Due to an\n";
  296. print "arbitrary rule,\n"; 
  297. print "we won\'t add your guestbook inscription without\n";
  298. print "a comment filled in.\n";
  299. print "Would you mind trying again?\n";
  300. print "\n";
  301. print "\n";
  302. print "<p>\n";
  303. print "<form method=POST action=\"$cgiurl\">\n";
  304. print "\n";
  305. print "<input value=\"$FORM{'realname'}\" type=\"text\" name=\"realname\" size=\"40\"> Your Name<br>\n";
  306. print "<input type=\"text\" value=\"$FORM{'username'}\" name=\"username\" size=\"40\"> E-mail<br>\n";
  307. print "<input type=\"text\" name=\"url\" value=\"$FORM{'url'}\" size=\"40\"> Your URL<br>\n";
  308. print "\n";
  309. print "<p>\n";
  310. print "<table width=\"400\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  311. print "\n";
  312. print "<tr>\n";
  313. print "    <td align=\"left\">\n";
  314. print "    <input type=\"text\" name=\"city\" value=\"$FORM{'city'}\" size=\"15\"><br>City</td>\n";
  315. print "    <td align=\"left\">\n";
  316. print "    <input type=\"text\" name=\"state\" value=\"$FORM{'state'}\" size=\"15\"><br>State</td>\n";
  317. print "    <td align=\"left\">\n";
  318. print "    <input type=\"text\" name=\"country\" value=\"$FORM{'country'}\" size=\"10\"><br>Country</td>\n";
  319. print "\n";
  320. print "</tr></table>\n";
  321. print "\n";
  322. print "<p>\n";
  323. print "Comments:<br>\n";
  324. print "<textarea name=\"comments\" COLS=\"60\" ROWS=\"4\"></textarea><p>\n";
  325. print "\n";
  326. print "<table width=\"400\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  327. print "<tr>\n";
  328. print "    <td align=\"left\">\n";
  329. print "    <input value=\"Reinscribe Guestbook\" type=\"submit\"></td>\n";
  330. print "    <td align=\"left\">\n";
  331. print "    <input value=\"Reset Form\" type=\"reset\"></td>\n";
  332. print "</tr></table>\n";
  333. print "\n";
  334. print "    </form>\n";
  335. print "\n";
  336. print "    </td>\n";
  337. print "    </tr>\n";
  338. print "</table>\n";
  339. print "  </body>\n";
  340. print "</html>\n";
  341.  
  342.  
  343.    # Log The Error
  344.    if ($uselog eq '1') {
  345.       &log('no_comments');
  346.    }
  347.  
  348.      &unlockFile;
  349.    exit;
  350. }
  351.  
  352. sub no_name {
  353.    print "Content-type: text/html\n\n";
  354.    print "<html><head><title>No Name</title></head>\n";
  355.  
  356.  
  357. print "\n";
  358. print "\n";
  359. print "<BODY BGCOLOR=\"#FFFFFF\" background=\"/Images/expo_hbk_01.gif\" TEXT=\"#000000\" LINK=\"#97694F\" VLINK=\"#42426f\">\n";
  360. print "\n";
  361. print "<a href=\"/cgi-bin/imagemap/Images/htoolbar.map\">\n";
  362. print "<img align=\"left\" width=\"486\" height=\"101\" \n";
  363. print "SRC=\"/Images/htoolbar.gif\" ISMAP border=\"0\"></a>\n";
  364. print "<br clear=\"all\">\n";
  365. print "\n";
  366. print "<table width=\"500\" height=\"0\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  367. print "    <tr>\n";
  368. print "        <td align=\"left\" valign=\"top\" height=\"26\" colspan=\"2\">\n";
  369. print "    </td></tr>\n";
  370. print "<tr>\n";
  371. print "<td align=\"left\" valign=\"top\" width=\"100\"></td>\n";
  372. print "\n";
  373. print "<td align=\"left\" valign=\"top\" width=\"400\">\n";
  374. print "\n";
  375. print "<p>\n";
  376. print "<font size=\"+2\"><b>Your <i>Name</i> Was Blank</font size=\"+2\"></b>\n";
  377. print "\n";
  378. print "<p>\n";
  379. print "You did not fill out your name.  Due to an\n";
  380. print "<a href=\"http://town.hall.org/Archives/radio/IMS/SoundBytes/021594_byte_01_IMS.au\">arbitrary rule,</a>\n"; 
  381. print "we will not add your guestbook inscription without\n";
  382. print "a comment filled in.\n";
  383. print "Would you mind trying again?\n";
  384. print "\n";
  385. print "\n";
  386. print "<p>\n";
  387. print "<form method=POST action=\"$cgiurl\">\n";
  388. print "\n";
  389. print "<input type=\"text\" name=\"realname\" size=\"40\"> Your Name<br>\n";
  390. print "<input type=\"text\" value=\"$FORM{'username'}\" name=\"username\" size=\"40\"> E-mail<br>\n";
  391. print "<input type=\"text\" name=\"url\" value=\"$FORM{'url'}\" size=\"40\"> Your URL<br>\n";
  392. print "\n";
  393. print "<p>\n";
  394. print "<table width=\"400\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  395. print "\n";
  396. print "<tr>\n";
  397. print "    <td align=\"left\">\n";
  398. print "    <input type=\"text\" name=\"city\" value=\"$FORM{'city'}\" size=\"15\"><br>City</td>\n";
  399. print "    <td align=\"left\">\n";
  400. print "    <input type=\"text\" name=\"state\" value=\"$FORM{'state'}\" size=\"15\"><br>State</td>\n";
  401. print "    <td align=\"left\">\n";
  402. print "    <input type=\"text\" name=\"country\" value=\"$FORM{'country'}\" size=\"10\"><br>Country</td>\n";
  403. print "\n";
  404. print "</tr></table>\n";
  405. print "\n";
  406. print "<p>\n";
  407. print "Comments:<br>\n";
  408. print "<textarea name=\"comments\" value=\"$FORM{'comments'}\" COLS=\"60\" ROWS=\"4\"></textarea><p>\n";
  409. print "\n";
  410. print "<table width=\"400\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  411. print "<tr>\n";
  412. print "    <td align=\"left\">\n";
  413. print "    <input value=\"Reinscribe Guestbook\" type=\"submit\"></td>\n";
  414. print "    <td align=\"left\">\n";
  415. print "    <input value=\"Reset Form\" type=\"reset\"></td>\n";
  416. print "</tr></table>\n";
  417. print "\n";
  418. print "    </form>\n";
  419. print "\n";
  420. print "    </td>\n";
  421. print "    </tr>\n";
  422. print "</table>\n";
  423. print "  </body>\n";
  424. print "</html>\n";
  425.  
  426.  
  427.    # Log The Error
  428.    if ($uselog eq '1') {
  429.       &log('no_name');
  430.    }
  431.  
  432.      &unlockFile;
  433.    exit;
  434. }
  435.  
  436. # Log the Entry or Error
  437. sub log {
  438.    $log_type = $_[0];
  439.    open (LOG, ">>$guestlog");
  440.    if ($log_type eq 'entry') {
  441.       print LOG "$ENV{'REMOTE_HOST'} - [$shortdate]<br>\n";
  442.       print LOG "$i\n";
  443.    }
  444.    elsif ($log_type eq 'no_name') {
  445.       print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No Name<br>\n";
  446.    }
  447.    elsif ($log_type eq 'no_comments') {
  448.       print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No ";
  449.       print LOG "Comments<br>\n";
  450.    }
  451. }
  452.  
  453. # Redirection Option
  454. sub no_redirection {
  455.  
  456. # Print Beginning of HTML
  457. print "Content-Type: text/html\n\n";
  458. print "<html><head><title>Thank You</title></head>\n";
  459. print "<BODY BGCOLOR=\"#FFFFFF\" background=\"/Images/expo_hbk_01.gif\" TEXT=\"#000000\" LINK=\"#97694F\" VLINK=\"#42426f\">\n";
  460. print "\n";
  461. print "<a href=\"/cgi-bin/imagemap/Images/htoolbar.map\">\n";
  462. print "<img align=\"left\" width=\"486\" height=\"101\" \n";
  463. print "SRC=\"/Images/htoolbar.gif\" ISMAP border=\"0\"></a>\n";
  464. print "<br clear=\"all\">\n";
  465. print "\n";
  466. print "<table width=\"500\" height=\"0\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
  467. print "<tr>\n";
  468. print "<td align=\"left\" valign=\"top\" height=\"26\" colspan=\"2\">\n";
  469. print "</td></tr>\n";
  470. print "<tr>\n";
  471. print "<td align=\"left\" valign=\"top\" width=\"100\"></td>\n";
  472. print "\n";
  473. print "<td align=\"left\" valign=\"top\" width=\"400\">\n";
  474. print "\n";
  475. print "<p>\n";
  476. print "<font size=\"+2\"><b>\n";
  477. print "<a href=\"http://town.hall.org/Archives/radio/IMS/SoundBytes/111894_byte_01_RTFM.au\">Thank You!</a>\n";
  478. print "</font size=\"+2\"></b>\n";
  479. print "\n";
  480. print "<p>\n";
  481.  
  482.  
  483.    # Print Response
  484.    print "Thank you for filling in the guestbook.  Your entry has\n";
  485.    print "been added to the guestbook.\n";
  486.    print "Here is what you submitted:<p>\n";
  487.    print "<hr><p>$FORM{'comments'}<p>\n";
  488.  
  489.    if ($FORM{'url'}) {
  490.       print "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
  491.    }
  492.    else {
  493.       print "$FORM{'realname'}";
  494.    }
  495.  
  496.    if ( $FORM{'username'} ){
  497.       if ($linkmail eq '1') {
  498.          print " \(<a href=\"mailto:$FORM{'username'}\">";
  499.          print "$FORM{'username'}</a>\)";
  500.       }
  501.       else {
  502.          print " \($FORM{'username'}\)";
  503.       }
  504.    }
  505.  
  506.    print "<br>\n";
  507.  
  508.    if ( $FORM{'city'} ){
  509.       print "$FORM{'city'},";
  510.    }
  511.  
  512.    if ( $FORM{'state'} ){
  513.       print " $FORM{'state'}";
  514.    }
  515.  
  516.    if ( $FORM{'country'} ){
  517.       print " $FORM{'country'}";
  518.    }
  519.  
  520.    print "<br>$date<p>\n";
  521.  
  522.    # Print End of HTML
  523.    print "<p><hr><p>\n";
  524.    print "<a href=\"$guestbookurl\">Back to the Guestbook</a>\n";         
  525.     print "- You may need to reload it when you get there to see your\n";
  526.    print "entry.\n";
  527.  
  528. print "\n";
  529. print "\n";
  530. print "</td>\n";
  531. print "</tr>\n";
  532. print "</table>\n";
  533. print " </body>\n";
  534. print "</html>\n";
  535.  
  536.  
  537.    &unlockFile;
  538.    exit;
  539. }
  540.  
  541.  
  542. #
  543. # basic file locking support - bjb, 02-jan-1996
  544. #
  545.  
  546. #
  547. # create lock file
  548. #
  549. sub lockFile {
  550.     # current retry attempt
  551.     local($lockAttempts) = 1;
  552.     # max retry limit
  553.     local($lockMaxAttempts) = 3;
  554.  
  555.     while (-f "$lockfile") {
  556.         if ($lockAttempts > $lockMaxAttempts) {
  557.             return 1;
  558.         }
  559.         sleep 1;
  560.         $lockAttempts++;
  561.     }
  562.  
  563.     open(LOCK, ">$lockfile") || &lock_failed;
  564.     return 0;
  565. }
  566.  
  567. #
  568. # remove lock file
  569. #
  570. sub unlockFile {
  571.     if (-f "$lockfile") {
  572.         unlink("$lockfile");
  573.     }
  574. }
  575.  
  576. #
  577. # generate lock failed message
  578. #
  579. sub lock_failed {
  580.    print <<EoI;
  581. Content-type: text/html
  582.  
  583. <html><head><title>File Lock Failed</title></head>
  584.  
  585. <BODY BGCOLOR="#FFFFFF" background="/Images/expo_hbk_01.gif" TEXT="#000000" LINK="#97694F" VLINK="#42426f">
  586.  
  587. <a href="/cgi-bin/imagemap/Images/htoolbar.map">
  588. <img align="left" width="486" height="101" 
  589. SRC="/Images/htoolbar.gif" ISMAP border="0"></a>
  590. <br clear="all">
  591.  
  592. <table width="500" height="0"  border="0" cellpadding="0" cellspacing="0">
  593.     <tr>
  594.         <td align="left" valign="top" height="26" colspan="2">
  595.     </td></tr>
  596. <tr>
  597. <td align="left" valign="top" width="100"></td>
  598.  
  599. <td align="left" valign="top" width="400">
  600.  
  601. <p>
  602. <font size="+2"><b>File Locking Failed</font></b>
  603.  
  604. <p>
  605. Unable to update guestbook because somebody else was submitting their
  606. comments.  Would you mind trying again by resubmitting?
  607. <p>
  608. <form method=POST action="$cgiurl">
  609.  
  610. <input type="text" value="$FORM{'realname'}" name="realname" size="40"> Your Name<br>
  611. <input type="text" value="$FORM{'username'}" name="username" size="40"> E-mail<br>
  612. <input type="text" name="url" value="$FORM{'url'}" size="40"> Your URL<br>
  613.  
  614. <p>
  615. <table width="400" border="0" cellpadding="0" cellspacing="0">
  616.  
  617. <tr>
  618.     <td align="left">
  619.     <input type="text" name="city" value="$FORM{'city'}" size="15"><br>City</td>
  620.     <td align="left">
  621.     <input type="text" name="state" value="$FORM{'state'}" size="15"><br>State</td>
  622.     <td align="left">
  623.     <input type="text" name="country" value="$FORM{'country'}" size="10"><br>Country</td>
  624.  
  625. </tr></table>
  626.  
  627. <p>
  628. Comments:<br>
  629. <textarea name="comments" value="$FORM{'comments'}" COLS="60" ROWS="4"></textarea><p>
  630.  
  631. <table width="400" border="0" cellpadding="0" cellspacing="0">
  632. <tr>
  633.     <td align="left">
  634.     <input value="Reinscribe Guestbook" type="submit"></td>
  635.     <td align="left">
  636.     <input value="Reset Form" type="reset"></td>
  637. </tr></table>
  638.  
  639.     </form>
  640.  
  641.     </td>
  642.     </tr>
  643. </table>
  644.  
  645. </body>
  646. </html>
  647.  
  648. EoI
  649.  
  650.     # Log The Error
  651.     if ($uselog eq '1') {
  652.         &log('lock_failed');
  653.     }
  654.  
  655.     exit 0;
  656. }
  657.  
  658. sub fatal_error {
  659.    print <<EoI;
  660. Content-type: text/html
  661.  
  662. <html><head><title>Fatal Error</title></head>
  663.  
  664. <BODY BGCOLOR="#FFFFFF" background="/Images/expo_hbk_01.gif" TEXT="#000000" LINK="#97694F" VLINK="#42426f">
  665.  
  666. <a href="/cgi-bin/imagemap/Images/htoolbar.map">
  667. <img align="left" width="486" height="101" 
  668. SRC="/Images/htoolbar.gif" ISMAP border="0"></a>
  669. <br clear="all">
  670.  
  671. <table width="500" height="0"  border="0" cellpadding="0" cellspacing="0">
  672.     <tr>
  673.         <td align="left" valign="top" height="26" colspan="2">
  674.     </td></tr>
  675. <tr>
  676. <td align="left" valign="top" width="100"></td>
  677.  
  678. <td align="left" valign="top" width="400">
  679.  
  680. <p>
  681. <font size="+2"><b>Fatal Error</font></b>
  682. <p>
  683. <b>$fatal_error_string</b>
  684. <p>
  685. We are very sorry, but we are having problems with our guestbook.  Please
  686. <a href="mailto:fairmaster@park.org">here</a> to send mail to
  687. <a href="mailto:fairmaster@park.org">fairmaster@park.org</a>.  We would
  688. appreciate it if you would include the text of the error message listed
  689. above.
  690. <p>
  691. <form method=POST action="$cgiurl">
  692.  
  693. <input type="text" value="$FORM{'realname'}" name="realname" size="40"> Your Name<br>
  694. <input type="text" value="$FORM{'username'}" name="username" size="40"> E-mail<br>
  695. <input type="text" name="url" value="$FORM{'url'}" size="40"> Your URL<br>
  696.  
  697. <p>
  698. <table width="400" border="0" cellpadding="0" cellspacing="0">
  699.  
  700. <tr>
  701.     <td align="left">
  702.     <input type="text" name="city" value="$FORM{'city'}" size="15"><br>City</td>
  703.     <td align="left">
  704.     <input type="text" name="state" value="$FORM{'state'}" size="15"><br>State</td>
  705.     <td align="left">
  706.     <input type="text" name="country" value="$FORM{'country'}" size="10"><br>Country</td>
  707.  
  708. </tr></table>
  709.  
  710. <p>
  711. Comments:<br>
  712. <textarea name="comments" value="$FORM{'comments'}" COLS="60" ROWS="4"></textarea><p>
  713.  
  714. <table width="400" border="0" cellpadding="0" cellspacing="0">
  715. <tr>
  716.     <td align="left">
  717.     <input value="Reinscribe Guestbook" type="submit"></td>
  718.     <td align="left">
  719.     <input value="Reset Form" type="reset"></td>
  720. </tr></table>
  721.  
  722.     </form>
  723.  
  724.     </td>
  725.     </tr>
  726. </table>
  727.  
  728. </body>
  729. </html>
  730.  
  731. EoI
  732.  
  733.     # Log The Error
  734.     if ($uselog eq '1') {
  735.     &log('fatal_error');
  736.     }
  737.    &unlockFile;
  738.    exit 0;
  739.  
  740. }
  741.