]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - extensions/ip_cloaking.c
Automated merge with ssh://hg.atheme.org//hg/charybdis
[irc/rqf/shadowircd.git] / extensions / ip_cloaking.c
index 1b5af63cefcdc6eb4b39d02ec554879e7fba4568..e80a19a451deea7918a9e6051f8ab86e7db3ec69 100644 (file)
@@ -59,9 +59,6 @@ distribute_hostchange(struct Client *client)
        sendto_server(NULL, NULL,
                CAP_TS6, CAP_EUID, ":%s ENCAP * CHGHOST %s :%s",
                use_id(&me), use_id(client), client->host);
-       sendto_server(NULL, NULL,
-               NOCAPS, CAP_TS6, ":%s ENCAP * CHGHOST %s :%s",
-               me.name, client->name, client->host);
        if (irccmp(client->host, client->orighost))
                SetDynSpoof(client);
        else
@@ -103,10 +100,17 @@ do_host_cloak_ip(const char *inbuf, char *outbuf)
        char *tptr;
        unsigned int accum = get_string_weighted_entropy(inbuf);
        char buf[HOSTLEN];
+       int ipv6 = 0;
 
        strncpy(buf, inbuf, HOSTLEN);
        tptr = strrchr(buf, '.');
 
+       if (tptr == NULL)
+       {
+               tptr = strrchr(buf, ':');
+               ipv6 = 1;
+       }
+
        if (tptr == NULL)
        {
                strncpy(outbuf, inbuf, HOSTLEN);
@@ -115,7 +119,14 @@ do_host_cloak_ip(const char *inbuf, char *outbuf)
 
        *tptr++ = '\0';
 
-       snprintf(outbuf, HOSTLEN, "%s.%x", buf, accum);
+       if(ipv6)
+       {
+           snprintf(outbuf, HOSTLEN, "%s:%x", buf, accum);
+       }
+       else
+       {
+           snprintf(outbuf, HOSTLEN, "%s.%x", buf, accum);
+       }
 }
 
 static void
@@ -175,7 +186,7 @@ check_umode_change(void *vdata)
                }
                if (strcmp(source_p->host, source_p->localClient->mangledhost))
                {
-                       strlcpy(source_p->host, source_p->localClient->mangledhost, HOSTLEN);
+                       rb_strlcpy(source_p->host, source_p->localClient->mangledhost, HOSTLEN);
                        distribute_hostchange(source_p);
                }
                else /* not really nice, but we need to send this numeric here */
@@ -187,7 +198,7 @@ check_umode_change(void *vdata)
                if (source_p->localClient->mangledhost != NULL &&
                                !strcmp(source_p->host, source_p->localClient->mangledhost))
                {
-                       strlcpy(source_p->host, source_p->orighost, HOSTLEN);
+                       rb_strlcpy(source_p->host, source_p->orighost, HOSTLEN);
                        distribute_hostchange(source_p);
                }
        }
@@ -212,7 +223,7 @@ check_new_user(void *vdata)
                source_p->umodes &= ~user_modes['h'];
        if (source_p->umodes & user_modes['h'])
        {
-               strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host));
+               rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host));
                if (irccmp(source_p->host, source_p->orighost))
                        SetDynSpoof(source_p);
        }