回精華區
作者chwaian.bbs@cpu.tfcis.org (無言) 看板: plan
標題[功能]被設壞人不准寄信給對方
時間動力核心 (2004/12/19 Sun 00:33:49) Updated: 2005/01/02
很鴕鳥的一個功能

只要對方換個ID或是從外站寄信來 就沒用了 :P

可以配合禁止收站外信 來稍微補足

: ufo.h

#define UFO_JUMPBRD     BFLAG(19)
+ #define UFO_DENYBADMAIL   BFLAG(20)   /* 拒收壞人來信 */

  ...

- #define NUMUFOS_USER    20
+ #define NUMUFOS_USER    21

- #define STR_UFO         "-mpsnemPBQFANbwtSHKJ----CHA"
+ #define STR_UFO         "-mpsnemPBQFANbwtSHKJB---CHA"

  ...

#ifdef AUTO_JUMPBRD
  "跳去未讀看板    (跳去/不跳)",        /* UFO_JUMPBRD */
#else
  "保留",
#endif

- "保留",
+ "拒收壞人來信",       /* UFO_DENYBADMAIL */

: pal.c 新增底下這隻程式

int
pal_findbad(userid)   /* 找是否被對方設為壞人 */
  char *userid;
{
  ACCT acct;
  PAL bad;
  char fpath[64];
  int fd;
  int rc = 0;

  /* 若對方擋壞人的信,才檢查 */
  if (acct_load(&acct, userid) >= 0 && (acct.ufo & UFO_DENYBADMAIL))
  {
    usr_fpath(fpath, userid, fn_pal);

    if ((fd = open(fpath, O_RDONLY)) >= 0)
    {
      while (read(fd, &bad, sizeof(PAL)) == sizeof(PAL))
      {
        if ((cuser.userno == bad.userno) && (bad.ftype & PAL_BAD))
        {
          rc = 1;
          vmsg("你被對方設為壞人不能寄信給對方!");
          break;
        }
      }
      close(fd);
    }
  }
  return rc;
}

: maple.p

int t_list(void);
+ int pal_findbad(char *userid);

: mail.c mail_him()

  if ((userno = acct_userno(rcpt)) > 0)         /* 收件人有可能不存在 */
  {
+   if (pal_findbad(rcpt))
+     return -1;

: mail.c mail_send()

  else
  {
    if ((userno = acct_userno(rcpt)) <= 0)
    {
      vmsg(err_uid);
      return -1;
    }
+   else if (pal_findbad(rcpt))
+     return -1;
  }

--
  Origin:  Maple-itoc˙動力核心  cpu.tfcis.org 
  Author: chwaian 218-171-104-58.dynamic.hinet.net 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻