Преглед на файлове

Populate memberlist->fromip

Bryan Drewery преди 14 години
родител
ревизия
9f93b55cc0
променени са 2 файла, в които са добавени 7 реда и са изтрити 1 реда
  1. 1 0
      src/chan.h
  2. 6 1
      src/mod/irc.mod/chan.c

+ 1 - 0
src/chan.h

@@ -25,6 +25,7 @@ typedef struct memstruct {
   char userhost[UHOSTLEN];
   char userip[UHOSTLEN];
   char from[NICKLEN + UHOSTLEN];   /* nick!user@host */
+  char fromip[NICKLEN + UHOSTLEN]; /* nick!user@ip */
   bool is_me;
 } memberlist;
 

+ 6 - 1
src/mod/irc.mod/chan.c

@@ -69,6 +69,7 @@ static void resolv_member_callback(int id, void *client_data, const char *host,
       if (pe && !strcmp(pe + 1, r->host)) {
         strlcpy(user, m->userhost, pe - m->userhost + 1);
         simple_snprintf(m->userip, sizeof(m->userip), "%s@%s", user, bd::String(ips[0]).c_str());
+        simple_snprintf(m->fromip, sizeof(m->fromip), "%s!%s", m->nick, m->userip);
         if (!m->user) {
           simple_snprintf(s, sizeof(s), "%s!%s", m->nick, m->userip);
           m->user = get_user_by_host(s);
@@ -1889,6 +1890,7 @@ static int got352or4(struct chanset_t *chan, char *user, char *host, char *nick,
         simple_snprintf(m->userip, sizeof(m->userip), "%s@%s", user, ip);
       else if (is_dotted_ip(host))
         simple_snprintf(m->userip, sizeof(m->userip), "%s@%s", user, host);
+      simple_snprintf(m->fromip, sizeof(m->fromip), "%s!%s", m->nick, m->userip);
     }
   }
 
@@ -2623,6 +2625,7 @@ static int gotjoin(char *from, char *chname)
           if (!m->user && !m->userip[0] && doresolv(chan)) {
             if (is_dotted_ip(host)) {
               strlcpy(m->userip, uhost, sizeof(m->userip));
+              simple_snprintf(m->fromip, sizeof(m->fromip), "%s!%s", m->nick, m->userip);
               if (channel_rbl(chan))
                 resolve_to_rbl(chan, m->userip);
             } else
@@ -2636,8 +2639,10 @@ static int gotjoin(char *from, char *chname)
 	m->joined = m->last = now;
 	strlcpy(m->userhost, uhost, sizeof(m->userhost));
         simple_snprintf(m->from, sizeof(m->from), "%s!%s", m->nick, m->userhost);
-        if (is_dotted_ip(host))
+        if (is_dotted_ip(host)) {
           strlcpy(m->userip, uhost, sizeof(m->userip));
+          simple_snprintf(m->fromip, sizeof(m->fromip), "%s!%s", m->nick, m->userip);
+        }
         m->user = get_user_by_host(from);
         m->tried_getuser = 1;