一、原理：

本程式是利用cgic來當開發的工具，以Cookie認證的方式來製作WWW-BBS。
user login時寫入cookie，然後每次呼叫cgi就用cookie裡面的資料來做身
份認證。

另外使用者登入時，會在active目錄下建立一個與username相同的檔案，裡面
記載每一次動作的時間，本系統提供chkactive這支程式，用以定期執行刪除
太久沒有動作的user，以做統計之用。

二、CGI說明：

程式：blist.cgi
用途：用來列出討論區基本資料
格式檔：/home/bbs/wbbs/predef.txt (BLISTPRE 定義)
參數說明： blist.cgi?pgup上一頁
           blist.cgi?pgdn下一頁
           blist.cgi?top 第一頁
           blist.cgi?bottom 最後一頁
           blist.cgi?數字   由第「數字」項目開始列出
           blist.cgi?CLASS="string" 分類看板，以string來當分類字串
           不加參數時，就是等於加上top參數
           使用分類看板時，沒有分頁功能
           blist.cgi?CLASS=* 時就是列出全部討論區而不分頁
           設定QUERY參數傳入blist.cgi中時，就可以尋找中、英文板名與
           版主名單中出現該字串的討論區

程式：boards.cgi
用途：用來列出討論區內的文章
格式檔：/home/bbs/wbbs/listdef.txt (BOARDPRE定義)
參數說明： boards.cgi?boardid$num 閱讀boardid討論區，由第num個項目讀起
           boards.cgi?boardid$pgup 閱讀boardid討論區的上一頁
           boards.cgi?boardid$pgdn 閱讀boardid討論區的下一頁
           boards.cgi?boardid$top  閱讀boardid討論區的第一頁
           boards.cgi?boardid$bottom 閱讀boardid討論區的最後一頁
           boards.cgi?$pgup 閱讀目前討論區的上一頁
           boards.cgi?$pgdn 閱讀目前討論區的下一頁
           boards.cgi?$top  閱讀目前討論區的第一頁
           boards.cgi?$bottom 閱讀目前討論區的最後一頁
           boards.cgi?$num    閱讀目前的討論區，由第num個項目讀起
           也可以設定numarticle這個參數傳進boards.cgi中，就可以指定
           跳到的文章編號
           設定QUERY這個參數傳進boards.cgi中，就可以搜尋文章作者與標題
           如果討論區與查詢的內容沒有變動，就會顯示下一頁查詢結果。
	   目前已經可以show歡迎畫面，會先抓note.html（Wbbs討論區的歡迎
	   畫面）來show，如果找不到，才抓note（BBS的歡迎畫面）來show。

程式：read.cgi
用途：用來列出討論區內的文章
格式檔：/home/bbs/wbbs/readdef.txt 讀討論區文章(READPRE定義) 
        /home/bbs/wbbs/mreaddef.txt 讀信件 （MREADDEF定義）
參數說明： read.cgi?boardid_num  閱讀boardid討論區的第num篇文章,
                                 num如果是負數，則表示讀倒數第num篇
                                 boardid如果是「mail」表示閱讀個人信件區
           read.cgi?prev         閱讀目前討論區的前一篇文章
           read.cgi?next         閱讀目前討論區的下一篇文章

程式：ua_read.cgi
用途：用來不經Cookie驗證來列出討論區內的文章
格式檔：/home/bbs/wbbs/readdef.txt 讀討論區文章(READPRE定義) 
參數說明： read.cgi?board_filename  閱讀board討論區內檔名為filename的文章,
                                      

程式：edit.cgi
用途：用來編輯文章，編輯完會自動呼叫post.cgi
格式檔：/home/bbs/wbbs/postpre.html     編輯討論區張貼文章表頭(prefile[0])
	    /home/bbs/wbbs/replypre.html    編輯討論區回應文章表頭(prefile[1])
        /home/bbs/wbbs/reauth.html      編輯回應給作者的文章表頭(prefile[2])
		/home/bbs/wbbs/mailpre.html     編輯寄信文章表頭(prefile[3])
		/home/bbs/wbbs/remailpre.html   編輯回信文章表頭(prefile[4])
參數說明：edit.cgi          張貼文章在該討論區
          edit.cgi?reply=1  回應該篇文章
          edit.cgi?mail=1   編輯要寄出去的信件
          edit.cgi?id=userid&mail=1   編輯要寄給userid的信件
          editcgi?remail=1  編輯回信
          edit.cgi?numarticle=num&reply=1 回應第num篇文章
          edit.cgi?numarticle=num&remail=1 回應第num篇信件
          edit.cgi?reauth=1 回應文章到作者信箱

程式：post.cgi
用途：用來實際張貼文章
參數說明：一般說來不會主動呼叫這個cgi，只要記得如果要預視的話，在edit.cgi表頭
          的submit1選項value要有「預」字（例如：「預覽」、「預視」）

程式：mlist.cgi
用途：用來列出討論區內的文章
格式檔：/home/bbs/wbbs/mlistdef.txt (MLISTDEF定義)
參數說明： mlist.cgi?$pgup 閱讀信箱的上一頁
           mlist.cgi?$pgdn 閱讀信箱的下一頁
           mlist.cgi?$top  閱讀信箱的第一頁
           mlist.cgi?$bottom 閱讀信箱的最後一頁
           mlist.cgi?$num    閱讀信箱，由第num個項目讀起
           mlist.cgi?$delete 刪除信件

程式：login.cgi
用途：使用者登入，設定Cookie
參數說明：
  1.傳送進來的 submit1 之value如果有「註冊」兩字，系統會用fileout.cgi
    去讀取regster這個檔案來show出來以進行註冊功能。
  2.傳送進來的 submit1 之value如果有「訪客」兩字，系統會自動用guest
    login。
  3.USERNAME參數傳送使用者ID
  4.PASSWORD參數傳送使用者密碼
  5.GOTO參數傳送login之後的模式，value=1 表示並非由大門進來，value=0表示
    是由大門進來。value=1會呼叫 FHLWELCOME
    (目前是http://twbbs.fhl.net/fhlwelcome.html) 所定義的html，
    value=0會呼叫MAINFUNC(目前是/home/bbs/wbbs/main.html） 所定義的html
  6.閒置太久或者不是由大門進入，會啟動http://twbbs.fhl.net/verify.html來
    讓使用者登入（LOGINWIN 定義）
  7.在GOTO=1的情況下除了系統自己會記住進入的CGI程式之外（一般是edit.cgi）
    ，也可以透過設定 GOURL 參數，控制登入後將跳到哪一個URL。
特殊功能：針對直接叫用boards.cgi進入討論區這種login方式（GOTO value=1）
	  <!--$0-->會產生Javascript，製造一個Moveon()函數供認證後之html
          叫用，以進入系統之內。不過目前只能提供frame形式的呼叫使用，
	  直接用http://wbbs.fhl.net/cgi-bin/boards.cgi?sysop這種方式會略
	  有問題。
           

程式：logout.cgi
用途：使用者離站並除去Cookie
格式檔：/home/bbs/wbbs/logout.html（由LOGOUTMENU定義）
參數說明：無參數
特殊功能：<!--$0-->會產生使用者停留的時間(以分鐘為單位)

程式：fileout.cgi
用途：由既定的目錄中讀取格式檔，show出來。
參數說明：
      fileout.cgi?filename 系統會讀取/home/bbs/wbbs/filename.html出來
特殊功能：當filename=regster 時系統不會檢查user的密碼（當註冊新帳號時使用）

程式：useredit.cgi
用途：使用者基本資料修改
格式檔：/home/bbs/wbbs/useredit.txt(由USEREDIT定義)
參數說明： useredit.cgi?$edit 顯示使用者資料提供修改
           useredit.cgi?$save 儲存資料
           useredit.cgi?$password  更改密碼

程式：reg.cgi
用途：使用者註冊功能
參數說明： reg.cgi 沒有參數

程式：showout.cgi
用途：顯示一些BBS內部的檔案
參數說明： showout.cgi?TARGETDIR=1&FILENO=1 今天BBS上站人數統計
           showout.cgi?TARGETDIR=1&FILENO=2 今天WBBS上站人數統計
           showout.cgi?TARGETDIR=1&FILENO=3 昨天BBS上站人數統計 
           showout.cgi?TARGETDIR=1&FILENO=4 昨天WBBS上站人數統計
           showout.cgi?TARGETDIR=1&FILENO=5 本日十大話題
           showout.cgi?TARGETDIR=1&FILENO=6 本週五十大話題
           showout.cgi?TARGETDIR=1&FILENO=7 本月百大話題
           showout.cgi?TARGETDIR=1&FILENO=8 本年百大話題
           showout.cgi?TARGETDIR=1&FILENO=9 使用者排行
           showout.cgi?TARGETDIR=1&FILENO=10 留言簿
           showout.cgi?TARGETDIR=2&USERID=username show出username的名片檔

            以上幾個參數都不需要檢查user name跟密碼，也不需要用到Cookie
                 
程式：showboard.cgi
用途：用來直接以Guest身份進入討論區
格式檔：/home/bbs/wbbs/main_b.html (MAINB定義)
參數說明： showboard.cgi?討論區名  即可直接進入討論區
	  相關的格式檔還有/home/bbs/wbbs/content_b.html
			  /home/bbs/WWW/db.html
	  這幾個檔案都是利用Javascript來傳遞要進入的參數，
	  而來源主要是由正常的main.html content.html改來的

程式：vote.cgi
用途：執行投票相關功能
格式檔：無
參數說明： vote.cgi        	執行目前討論區的投票功能
	   vote.cgi?boardname	執行boardname討論區的投票功能
           vote.cgi?*           將投票選項送入目前討論區中
           vote.cgi?*boardname  將投票選項送入boardname討論區
           vote.cgi?!           顯示目前討論區的投票結果
           vote.cgi?*boardname  顯示boardname討論區的投票結果

程式：note.cgi
用途：編寫留言版功能
格式檔：無
參數說明：comment1	透過此變數傳入三行留言
	  GOURL		透過此變數設定留言存成功之後要去的URL 

程式：savefile.cgi
用途：編寫一些系統小檔案的功能
格式檔：無
參數說明：comment1	資料透過此變數傳入
	  savefile.cgi?1 自我介紹格式送入自我介紹討論區
	 真實姓名 REALNAME 32 byte
	 性別	  SEX       6
	 生日     BIRTHDAY  15
         教會     CHURCH    46
         專長     STRONG    63
         興趣     HAPPY     63
         現況     NOW       63
	 EMAIL    EMAIL     127
         希望     HOPE      63
         其他     OTHER     511
	  savefile.cgi?2 名片檔
	  savefile.cgi?21 簽名檔一
	  savefile.cgi?22 簽名檔二
          .......
	  savefile.cgi?30 簽名檔十


SSI功能：格式檔與fileout.cgi所叫用的檔案都可以使用此功能

在控制檔之中加入特殊參數可以讓CGI show出所需的資料。目前已經製作的如下：

<!--$0--> 主要功能執行（對於boards.cgi就是列出討論區文章，對於blist.cgi就是
                        列出討論區）
<!--$1--> 列出目前討論區id
<!--$2--> 列出目前討論區標題
<!--$3--> 列出目前討論區版主
<!--$4--> 列出使用者id
<!--$5--> 列出使用者暱稱
<!--$6--> 列出使用者上站次數
<!--$7--> 列出使用者張貼次數
<!--$8--> 列出使用者第一次上站時間 
<!--$9--> 列出使用者最近上站時間
<!--$10--> 列出使用者最近上站地點
<!--$11--> 列出使用者最近上站的遠端使用者名稱
<!--$12--> 列出使用者的E-mail
<!--$13--> 列出使用者的住址電話
<!--$14--> 列出使用者生日月份
<!--$15--> 列出使用者生日日數
<!--$16--> 列出使用者生日年份
<!--$17--> 列出使用者性別
<!--$18--> 列出使用者真實姓名
<!--$19--> 有無新信件
<!--$20--> blist的class字串
<!--$21--> 目前WBBS站上站人數
<!--$22--> 目前WBBS站上站名單
<!--$23--> 信箱封數
<!--$24--> 產生一個亂數（由1到~bbs/etc/gifnum檔案所記載數目之間），對信望愛站
           而言，已經放在note討論區的精華區了
<!--$25--> 讀出一個HTML檔，將輸出取代<!--$25-->。HTML檔案要放在note討論區的精
           華區，照順序取名001.html 002.html等等，檔案數目必須記載在
            ~bbs/etc/htmlnum檔案中，當然，對信望愛站而言，這個檔案已經放在
           note討論區的精華區了。
<!--$26--> 取出討論區的第一個版主（主要版主）
<!--$27--> 今日到前一個小時的上站次數累積(此程式必須配合信望愛站的waccount.c)
<!--$28--> 今日到前一個小時的上站人數累積(此程式必須配合信望愛站的waccount.c)
<!--$29--> 列出註冊人數
<!--$30--> 今天BBS上站人數統計 
<!--$31--> 今天WBBS上站人數統計
<!--$32--> 昨天BBS上站人數統計 
<!--$33--> 昨天WBBS上站人數統計
<!--$34--> 本日十大話題        
<!--$35--> 本週五十大話題      
<!--$36--> 本月百大話題        
<!--$37--> 本年百大話題        
<!--$38--> 使用者排行          
<!--$39--> 留言簿
<!--$40--> 錯誤login記錄             
<!--$41--> boards.cgi用的，吐出搜尋字串
<!--$42--> 吐出read.cgi所讀的檔案名稱（必須在<!--$0-->之後才能呼叫）
<!--$43--> 吐出名片的內容
<!--$50--> show出所有的簽名檔
<!--$51--> 吐出第一個簽名檔的內容
<!--$52--> 吐出第二個簽名檔的內容
<!--$53--> 吐出第三個簽名檔的內容
<!--$54--> 吐出第四個簽名檔的內容
<!--$55--> 吐出第五個簽名檔的內容
<!--$56--> 吐出第六個簽名檔的內容
<!--$57--> 吐出第七個簽名檔的內容
<!--$58--> 吐出第八個簽名檔的內容
<!--$59--> 吐出第九個簽名檔的內容
<!--$60--> 吐出第十個簽名檔的內容
