home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Lotus / NETOBJ / T2.Z / bbs_components.sit / submit-bbs-form.cgi.rsrc / TEXT_128_!.txt < prev    next >
Text File  |  1997-04-08  |  10KB  |  344 lines

  1.  
  2.  
  3.  
  4. ##################################
  5. ###CONFIGURATION##################
  6. ##################################
  7. ##################################
  8. ###FULL URL of BBS################
  9. ##################################
  10. $BBS_HOME='::';
  11. ##################################
  12. ###DISPLAY DIRECTORY##############
  13. ##################################
  14. $HTML_DIR='::html';
  15. $ERROR='error.html';
  16. $ERROR_CHAR='error-char.html';
  17. $SUCCESS='success.html';
  18. ###################################
  19. ###STORAGE DIRECTORY###############
  20. ###################################
  21. # This directory should be "server" readable/writeable/executable only.
  22. $STORAGE_DIR='::message';
  23. # The files below should be world readable/writable only.
  24. $ERROR_COLLECT='error-collect.txt';
  25. $SUCCESS_COLLECT='bbs-data.html';
  26. $TOKEN_FILE ='counter';
  27. $THREAD_TOKEN ='thread_counter';
  28. # if your system does not support the flock() function, comment this out, or set it to 0.
  29. # the latest edition of NT Perl, as well as all unix perl should have flock build in.
  30. $flock_exists = 1;
  31. ##################################
  32. ### END OF CONFIGURATION #########
  33. ##################################
  34. ### APPEND DIRECTORY with FILE ###
  35. ##################################
  36.  $ERROR = $HTML_DIR.':'.$ERROR;
  37. $ERROR_CHAR = $HTML_DIR.':'.$ERROR_CHAR;
  38. $SUCCESS = $HTML_DIR.':'.$SUCCESS;
  39. $TMP = $STORAGE_DIR.':'.($$).".tmp";
  40. $ERROR_COLLECT = $STORAGE_DIR.':'.$ERROR_COLLECT;
  41. $INDEX_FILE = $STORAGE_DIR.':'.$SUCCESS_COLLECT;
  42. $TOKEN_FILE = $STORAGE_DIR.':'.$TOKEN_FILE;
  43. $THREAD_TOKEN = $STORAGE_DIR.':'.$THREAD_TOKEN;
  44. ###################################
  45.  
  46.  
  47. $PARENT=1;
  48. sub lock{
  49. }
  50. sub unlock{
  51. }
  52. sub createInd{    
  53.     open(original,"::message:bbs-data.original") || die "can't open bbs-data.original
  54. ";
  55.     open(ind,">> ::message:bbs-data.html") || die "can't open bbs-data.original
  56. ";
  57.     &lock(ind);
  58.     select(ind);
  59.     while(<original>){
  60.       print;
  61.     }
  62.     &unlock(ind);
  63.     close(original);
  64.     close(ind);
  65.     chmod 0606, <::message:bbs-data.html>;
  66.     open(original,"::message:zero.counter") || die "can't open bbs-data.original
  67. ";
  68.     open(ind,">> ::message:counter") || die "can't open bbs-data.original
  69. ";
  70.     &lock(ind);
  71.     select(ind);
  72.     while(<original>){
  73.       print;
  74.     }
  75.     &unlock(ind);
  76.     close(original);
  77.     close(ind);
  78.     chmod 0606, <::message:counter>;
  79.     open(original,"::message:zero.counter") || die "can't open bbs-data.original
  80. ";
  81.     open(ind,">> ::message:thread_counter") || die "can't open bbs-data.original
  82. ";
  83.     &lock(ind);
  84.     select(ind);
  85.     while(<original>){
  86.       print;
  87.     }
  88.     &unlock(ind);
  89.     close(original);
  90.     close(ind);
  91.     chmod 0606, <::message:thread_counter>;
  92. }
  93. sub getToken{
  94.     createInd unless (-e "::message:bbs-data.html");
  95.     if ($ENV{'QUERY_STRING'} != ''){
  96.       $PARENT=0;
  97.       return ($ENV{'QUERY_STRING'});
  98.     }
  99.     open(TOKEN,"$THREAD_TOKEN") || die "can't open $STORAGE_DIR:$file_handle.html\n";
  100.     &lock(TOKEN);
  101.     while (<TOKEN>) {
  102.     $tokenReturn  = "$_";
  103.     chop($tokenReturn);
  104.     }
  105.     &unlock(TOKEN);
  106.     close(TOKEN);
  107.     open(TOKEN,"> $THREAD_TOKEN") || die "can't open $STORAGE_DIR:$file_handle.html\n";
  108.     &lock(TOKEN);
  109.     $tokenNext = $tokenReturn + 1;
  110.     select(TOKEN);
  111. print <<"DONE";
  112. $tokenNext
  113. DONE
  114.     &unlock(TOKEN);
  115.     close(TOKEN);
  116.     select(STDOUT);
  117.     return $tokenReturn;
  118. }
  119. select(STDOUT);
  120. print "Content-type: text/html\n\n";
  121. print <<"END";
  122. <HTML><HEAD>
  123. <TITLE>bbs submit</TITLE><META NAME="Author" CONTENT="">
  124. <script language="JavaScript">
  125. <!--
  126. var today = new Date();
  127. function newCookie(name, value){
  128.   document.cookie = name + "=" + value + "; expires=Tue, 07 Jan 2010 00:00:01 GMT";
  129. }
  130.  
  131. function readCookie(name){
  132.   var cookieFound = false;
  133.   var start = 0;
  134.   var end = 0;
  135.   var cookieString = document.cookie;
  136.   var i = 0;
  137.   while (i <= cookieString.length){
  138.     start =i;
  139.     end = start + name.length;
  140.     if (cookieString.substring(start,end) == name){
  141.       cookieFound = true;
  142.       break;
  143.     }
  144.     i++;
  145.   }     
  146.   if (cookieFound){
  147.     start = end + 1;
  148.     end = document.cookie.indexOf(";",start);
  149.     if (end < 0){
  150.       end = document.cookie.length;
  151.     }
  152.     else if (end < start){
  153.       end = document.cookie.length;
  154.     }
  155.     return document.cookie.substring(start,end);
  156.   }
  157.   return '';
  158. }
  159.  
  160. function replace(target,oldTerm,newTerm,caseSens,wordOnly){
  161.   var work=target;
  162.   var ind=0;
  163.   var next=0;
  164.   if(!caseSens){
  165.     oldterm = oldTerm.toLowerCase();
  166.     work = target.toLowerCase();
  167.   }
  168.   while((ind = work.indexOf(oldTerm,next)) >= 0) {
  169.     if (wordOnly){
  170.       var before = ind - 1;
  171.       var after = ind + oldTerm.length;
  172.       if (!(space(work.charAt(before)) && space(work.charAt(after)))){
  173.     next = ind + oldTerm.length;
  174.     continue;
  175.       }
  176.     }
  177.     target = target.substring(0,ind) + newTerm + target.substring(ind+oldTerm.length,target.length);
  178.     work = work.substring(0,ind) + newTerm + work.substring(ind+oldTerm.length,work.length);
  179.     next = ind + newTerm.length;
  180.     if (next >= work.length) { break; }
  181.   }
  182.   return target;
  183. }
  184. function timeNow(){
  185.   return today.getTime();
  186. }
  187. function timeRealNow(){
  188.   
  189.   return replace(today.toGMTString()," ","_",false,false);
  190. }
  191. //-->
  192. </script>
  193. </HEAD>
  194.  
  195. <BODY bgcolor=#FFFFFF LINK=#FF0000 VLINK=#800080 ALINK=#800080>
  196. END
  197. $printme = getToken();
  198.     if ($PARENT == 0){
  199.         print "<font size=4>Reply to Message: $printme</font>";
  200.     }
  201.     else {
  202.     print "<font size=4>New Message: $printme</font>";
  203.     }
  204. print<<"END";
  205.  <FORM ACTION="bbs-submit.cgi" method="post">
  206. END
  207. print "<INPUT TYPE=HIDDEN NAME=\"parent\" VALUE= \"$PARENT\">";
  208. print "<INPUT TYPE=HIDDEN NAME=\"thread\" VALUE = \"$printme\">";
  209. print <<"END";
  210. <script language="JavaScript">
  211. document.write("<INPUT TYPE=HIDDEN NAME=time VALUE =\\""+timeNow()+"\\">");
  212. document.write("<INPUT TYPE=HIDDEN NAME=RealTime VALUE ="+timeRealNow()+">");
  213. </script>
  214.   <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=485>
  215.    <TR>
  216.     <TD WIDTH=12></TD><TD WIDTH=25></TD><TD WIDTH=38></TD><TD WIDTH=13></TD><TD WIDTH=91></TD>
  217.     <TD WIDTH=3></TD><TD WIDTH=92></TD><TD WIDTH=54></TD><TD WIDTH=157></TD><TD WIDTH=0></TD>
  218.     
  219.    </TR>
  220.    <TR VALIGN="top" ALIGN="left">
  221.     <TD COLSPAN=10 HEIGHT=36></TD>
  222.    </TR>
  223.    <TR VALIGN="top" ALIGN="left">
  224.     <TD COLSPAN=4></TD>
  225.     <TD COLSPAN=4 ROWSPAN=3 WIDTH=240>
  226. <script language="JavaScript">
  227.                                                                                                                                                                   
  228.    document.write('<INPUT TYPE=text NAME=\\"name\\" SIZE=\\"30\\" MAXLENGTH=\\"100\\" onChange=\\"newCookie(\\'netobjects_bbs_username\\',this.form.name.value)\\" VALUE=\\"' + readCookie("netobjects_bbs_username")+ '\\">'); 
  229. </script>
  230. </TD>
  231.     <TD COLSPAN=2 HEIGHT=3></TD>
  232.    </TR>
  233.    <TR VALIGN="top" ALIGN="left">
  234.     <TD COLSPAN=2></TD>
  235.     <TD COLSPAN=1 ROWSPAN=1 WIDTH=38>
  236. <P ALIGN="RIGHT"><B>Name</B></TD>
  237.  
  238.     <TD COLSPAN=1></TD>
  239.     <TD COLSPAN=2 HEIGHT=16></TD>
  240.    </TR>
  241.    <TR VALIGN="top" ALIGN="left">
  242.     <TD COLSPAN=4></TD>
  243.     <TD COLSPAN=2 HEIGHT=3></TD>
  244.    </TR>
  245.    <TR VALIGN="top" ALIGN="left">
  246.     <TD COLSPAN=10 HEIGHT=11></TD>
  247.    </TR>
  248.    <TR VALIGN="top" ALIGN="left">
  249.     <TD COLSPAN=4></TD>
  250.     <TD COLSPAN=4 ROWSPAN=3 WIDTH=240>
  251.  
  252. <script language=JavaScript>
  253.                                                                                                                                                                   
  254.     document.write('<INPUT TYPE=text NAME=\\"email\\" SIZE=\\"30\\" MAXLENGTH=\\"100\\" onChange=\\"newCookie(\\'netobject_bbs_email\\',this.form.email.value)\\" VALUE=\\"'+readCookie("netobject_bbs_email")+ '\\">');
  255. </script>
  256. </TD>
  257.     <TD COLSPAN=2 HEIGHT=1></TD>
  258.    </TR>
  259.    <TR VALIGN="top" ALIGN="left">
  260.     <TD COLSPAN=2></TD>
  261.     <TD COLSPAN=1 ROWSPAN=1 WIDTH=38>
  262. <P ALIGN="RIGHT"><B>E-mail</B></TD>
  263.  
  264.     <TD COLSPAN=1></TD>
  265.     <TD COLSPAN=2 HEIGHT=16></TD>
  266.    </TR>
  267.    <TR VALIGN="top" ALIGN="left">
  268.     <TD COLSPAN=4></TD>
  269.     <TD COLSPAN=2 HEIGHT=5></TD>
  270.    </TR>
  271.    <TR VALIGN="top" ALIGN="left">
  272.     <TD COLSPAN=10 HEIGHT=13></TD>
  273.    </TR>
  274.    <TR VALIGN="top" ALIGN="left">
  275.     <TD COLSPAN=4></TD>
  276.     <TD COLSPAN=4 ROWSPAN=3 WIDTH=240>
  277.  
  278. <script language="JavaScript">
  279.                                                                                                                                                                   
  280.    document.write('<INPUT TYPE=text NAME=\\"subject\\" SIZE=\\"30\\" MAXLENGTH=\\"100\\" VALUE=\\"' + parent.getParentSubject("$printme")+ '\\">'); 
  281. </script>
  282. </TD>
  283.     <TD COLSPAN=2 HEIGHT=2></TD>
  284.    </TR>
  285.    <TR VALIGN="top" ALIGN="left">
  286.     <TD COLSPAN=1></TD>
  287.     <TD COLSPAN=2 ROWSPAN=1 WIDTH=63>
  288. <P ALIGN="RIGHT"><B>Subject</B></TD>
  289.  
  290.     <TD COLSPAN=1></TD>
  291.     <TD COLSPAN=2 HEIGHT=18></TD>
  292.    </TR>
  293.    <TR VALIGN="top" ALIGN="left">
  294.     <TD COLSPAN=4></TD>
  295.     <TD COLSPAN=2 HEIGHT=2></TD>
  296.    </TR>
  297.    <TR VALIGN="top" ALIGN="left">
  298.     <TD COLSPAN=10 HEIGHT=8></TD>
  299.    </TR>
  300.    <TR VALIGN="top" ALIGN="left">
  301.     <TD COLSPAN=4></TD>
  302.     <TD COLSPAN=5 ROWSPAN=1 WIDTH=397><TEXTAREA NAME="body" ROWS=10 COLS=48 ></TEXTAREA></TD>
  303.     <TD COLSPAN=1 HEIGHT=179></TD>
  304.    </TR>
  305.    <TR VALIGN="top" ALIGN="left">
  306.     <TD COLSPAN=10 HEIGHT=6></TD>
  307.    </TR>
  308.    <TR VALIGN="top" ALIGN="left">
  309.     <TD COLSPAN=6></TD>
  310.     <TD COLSPAN=1 ROWSPAN=2 WIDTH=92 ALIGN="center" VALIGN="center"></TD>
  311.     <TD COLSPAN=3 HEIGHT=1></TD>
  312.    </TR>
  313.    <TR VALIGN="top" ALIGN="left">
  314.     <TD COLSPAN=4></TD>
  315.     <TD COLSPAN=1 ROWSPAN=1 WIDTH=92 ALIGN="center" VALIGN="center"><INPUT TYPE=SUBMIT VALUE="Submit"></TD>
  316.     <TD COLSPAN=1></TD>
  317.     <TD COLSPAN=3 HEIGHT=22></TD>
  318.    </TR>
  319.    <TR VALIGN="top" ALIGN="left">
  320.     <TD COLSPAN=10 HEIGHT=0></TD>
  321.    </TR>
  322.   </TABLE>
  323.  </FORM></BODY>
  324. </HTML>
  325.  
  326.  
  327. END
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.