home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Lotus / NETOBJ / T2.Z / bbs-submit.bin / bbs-submit.cgi.rsrc / TEXT_128_!.txt < prev    next >
Text File  |  1998-02-23  |  7KB  |  221 lines

  1. $path = "$ENV{'PATH_TRANSLATED'}";
  2. $path =~ s/bbs-submit.cgi//;
  3. $configFile = "config";
  4. $configPath = $path.$configFile;
  5. require $configPath;
  6.  
  7. print "Content-type: text/html\n\n";
  8. #
  9. # This reads in the information sent when the user pressed Submit
  10. #
  11. if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; }
  12. else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
  13. #
  14. # Now, using a little loop, we'll split up the data into name/value
  15. # pairs, which makes them easier to work with. 
  16. #
  17. @pairs = split(/&/, $buffer);
  18. foreach $pair (@pairs)
  19. {
  20.     ($name, $value) = split(/=/, $pair);
  21.     $value =~ tr/+/ /;
  22.     $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  23.      
  24.     $FORM{$name} = $value;
  25. }
  26. #
  27. # Once the name/value pairs have been created, you can work with
  28. # them by referring to the variable names you set up in the 
  29. # original HTML, using $FORM{"varname"}.
  30. #
  31. #
  32. # First, we make sure that they actually gave an email address
  33. #
  34. #check for error -- REQUIRE ALL
  35. ¬complete unless $FORM{'thread'} && $FORM{'time'} && $FORM{'RealTime'};
  36. #$FORM{'name'} =~ s/([\(\)\>\<\"\'])/\\$1/g;
  37. $FORM{'name'} =~ tr/\n//d;
  38. #$FORM{'email'} =~ s/([\(\)\>\<\"\'])/\\$1/g;
  39. $FORM{'email'} =~ tr/\n//d;
  40. # $FORM{'subject'} =~ s/([\(\)\>\<\"\'])/\\$1/g;
  41. $FORM{'subject'} =~ tr/\n//d;
  42. #$FORM{'body'} =~ s/([\(\)\>\<\"\'])/\\$1/g;
  43. $body = $FORM{'body'};
  44. $body =~ s/\n\r/<br>/g;
  45. $body =~ s/\r\n/<br>/g;
  46. $body =~ s/\r/<br>/g;
  47. $body =~ s/\n/<br>/g;
  48. $name = $FORM{'name'};
  49. $name =~ s/\r//g;
  50. $name =~ s/\n/<br>/g;
  51. $name2 = $name;
  52. $name2 =~ s/\\/\\\\/g;
  53. $name2 =~ s/\"/\\\"/g;
  54. $email = $FORM{'email'};
  55. $email =~ s/\r//g;
  56. $email =~ s/\n/<br>/g;
  57. $subject = $FORM{'subject'};
  58. $subject =~ s/\r//g;
  59. $subject =~ s/\n/<br>/g;
  60. $subject2 = $subject;
  61. $subject2 =~ s/\\/\\\\/g;
  62. $subject2 =~ s/\"/\\\"/g;
  63. ### The following 3 field is internal and self generating. user have no business
  64. ### to generate beyond the set allowed 
  65. &invalidchar if $FORM{'RealTime'} =~ /([*\|\;\&\\\~\^\[\]\$\.\(\)\>\<\"\'\n\r])/;
  66. &invalidchar if $FORM{'thread'} =~ /([A-z*\|\;\&\\\~\^\[\]\$\.\(\)\>\<\"\'\,\n\r])/;
  67. &invalidchar if $FORM{'time'} =~ /([A-z*\|\;\&\\\~\^\[\]\$\.\(\)\>\<\"\'\,\n\r])/;
  68. &invalidchar if $FORM{'parent'} =~ /([A-z*\|\;\&\\\~\^\[\]\$\.\(\)\>\<\"\'\,\n\r])/;
  69. $realTime = $FORM{'RealTime'};
  70. $realTime =~ s/_/ /g;
  71. &makeMessage;
  72. &addToIndex;
  73. &success;
  74. exit;
  75. #######################################################################
  76.  ############################  Add to data file  #######################
  77. #######################################################################
  78. sub addToIndex {
  79.     select(STDOUT);
  80.     open(toINDEX,"$INDEX_FILE") || die "can't open $INDEX_FILE\n";
  81.     &lock(toINDEX);
  82.     open(temp, "> $TMP") || die "can't open $TMP\n";
  83.     while(<toINDEX>){
  84.         if(/<!--insertion point-->/){
  85.             print temp "parent.addpbbsArray(\"$subject2\",$FORM{'time'},\"$realTime\",\"$name2\",$FORM{'thread'},\"message/$file_handle.html\",\"$FORM{'parent'}\",\"$file_handle\")\n<!--insertion point-->\n";
  86.         }
  87.         else {
  88.             print temp $_;
  89.         }
  90.     }
  91.     &unlock(toINDEX);
  92.     close(toINDEX);
  93.     close(temp);
  94.        rename($TMP, $INDEX_FILE);
  95. }
  96. ######################################################################
  97. ############################  Make .dat file    ######################
  98. ######################################################################
  99. sub makeMessage {
  100.     select(STDOUT);
  101.     $file_handle = getToken();
  102.     open(NEW,">> $STORAGE_DIR:$file_handle.html") || die "can't open $STORAGE_DIR/$file_handle.html\n";
  103.     select(NEW);
  104. print <<"DONE";
  105. <html>
  106. <META HTTP-EQUIV="Expires" CONTENT="Sat, 29 Sep 1973 23:59:00 GMT">
  107. <head>
  108.     <title>$subject</title>
  109. </head>
  110. <body bgcolor="#FFFFFF">
  111. <script language="JavaScript">
  112. <!--
  113.     var coun = navigator.appVersion.indexOf("(");
  114.     var last = navigator.appVersion.lastIndexOf(";");
  115.                 var previous = parent.returnNgbr($file_handle,"Prev");
  116.                 var next = parent.returnNgbr($file_handle,"Next");
  117.                 document.write('<a href="'+previous+'" target="message" > <img src="$UNIX_IMAGE_DIR/previous.gif" border="0"></a>');    
  118.                 document.write('<a href="'+next+'" target="message" > <img src="$UNIX_IMAGE_DIR/next.gif" border="0"></a>');
  119. //Need ../ since CGIBIN_DIR in config file is taken relative to the bbs directory.
  120.        document.write('<a href="$UNIX_MESSAGE_TO_CGIBIN/submit-bbs-form.cgi?$FORM{'thread'}" target="message"><img src="$UNIX_IMAGE_DIR/reply.gif" border=0></a><br>');    
  121.  
  122. //-->
  123. </script><hr>
  124. <pre>
  125. <b>Name</b>:    $name
  126. <b>Email</b>:   <a href=mailto:$email>$email </a> 
  127. <b>Subject</b>: $subject
  128. <b>Thread</b>:  $FORM{'thread'}
  129. <b>Time</b>:    $realTime
  130. </pre><hr>
  131. <!-- since 1/1/70 GMT$FORM{'time'} -->
  132. <b>
  133.     $body
  134. </b>
  135. </body>
  136. </html>
  137. DONE
  138.     close(NEW);
  139. }
  140. ###############################################################################
  141. ############################  Get Token #######################################
  142. sub getToken{
  143. ######
  144. #lock
  145. ######
  146.     open(TOKEN,"$TOKEN_FILE") || die "can't open $STORDIR/$file_handle.html\n";
  147.     &lock(TOKEN);
  148.     while (<TOKEN>) {
  149.         $tokenReturn  = "$_";
  150.         chop($tokenReturn);
  151.     }
  152.     close(TOKEN);
  153.     open(TOKEN,"> $TOKEN_FILE") || die "can't open $STORDIR/$file_handle.html\n";
  154.     $tokenNext = $tokenReturn + 1;
  155.     select(TOKEN);
  156.  print <<"DONE";
  157. $tokenNext
  158. DONE
  159.     &unlock(TOKEN);
  160.     close(TOKEN);
  161.     select(STDOUT);
  162.     return $tokenReturn;
  163. #######
  164. #unlock
  165. #######
  166. }
  167. sub lock{
  168. if ($flock_exists == 1){
  169.         local ($file_handle);
  170.         foreach $file_handle (@_){
  171.                 flock($file_handle, 2);
  172.                 }
  173.         }
  174. }
  175. sub unlock{
  176. if ($flock_exists == 1){
  177.         local ($file_handle);
  178.         foreach $file_handle (@_){
  179.                 flock($file_handle, 8);
  180.                 }
  181.         }
  182. }
  183. ###############################################################################
  184. ############################  Complete/Success  ###############################
  185. ###############################################################################
  186. sub success{
  187.     select(STDOUT);
  188.     open(EP,"$SUCCESS");
  189.     while(<EP>){
  190.         $tk = "$_";
  191.        $tk =~ s/\#\#\#\#HOME-LOCATION\#\#\#\#/$BBS_HOME/;
  192.         print "$tk";
  193.     }
  194.     close(EP);
  195.     exit;
  196. }
  197. ###############################################################################
  198. ############################  Incomplete Error  ###############################
  199. ###############################################################################
  200. sub notcomplete {
  201.     select(STDOUT);
  202.     open(EP,"$ERROR");
  203.     while(<EP>){
  204.         print "$_";
  205.     }
  206.     close(EP);
  207.     exit;
  208. ###############################################################################
  209. ############################  Invalid char  ###############################
  210. ###############################################################################
  211. sub invalidchar {
  212.     select(STDOUT);
  213.     open(EP,"$ERROR_CHAR");
  214.     while(<EP>){
  215.         print "$_";
  216.     }
  217.     close(EP);
  218.     exit;
  219.