作者itoc.bbs@processor.tfcis.org (http://cpu.twbbs.o 看板: plan
標題Re: [建議]_cancel_by_xxx_請留下
時間XEON (Tue, 17 Jun 2003 15:31:06 +0800 (CST)) Updated: 2004/07/31
你也可以自己做一個 innbbsd 的 filter
: rec_article.c:receive_article()
// 這部分,就依各站要用哪些而加入哪些
+ if (filter_hinet())
+ return 0;
+ if (filter_seednet())
+ return 0;
+ if (filter_phonetic())
+ return 0;
if (!bbspost_add(nf->board, myaddr, mynick))
bbslog("<rec_article> :Err: 無法寫入 %s 板\n", nf->board);
> ───────────────────────────────────── <
以下所有的 filter_xxxx() 都是新增在 rec_article.c:receive_article() 前面
就依各站用哪些擋信規則,就加入哪些函式
你也可以自己寫一套擋信的規則
在這裡是檢查的條件,你可以自由發揮,可以使用變數的有:
BODY, SUBJECT, FROM, SITE, DATE, PATH, GROUPS, MSGID, CONTROL
> ───────────────────────────────────── <
static int /* 擋路徑有 hinet 的 */
filter_hinet()
{
return str_str(PATH, ".hinet.net");
}
> ───────────────────────────────────── <
static int /* 擋路徑有 seednet 的 */
filter_seednet()
{
return str_str(PATH, ".seednet.net.tw");
}
> ───────────────────────────────────── <
static int /* 擋注音文 */
filter_phonetic()
{
/* 範例: 檢查 BODY 是否含有注音文 */
int phonetic; /* 注音文數目 */
char *str;
nphonetic = 0;
str = BODY;
while (*str)
{
if (str[0] >= 0x81 && str[0] < 0xFE && str[1] >= 0x40
&& str[1] <= 0xFE && str[1] != 0x7F) /* 中文字 BIG5+ */
{
if (str[0] == 0xA3 && str[1] >= 0x74 && str[1] <= 0xBA) /* 注音文 */
phonetic++;
str++; /* 中文字雙位元,要多加一次 */
}
str++;
}
/* 超過內文 1/20 以上是注音文 (即每十個中文字有一個注音文),就 spam 掉 */
if (phonetic > strlen(BODY) / 20)
return 1;
return 0;
}
--
=[﹎:�摃�◣��:﹎ Origin ]|[ �吨O�痐� processor.tfcis.org ]|[�搟說�﹎:]=
=[﹊:�摃�╱��:﹊ Author ]|[ itoc.dorm-gd2.nctu.edu.tw ]|[���插�﹊:]=