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

  1. $path = "$ENV{'PATH_TRANSLATED'}";
  2. $path =~ s/submit-bbs-form.cgi//;
  3. $configFile = "config";
  4. $configPath = $path.$configFile;
  5. require $configPath;
  6.  
  7.  
  8.  
  9. $PARENT=1;
  10. sub lock{
  11. if ($flock_exists == 1){
  12.     local ($file_handle);
  13.     foreach $file_handle (@_){
  14.         flock($file_handle, 2);
  15.         }
  16.     }
  17. }
  18. sub unlock{
  19. if ($flock_exists == 1){
  20.     local ($file_handle);
  21.     foreach $file_handle (@_){
  22.         flock($file_handle, 8);
  23.         }
  24.     }
  25. }
  26. sub createInd{    
  27.     open(original,"$STORAGE_DIR:bbs-data.original") || die "can't open $STORAGE_DIR:bbs-data.original
  28. ";
  29.     open(ind,">> $STORAGE_DIR:bbs-data.html") || die "can't open $STORAGE_DIR:bbs-data.html
  30. ";
  31.     &lock(ind);
  32.     select(ind);
  33.     while(<original>){
  34.       print;
  35.     }
  36.     &unlock(ind);
  37.     close(original);
  38.     close(ind);
  39.     chmod 0606, <$STORAGE_DIR:bbs-data.html>;
  40.     open(original,"$STORAGE_DIR:zero.counter") || die "can't open $STORAGE_DIR:zero.counter
  41. ";
  42.     open(ind,">> $STORAGE_DIR:counter") || die "can't open $STORAGE_DIR:counter
  43. ";
  44.     &lock(ind);
  45.     select(ind);
  46.     while(<original>){
  47.       print;
  48.     }
  49.     &unlock(ind);
  50.     close(original);
  51.     close(ind);
  52.     chmod 0606, <$STORAGE_DIR:counter>;
  53.     open(original,"$STORAGE_DIR:zero.counter") || die "can't open bbs-data.original
  54. ";
  55.     open(ind,">> $STORAGE_DIR:thread_counter") || 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, <$STORAGE_DIR:thread_counter>;
  66. }
  67. sub getToken{
  68.     createInd unless (-e "$STORAGE_DIR:bbs-data.html");
  69.     if ($ENV{'QUERY_STRING'} != ''){
  70.       $PARENT=0;
  71.       return ($ENV{'QUERY_STRING'});
  72.     }
  73.     open(TOKEN,"$THREAD_TOKEN") || die "can't open $STORAGE_DIR:$file_handle.html\n";
  74.     &lock(TOKEN);
  75.     while (<TOKEN>) {
  76.     $tokenReturn  = "$_";
  77.     chop($tokenReturn);
  78.     }
  79.     &unlock(TOKEN);
  80.     close(TOKEN);
  81.     open(TOKEN,"> $THREAD_TOKEN") || die "can't open $STORAGE_DIR:$file_handle.html\n";
  82.     &lock(TOKEN);
  83.     $tokenNext = $tokenReturn + 1;
  84.     select(TOKEN);
  85. print <<"DONE";
  86. $tokenNext
  87. DONE
  88.     &unlock(TOKEN);
  89.     close(TOKEN);
  90.     select(STDOUT);
  91.     return $tokenReturn;
  92. }
  93. select(STDOUT);
  94. print "Content-type: text/html\n\n";
  95. print <<"END";
  96. <HTML><HEAD>
  97. <TITLE>bbs submit</TITLE><META NAME="Author" CONTENT="">
  98. <script language="JavaScript">
  99. <!--
  100. var today = new Date();
  101. function newCookie(name, value){
  102.   document.cookie = name + "=" + value + "; expires=Tue, 07 Jan 2010 00:00:01 GMT";
  103. }
  104.  
  105. function readCookie(name){
  106.   var cookieFound = false;
  107.   var start = 0;
  108.   var end = 0;
  109.   var cookieString = document.cookie;
  110.   var i = 0;
  111.   while (i <= cookieString.length){
  112.     start =i;
  113.     end = start + name.length;
  114.     if (cookieString.substring(start,end) == name){
  115.       cookieFound = true;
  116.       break;
  117.     }
  118.     i++;
  119.   }     
  120.   if (cookieFound){
  121.     start = end + 1;
  122.     end = document.cookie.indexOf(";",start);
  123.     if (end < 0){
  124.       end = document.cookie.length;
  125.     }
  126.     else if (end < start){
  127.       end = document.cookie.length;
  128.     }
  129.     return document.cookie.substring(start,end);
  130.   }
  131.   return '';
  132. }
  133.  
  134. function replace(target,oldTerm,newTerm,caseSens,wordOnly){
  135.   var work=target;
  136.   var ind=0;
  137.   var next=0;
  138.   if(!caseSens){
  139.     oldterm = oldTerm.toLowerCase();
  140.     work = target.toLowerCase();
  141.   }
  142.   while((ind = work.indexOf(oldTerm,next)) >= 0) {
  143.     if (wordOnly){
  144.       var before = ind - 1;
  145.       var after = ind + oldTerm.length;
  146.       if (!(space(work.charAt(before)) && space(work.charAt(after)))){
  147.     next = ind + oldTerm.length;
  148.     continue;
  149.       }
  150.     }
  151.     target = target.substring(0,ind) + newTerm + target.substring(ind+oldTerm.length,target.length);
  152.     work = work.substring(0,ind) + newTerm + work.substring(ind+oldTerm.length,work.length);
  153.     next = ind + newTerm.length;
  154.     if (next >= work.length) { break; }
  155.   }
  156.   return target;
  157. }
  158. function timeNow(){
  159.   return today.getTime();
  160. }
  161. function timeRealNow(){
  162.   
  163.   return replace(today.toGMTString()," ","_",false,false);
  164. }
  165. //-->
  166. </script>
  167. </HEAD>
  168.  
  169. <BODY bgcolor=#FFFFFF LINK=#FF0000 VLINK=#800080 ALINK=#800080>
  170. END
  171. $printme = getToken();
  172.     if ($PARENT == 0){
  173.         print "<font size=4>Reply to Message: $printme</font>";
  174.     }
  175.     else {
  176.     print "<font size=4>New Message: $printme</font>";
  177.     }
  178. print<<"END";
  179.  <FORM ACTION="bbs-submit.cgi" method="POST">
  180. END
  181. print "<INPUT TYPE=HIDDEN NAME=\"parent\" VALUE= \"$PARENT\">";
  182. print "<INPUT TYPE=HIDDEN NAME=\"thread\" VALUE = \"$printme\">";
  183. print <<"END";
  184. <script language="JavaScript">
  185. document.write("<INPUT TYPE=HIDDEN NAME=time VALUE =\\""+timeNow()+"\\">");
  186. document.write("<INPUT TYPE=HIDDEN NAME=RealTime VALUE ="+timeRealNow()+">");
  187. </script>
  188.   <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=485>
  189.    <TR>
  190.     <TD WIDTH=12></TD><TD WIDTH=25></TD><TD WIDTH=38></TD><TD WIDTH=13></TD><TD WIDTH=91></TD>
  191.     <TD WIDTH=3></TD><TD WIDTH=92></TD><TD WIDTH=54></TD><TD WIDTH=157></TD><TD WIDTH=0></TD>
  192.     
  193.    </TR>
  194.    <TR VALIGN="top" ALIGN="left">
  195.     <TD COLSPAN=10 HEIGHT=36></TD>
  196.    </TR>
  197.    <TR VALIGN="top" ALIGN="left">
  198.     <TD COLSPAN=4></TD>
  199.     <TD COLSPAN=4 ROWSPAN=3 WIDTH=240>
  200. <script language="JavaScript">
  201.                                                                                                                                                                   
  202.    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")+ '\\">'); 
  203. </script>
  204. </TD>
  205.     <TD COLSPAN=2 HEIGHT=3></TD>
  206.    </TR>
  207.    <TR VALIGN="top" ALIGN="left">
  208.     <TD COLSPAN=2></TD>
  209.     <TD COLSPAN=1 ROWSPAN=1 WIDTH=45>
  210. <P ALIGN="RIGHT"><B>Name</B></TD>
  211.  
  212.     <TD COLSPAN=1></TD>
  213.     <TD COLSPAN=2 HEIGHT=16></TD>
  214.    </TR>
  215.    <TR VALIGN="top" ALIGN="left">
  216.     <TD COLSPAN=4></TD>
  217.     <TD COLSPAN=2 HEIGHT=3></TD>
  218.    </TR>
  219.    <TR VALIGN="top" ALIGN="left">
  220.     <TD COLSPAN=10 HEIGHT=11></TD>
  221.    </TR>
  222.    <TR VALIGN="top" ALIGN="left">
  223.     <TD COLSPAN=4></TD>
  224.     <TD COLSPAN=4 ROWSPAN=3 WIDTH=240>
  225.  
  226. <script language=JavaScript>
  227.                                                                                                                                                                   
  228.     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")+ '\\">');
  229. </script>
  230. </TD>
  231.     <TD COLSPAN=2 HEIGHT=1></TD>
  232.    </TR>
  233.    <TR VALIGN="top" ALIGN="left">
  234.     <TD COLSPAN=2></TD>
  235.     <TD COLSPAN=1 ROWSPAN=1 WIDTH=45>
  236. <P ALIGN="RIGHT"><B>E-mail</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=5></TD>
  244.    </TR>
  245.    <TR VALIGN="top" ALIGN="left">
  246.     <TD COLSPAN=10 HEIGHT=13></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=\\"subject\\" SIZE=\\"30\\" MAXLENGTH=\\"100\\" VALUE=\\"' + parent.getParentSubject("$printme")+ '\\">'); 
  255. </script>
  256. </TD>
  257.     <TD COLSPAN=2 HEIGHT=2></TD>
  258.    </TR>
  259.    <TR VALIGN="top" ALIGN="left">
  260.     <TD COLSPAN=1></TD>
  261.     <TD COLSPAN=2 ROWSPAN=1 WIDTH=63>
  262. <P ALIGN="RIGHT"><B>Subject</B></TD>
  263.  
  264.     <TD COLSPAN=1></TD>
  265.     <TD COLSPAN=2 HEIGHT=18></TD>
  266.    </TR>
  267.    <TR VALIGN="top" ALIGN="left">
  268.     <TD COLSPAN=4></TD>
  269.     <TD COLSPAN=2 HEIGHT=2></TD>
  270.    </TR>
  271.    <TR VALIGN="top" ALIGN="left">
  272.     <TD COLSPAN=10 HEIGHT=8></TD>
  273.    </TR>
  274.    <TR VALIGN="top" ALIGN="left">
  275.     <TD COLSPAN=4></TD>
  276.     <TD COLSPAN=5 ROWSPAN=1 WIDTH=397><TEXTAREA NAME="body" ROWS=10 COLS=45 WRAP=physical ></TEXTAREA></TD>
  277.     <TD COLSPAN=1 HEIGHT=179></TD>
  278.    </TR>
  279.    <TR VALIGN="top" ALIGN="left">
  280.     <TD COLSPAN=10 HEIGHT=6></TD>
  281.    </TR>
  282.    <TR VALIGN="top" ALIGN="left">
  283.     <TD COLSPAN=6></TD>
  284.     <TD COLSPAN=1 ROWSPAN=2 WIDTH=92 ALIGN="center" VALIGN="center"></TD>
  285.     <TD COLSPAN=3 HEIGHT=1></TD>
  286.    </TR>
  287.    <TR VALIGN="top" ALIGN="left">
  288.     <TD COLSPAN=4></TD>
  289.     <TD COLSPAN=1 ROWSPAN=1 WIDTH=92 ALIGN="center" VALIGN="center"><INPUT TYPE=SUBMIT VALUE="Submit"></TD>
  290.     <TD COLSPAN=1></TD>
  291.     <TD COLSPAN=3 HEIGHT=22></TD>
  292.    </TR>
  293.    <TR VALIGN="top" ALIGN="left">
  294.     <TD COLSPAN=10 HEIGHT=0></TD>
  295.    </TR>
  296.   </TABLE>
  297.  </FORM></BODY>
  298. </HTML>
  299.  
  300.  
  301. END
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.