回精華區
作者itoc, 信區: itoc
標題[功能] bbslink.c 轉信 server 可登入帳號/密碼
時間04/04/28
作者: itoc (破解韌體才是王道!) 看板: plan
標題: [功能] 轉信 server 可登入
時間: 2004/04/28 Wed 12:44:39                           Updated: 2004/10/23

  轉信 server 可登入帳號/密碼

: struct.h 加入欄位

typedef struct
{
  char name[13];        /* 該站的 short-name */
  char host[83];        /* 該站的 host */
  int port;             /* 該站的 port */
  usint xmode;          /* 該站的 xmode */
- char blank[20];       /* 保留 */
+ char AuthinfoUser[10];/* 登入帳號 */
+ char AuthinfoPass[10];/* 登入密碼 */
  FILE *feedfp;         /* bbslink.c 使用 */
} nodelist_t;

: innbbs.c:nl_add()

    case '2':
      nl.xmode |= INN_USEPOST;
      vget(b_lines, 0, "Port:[119] ", ans, 6, DOECHO);
      if ((port = atoi(ans)) <= 0)
        port = 119;
      if (vans("被此站台餵信嗎(Y/N)?[N] ") == 'y')
        nl.xmode |= INN_FEEDED;
+     if (vans("此 server 是否需要登入(Y/N)?[N] ") == 'y')
+     {
+       if (!vget(b_lines, 0, "請輸入登入帳號:", nl.AuthinfoUser,
+             sizeof(nl.AuthinfoUser), DOECHO) ||
+           !vget(b_lines, 0, "請輸入登入密碼:", nl.AuthinfoPass,
+             sizeof(nl.AuthinfoPass), DOECHO))
+         return 0;
+     }
      break;

: bbslink.c:open_connect()

  if (node->xmode & INN_USEPOST)
  {
-   tcpcommand("MODE READER");
-   if (NNRPbuffer[0] != '2')   /* 200 201 202 都能取信 */
-   {
-     bbslog("<bbslink> :Err: 伺服器拒絕連線:%s %d\n", host, port);
-     DEBUG(("╰<open_connect> 伺服器拒絕連線\n"));
-     return 0;
-   }
+   /* Leeym.030706: 需要帳號/密碼的 server */
+   if (tcpcommand("MODE READER") == NNTP_AUTH_NEEDED_VAL)
+   {
+     if (!node->AuthinfoUser[0] || !node->AuthinfoPass[0])
+     {
+       bbslog("<bbslink> :Err: 伺服器拒絕連線:%s %d\n", host, port);
+       DEBUG(("╰<open_connect> 伺服器拒絕連線\n"));
+       return 0;
+     }
+     else
+     {
+       tcpcommand("AUTHINFO USER %s", node->AuthinfoUser);
+       tcpcommand("AUTHINFO PASS %s", node->AuthinfoPass);
+     }
+   }
  }

--
□ 本文章由 itocpc512-2.EE.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻