回精華區
作者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      ]|[�:]=
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻