#!/usr/local/bin/perl $baseurl = "http://www.vtgunsmiths.com/message"; $cgi_url = "http://www.vtgunsmiths.com/message/board.cgi"; $mesgdirurl = "http://www.vtgunsmiths.com/message"; $mesgdir = "/home/build/www/vtgunsmiths/message"; $datafile = "./data.txt"; $mesgfile = "./board.html"; $mesgfileurl = "http://www.vtgunsmiths.com/message/board.html"; $ext = "html"; $title = "Vermont Guns Smiths Message Board"; &get_number; &parse_form; &get_variables; &new_file; &main_page; if ($num_followups >= 1) { &thread_pages; } &return_html; &increment_num; sub get_number { open(NUMBER,"$datafile"); $num = ; close(NUMBER); if ($num == 99999) { $num = "1"; } else { $num++; } } sub parse_form { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @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///g; if ($allow_html != 1) { $value =~ s/<([^>]|\n)*>//g; } else { unless ($name eq 'body') { $value =~ s/<([^>]|\n)*>//g; } } $FORM{$name} = $value; } } sub get_variables { if ($FORM{'followup'}) { $followup = "1"; @followup_num = split(/,/, $FORM{'followup'}); $num_followups = @followups = @followup_num; $last_message = pop(@followups); $origdate = $FORM{'origdate'}; $origname = $FORM{'origname'}; $origsubject = $FORM{'origsubject'}; } if ($FORM{'name'}) { $name = "$FORM{'name'}"; $name =~ s/"//g; $name =~ s///g; $name =~ s/\&//g; } else { &error(no_name); } if ($FORM{'email'} =~ /.*\@.*\..*/) { $email = "$FORM{'email'}"; } if ($FORM{'subject'}) { $subject = "$FORM{'subject'}"; $subject =~ s/\&/\&\;/g; $subject =~ s/"/\"\;/g; } else { &error(no_subject); } if ($FORM{'body'}) { $body = "$FORM{'body'}"; $body =~ s/\cM//g; $body =~ s/\n\n/

/g; $body =~ s/\n/
/g; $body =~ s/<//g; $body =~ s/"/"/g; } else { &error(no_body); } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } if ($mon < 10) { $mon = "0$mon"; } if ($mday < 10) { $mday = "0$mday"; } $month = ($mon + 1); @months = ("January","February","March","April","May","June","July","August","September","October","November","December"); $date = "$hour\:$min\:$sec $month/$mday/$year"; chop($date) if ($date =~ /\n$/); $long_date = "$months[$mon] $mday, 19$year at $hour\:$min\:$sec"; } sub new_file { open(NEWFILE,">$mesgdir/$num\.$ext") || die $!; print NEWFILE "\n"; print NEWFILE "$subject\n"; print NEWFILE "\n"; print NEWFILE "

$subject

\n"; print NEWFILE "
\n"; print NEWFILE "Posted by "; if ($email) { print NEWFILE "$name on $long_date:

\n"; } else { print NEWFILE "$name on $long_date:

\n"; } if ($FORM{'followup'}) { print NEWFILE "In Reply to: $origsubject posted by "; if ($origemail) { print NEWFILE "$origname on $origdate:

\n"; } else { print NEWFILE "$origname on $origdate:

\n"; } } print NEWFILE "

\n"; print NEWFILE "

\n"; print NEWFILE "Follow Ups:
\n"; print NEWFILE "

\n"; print NEWFILE "

\n"; print NEWFILE "Post a Followup:

\n"; print NEWFILE "

\n"; print NEWFILE "\n"; print NEWFILE "\n"; if ($email) { print NEWFILE "\n"; } print NEWFILE "\n"; print NEWFILE "\n"; print NEWFILE "\n"; print NEWFILE "\n"; print NEWFILE "\n"; if ($subject =~ /^Re:/) { print NEWFILE "\n"; } else { print NEWFILE "\n"; } print NEWFILE "
Name:
E-Mail:
Subject:
Subject:
Comments:\n"; print NEWFILE "
\n"; print NEWFILE "

\n"; print NEWFILE "


\n"; print NEWFILE "\n"; close(NEWFILE); } sub main_page { open(MAIN,"$mesgfile") || die $!; @main =
; close(MAIN); open(MAIN,">$mesgfile") || die $!; if (!$FORM{'followup'}) { foreach $main_line (@main) { if ($main_line =~ //) { print MAIN "\n"; print MAIN "
  • $subject - $name $date\n"; print MAIN " (0)\n"; print MAIN "
      \n"; print MAIN "
    \n"; } else { print MAIN "$main_line"; } } } else { foreach $main_line (@main) { $work = 0; if ($main_line =~ /
      /) { print MAIN "
        \n"; print MAIN "
      • $subject - $name $date\n"; print MAIN "(0)\n"; print MAIN "
          \n"; print MAIN "
        \n"; } elsif ($main_line =~ /\((.*)\)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print MAIN "($num_responses)\n"; $work = 1; } } if ($work != 1) { print MAIN "$main_line"; } } else { print MAIN "$main_line"; } } } close(MAIN); } sub thread_pages { foreach $followup_num (@followup_num) { open(FOLLOWUP,"$mesgdir/$followup_num\.$ext"); @followup_lines = ; close(FOLLOWUP); open(FOLLOWUP,">$mesgdir/$followup_num\.$ext"); foreach $followup_line (@followup_lines) { $work = 0; if ($followup_line =~ /
          /) { print FOLLOWUP "
            \n"; print FOLLOWUP "
          • $subject $name $date\n"; print FOLLOWUP "(0)\n"; print FOLLOWUP "
              \n"; print FOLLOWUP "
            \n"; } elsif ($followup_line =~ /\((.*)\)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print FOLLOWUP "($num_responses)\n"; $work = 1; } } if ($work != 1) { print FOLLOWUP "$followup_line"; } } else { print FOLLOWUP "$followup_line"; } } close(FOLLOWUP); } } sub return_html { print "Content-type: text/html\n\n"; print "Message Added: $subject\n"; print "

            Message Added: $subject

            \n"; print "The following information was added to the message board:


            \n"; print "Name: $name
            \n"; print "E-Mail: $email
            \n"; print "Subject: $subject
            \n"; print "Body of Message:

            \n"; print "$body

            \n"; print "Added on Date: $date\n"; print "

            [Return To the Message Board]
            \n"; print "\n"; } sub increment_num { open(NUM,">$datafile") || die $!; print NUM "$num"; close(NUM); } sub error { $error = $_[0]; print "Content-type: text/html\n\n"; if (($error eq 'no_name') && (!$FORM{'body'}) && (!$FORM{'subject'})) { print "Add to $title\n"; print "

            Add to $title

            \n"; print "Please fill out all the necessary information below to add your message to the message board.


            \n"; &rest_of_form; } elsif ($error eq 'no_name') { print "Error!\n"; print "

            Error: No Name

            \n"; print "You didn't enter your name; please correct this error below.


            \n"; &rest_of_form; } elsif ($error eq 'no_subject') { print "Error!\n"; print "

            Error: No Subject

            \n"; print "You didn't enter a subject; please correct this error below.


            \n"; &rest_of_form; } elsif ($error eq 'no_body') { print "Error!\n"; print "

            Error: No Message

            \n"; print "You didn't enter a message; please correct this error below.


            \n"; &rest_of_form; } else { print "Error!\n"; print "

            An error has occurred

            \n"; print "An error has occurred, please correct them below.


            \n"; &rest_of_form; } exit; } sub rest_of_form { print "\n"; if ($FORM{'followup'}) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "\n"; print "\n"; print "\n"; if ($subject_line == 1) { print "\n"; print "\n"; } else { print "\n"; } print "
            Name:
            E-Mail:
            Subject: $FORM{'subject'}
            Subject:
            Message:\n"; print "

            \n"; print "

            \n"; print "
          • \n"; print "\n\n"; }