CONFIG - ptt/pttbbs GitHub Wiki

調整編譯設定檔

範例設定檔在 sample/pttbbs.confsample/pttbbs_minimal.conf

★. 關乎編譯安裝是否會成功的一些設定:

如果是在 64bit 的作業系統編譯安裝 PttBBS, 請記得開啟以下兩個定義:

#define SHMALIGNEDSIZE (1048576*4)     // FreeBSD, Ubuntu 使用者可以不加此定義
#define TIMET64

不然會出現 undefined reference to .... 之類的錯誤編譯訊息


0. 站務看板名相關

/* 新手板(會自動進我的最愛) */
#define BN_NEWBIE              BBSMNAME "NewHand"

/* 找看板(會自動進我的最愛) */
#define BN_ASKBOARD           "AskBoard"

實際測試的結果好像是不會自動進我的最愛, 如果想要讓它自動進請自行記得到 (BBS家目錄)/etc/myfav_defaults 編輯修改


1. 站外信server相關

/* 幫忙寄信的 server, 一般設成自己(即ip: 127.0.0.1)就可以 */
//#define RELAY_SERVER_IP "127.0.0.1"

如果自己的BBS伺服器沒有需要轉信 (其實現在跟看板轉信有關的程式碼, 已經都被disable掉了)

或站際間信件的轉送 (例如從A站寄信到B站的信箱), 這個定義似乎也可以註解掉

另外記得自己在啟動BBS時, 若無需求也不必將 (BBS家目錄)/bin/outmail 這個程式也打開


2. 水球整理, 看板備份

/* 水球整理, 看板備份等等外部程式 */
//#define OUTJOBSPOOL

要開啟這個定義, 必須要確保相關的外部程式可以跑, 不然開了也沒用, 若還不熟悉可以自己先關著, 然後有備份需要就先手動備份


3. 全站樂透相關

/* 若定義, 則不能舉辦賭盤 */
//#define NO_GAMBLE

因為現在板主要在 ptt 測試看板樂透可能不太方便 (大家都看得到), ptt2 也不能在板上舉辦賭盤

所以也可透過自己架測試站來嘗試、練習, 如果是要這樣運用的話, 請將此定義註解掉。

全站賭盤的話, 還要自己另外再新增一些設定檔, 賭盤才會跑起來, (待補)


4. 文章閱讀介面

/* 使用新式的 pmore (piaip's more) 代替舊式 bug 抓不完的 more 或是簡易的 minimore */
#define USE_PMORE

如果已經很習慣 Ptt 現在閱讀文章的介面的話, 強烈建議一定要把這個定義打開!!!

不然可能用舊的介面讀起文章會不順以外, 目前用pmore相關指令設計的BBS動畫也可能會因此跑不了

舊介面閱讀文章示意圖: (無法支援pmore動畫script)

新介面閱讀文章示意圖: (不會按個PgDn就直接衝到下篇文章, 且支援動畫功能)


5. 顯示「文章屍體」

/* 若定義, 則在刪除看板文章的時候, 僅會在 .DIR 中標明, 並不會將該資料
   從 .DIR 中拿掉. 可以避免多項問題 (尤其是熱門看板一堆推薦及編輯時)
   須配合使用 (尚未完成)                                              */

ps. .DIR 非常大概的意思就是: 索引檔, 跟看板裡的文章標題目錄有關, 就是很多人常常在講的「外標題」之類相關的東西

#define STR_SAFEDEL_TITLE    "(本文已被刪除)"
/* 這樣被刪文章的標題才會顯示 (本文已被刪除) */

#define FN_SAFEDEL    ".d"
#define FN_SAFEDEL_PREFIX_LEN (2)

#define SAFE_ARTICLE_DELETE_NUSER (0)
/* 如果沒定義這個, 預設要等到看板人氣大於 2 的時候,
   刪除完文章才會留下屍體 */`

如果想要測試刪除文章所留下的屍體的話, 記得要將這些相關定義自行開啟並補上相關資訊


6. SYSOP帳號自動加上站長權限

/* 若定義, 則 SYSOP帳號並不會自動加上站長權限.
   在第一次啟動時, 您並不能定義 (否則就拿不到站長權了) .
   而在設定完成後, 若您站長帳號並不叫做 SYSOP,
   則可透過 NO_SYSOP_ACCOUNT 關閉該帳號, 以避免安全問題發生.          */
//#define NO_SYSOP_ACCOUNT

可以用 SYSOP 設定完你想要使用的站長權限帳號後

再將 註解 取消掉並重新編譯, 另外也可以把 SYSOP 這個 ID

放在 (BBS家目錄)/etc/reserved.id 這個檔案裡 (for設定系統保留帳號)

這樣後來新註冊的人, 就連 SYSOP 這個帳號都無法申請了


7. 關閉全站噓文

/* 若定義, 則使用舊式推文 */
//#define OLDRECOMMEND

如果沒有把這個定義註解掉, 你這個站台的「2」就真的壞了.........

(可參考ptt.cc/ptt2.cc的推文介面的差異)


8. guest 可以推文

/* 若定義, 則 guest 可推文,格式變為 IP+日期 */
//#define GUESTRECOMMEND

此功能還沒設定成功, 還有待補充


9. 設定推文「冷卻時間」

/* 定義幾秒內算快速推文 */
#define FASTRECMD_LIMIT (90)

可以幫你定義第一次推噓文多久的時間內只能加註


10. 開啟退文

#define ASSESS

文章評價相關程式碼: 開啟這個定義, 你就可以使用「退文」的功能


11. 留下交易記錄

#define USE_RECENTPAY

如果沒定義這個,站內的虛擬幣(以ptt站來說就是p幣)交易將無法留下紀錄!!


12. 寄信給帳號站長

#define USE_MAIL_ACCOUNT_SYSOP

最近 sitos@github/ptt 寫程式碼提交的一個新功能,

可以讓沒通過註冊認證的使用者寄信給帳號站長

(可以到 (BBS家目錄)/etc/mail_account_sysop 編輯相關收信列表)


13. ALLPOST行為修正到最新版本

#define USE_LIVE_ALLPOST

定義這個可以讓 ALLPOST 相關同步的模式比較接近現在 ptt/ptt2 採用的模式

(不過要另外設定才會有只記錄7天前ALLPOST文章的功能...)


14. 「pfterm」 (piaip's flat terminal, Perfect Term)

#define USE_PFTERM

定義完 USE_PFTERM 可以解決一些問題

當系統維護時進入 編輯系統檔案、資源回收桶、編輯紀錄 等介面時

才不會有所在游標的位置無法顯示任何文字的情況

以及如果需要開啟 BBSLua 功能的話, 也需要先開啟此介面來改善顯示效果


15. 停止新帳號被申請

#define NO_LOGINASNEW

當覺得不想再讓站上有新的ID出現時可以定義此函式

(停止受理新的註冊單也有相關的定義, 暫時找不到之後再補)


16. 除錯模式

#define DEBUG

一般用來 debug的情況下會用到, 你也可以在編譯時再自行 DEBUG=1 參數

會開啟一些 DEBUG 用途的程式碼, gcc 幫你編譯時不用 -O 而改加上 -g ,

menu title 顯示目前的 PID, 以方便用 gdbattach.


17. 安裝新版資源回收桶與編輯記錄

#define USE_TIME_CAPSULE

要定義這個才能開始使用編輯紀錄、刪除部分文字以及資源回收桶的功能

刪除部分文字需另將推文記錄服務(見03. b)開啟


18. 定義文章最高價格

#define MAX_POST_MONEY (1000)

如果覺得自己站台上發表的文章最多只有 100 單位(預設值)的虛擬代幣不夠, 可以自己調整XD


19. 做出自己的「白馬」

#define INSCREEN "(請至pttbbs.conf編輯你的前進站畫面)"

其實就是個讓你可以把白馬畫面設定出來的地方:

至於要如何將 ANSI 碼上色? 目前想到的是, 可以善用 跳脫字元 ( \033 )

搭配相關的ANSI上色教學, 即可初步創作屬於自己的「白馬」


20. 啟用新版水桶功能

#define USE_NEW_BAN_SYSTEM

開啟新的水桶系統功能, 取代人數有上限的傳統水桶功能


21. 修改UID/GID

#define BBSUID          9999
#define BBSGID          99

可手動修改上述兩項,以符合先前帳號之設定

22. 小天使功能

#define PLAY_ANGEL
#define ANGEL_CHANGE_TIMELIMIT_MINS 1

記得目前若要開啟此功能需兩行一起定義,否則無法通過編譯

(by #1PPuEF67 (PttCurrent) [ptt.cc] )

23. 調整 note 板動態看板上限

#define MAX_ADBANNER (500)

存放點歌數量的上限是:動態看板上限數-100

24. 設定存放帳號審核紀錄的看板/檔案名稱

#define BN_ID_RECORD
#define FN_ID_RECORD

25. 使用者條款

#define HAVE_USERAGREEMENT "etc/UserAgreement"
//#define HAVE_USERAGREEMENT_VERSION "etc/UserAgreementVersion"
//#define HAVE_USERAGREEMENT_ACCEPTABLE "etc/UserAgreementAcceptable"

啟用使用者條款時,若沒有要讓舊使用者再度同意才能進站的需要

只要定義 HAVE_USERAGREEMENT"etc/UserAgreement" 即可

記得自行至相關目錄下加指定檔案

26. 聊天室訊息記錄功能

#define CHAT_MSG_LOGFILE "log/<你要的檔名>.log"

即可記錄站台內聊天室中 [main] 包廂的對話紀錄


其他更多更詳盡還沒被發掘的功能

也可以去查閱裡面的程式碼來推測可以測試開啟哪些定義

重新編譯程式

每次在 pttbbs.conf 調完設定要重新編譯前, 請先自己記得清掉之前編譯出的東西:

$ cd ~/pttbbs && pmake clean && pmake all install clean
  • 小提醒,請使用 bbs user 或是 bbsadm user 而不是 root, 這樣 install 好的東西才會在 /home/bbs 目錄喔
⚠️ **GitHub.com Fallback** ⚠️