home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Netobjs / Install.exe / data1.cab / Components / BBSComp / bbs / cgi-bin / submit-bbs-form.cgi < prev   
Encoding:
Text File  |  1998-12-16  |  8.5 KB  |  320 lines

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