diff --git a/doc/example.conf b/doc/example.conf index 1066bec..61ba5fb 100755 --- a/doc/example.conf +++ b/doc/example.conf @@ -30,15 +30,6 @@ #loadmodule "extensions/sno_globalkline.so"; #loadmodule "extensions/sno_globaloper.so"; #loadmodule "extensions/sno_whois.so"; - -/* - * IP cloaking extensions: use ip_cloaking_4.0 - * if you're linking 3.2 and later, otherwise use - * ip_cloaking.so, for compatibility with older 3.x - * releases. - */ - -#loadmodule "extensions/ip_cloaking_4.0.so"; #loadmodule "extensions/ip_cloaking.so"; serverinfo { @@ -431,13 +422,9 @@ general { /* * default_umodes: umodes to enable on connect. - * If you have enabled the new ip_cloaking_4.0 module, and you want + * If you have enabled the new ip_cloaking module, and you want * to make use of it, add +x to this option, i.e.: * default_umodes = "+ix"; - * - * If you have enabled the old ip_cloaking module, and you want - * to make use of it, add +h to this option, i.e.: - * default_umodes = "+ih"; */ default_umodes = "+i"; diff --git a/doc/reference.conf b/doc/reference.conf index 47ba7ff..eea16c2 100755 --- a/doc/reference.conf +++ b/doc/reference.conf @@ -60,8 +60,7 @@ * Server bans (+b $s:mask) -- extb_server.so * SSL bans (+b $z) -- extb_ssl.so * HURT system -- hurt.so - * New host mangling (umode +x) -- ip_cloaking_4.0.so - * Old host mangling (umode +h) -- ip_cloaking.so + * New host mangling (umode +x) -- ip_cloaking.so * Find channel forwards -- m_findforwards.so * /identify support -- m_identify.so * Opers cannot be invisible (umode +i) -- no_oper_invis.so @@ -86,7 +85,6 @@ #loadmodule "extensions/extb_server.so"; #loadmodule "extensions/extb_ssl.so"; #loadmodule "extensions/hurt.so"; -#loadmodule "extensions/ip_cloaking_4.0.so"; #loadmodule "extensions/ip_cloaking.so"; #loadmodule "extensions/m_findforwards.so"; #loadmodule "extensions/m_identify.so"; @@ -909,7 +907,7 @@ general { /* default umodes: umodes to set upon connection * If you have enabled the ip_cloaking extension, and you wish for - * incoming clients to be set +h or +x upon connection, add +h or +x to the umode + * incoming clients to be set +x upon connection, add +x to the umode * string below. */ default_umodes = "+i"; diff --git a/extensions/Makefile.in b/extensions/Makefile.in index b041b2d..1c234eb 100644 --- a/extensions/Makefile.in +++ b/extensions/Makefile.in @@ -46,9 +46,6 @@ SRCS = \ force_user_invis.c \ hurt.c \ ip_cloaking.c \ - ip_cloaking_old.c \ - ip_cloaking_3.0.c \ - ip_cloaking_4.0.c \ sno_farconnect.c \ sno_globalkline.c \ sno_globaloper.c \ diff --git a/extensions/ip_cloaking.c b/extensions/ip_cloaking.c index 035913e..150a719 100644 --- a/extensions/ip_cloaking.c +++ b/extensions/ip_cloaking.c @@ -19,7 +19,7 @@ static int _modinit(void) { /* add the usermode to the available slot */ - user_modes['h'] = find_umode_slot(); + user_modes['x'] = find_umode_slot(); construct_umodebuf(); return 0; @@ -29,7 +29,7 @@ static void _moddeinit(void) { /* disable the umode and remove it from the available list */ - user_modes['h'] = 0; + user_modes['x'] = 0; construct_umodebuf(); } @@ -165,14 +165,14 @@ check_umode_change(void *vdata) return; /* didn't change +h umode, we don't need to do anything */ - if (!((data->oldumodes ^ source_p->umodes) & user_modes['h'])) + if (!((data->oldumodes ^ source_p->umodes) & user_modes['x'])) return; - if (source_p->umodes & user_modes['h']) + if (source_p->umodes & user_modes['x']) { if (IsIPSpoof(source_p) || source_p->localClient->mangledhost == NULL || (IsDynSpoof(source_p) && strcmp(source_p->host, source_p->localClient->mangledhost))) { - source_p->umodes &= ~user_modes['h']; + source_p->umodes &= ~user_modes['x']; return; } if (strcmp(source_p->host, source_p->localClient->mangledhost)) @@ -184,7 +184,7 @@ check_umode_change(void *vdata) sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host", source_p->host); } - else if (!(source_p->umodes & user_modes['h'])) + else if (!(source_p->umodes & user_modes['x'])) { if (source_p->localClient->mangledhost != NULL && !strcmp(source_p->host, source_p->localClient->mangledhost)) @@ -202,7 +202,7 @@ check_new_user(void *vdata) if (IsIPSpoof(source_p)) { - source_p->umodes &= ~user_modes['h']; + source_p->umodes &= ~user_modes['x']; return; } source_p->localClient->mangledhost = rb_malloc(HOSTLEN + 1); @@ -211,8 +211,8 @@ check_new_user(void *vdata) else do_host_cloak_host(source_p->orighost, source_p->localClient->mangledhost); if (IsDynSpoof(source_p)) - source_p->umodes &= ~user_modes['h']; - if (source_p->umodes & user_modes['h']) + source_p->umodes &= ~user_modes['x']; + if (source_p->umodes & user_modes['x']) { rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host)); if (irccmp(source_p->host, source_p->orighost)) diff --git a/extensions/ip_cloaking_3.0.c b/extensions/ip_cloaking_3.0.c deleted file mode 100644 index 1939395..0000000 --- a/extensions/ip_cloaking_3.0.c +++ /dev/null @@ -1,230 +0,0 @@ -/* $Id: ip_cloaking.c 3526 2007-07-06 07:56:14Z nenolod $ */ - -#include "stdinc.h" -#include "modules.h" -#include "hook.h" -#include "client.h" -#include "ircd.h" -#include "send.h" -#include "s_conf.h" -#include "s_user.h" -#include "s_serv.h" -#include "numeric.h" - -/* if you're modifying this module, you'll probably to change this */ -#define KEY 0x13748cfa - -static int -_modinit(void) -{ - /* add the usermode to the available slot */ - user_modes['h'] = find_umode_slot(); - construct_umodebuf(); - - return 0; -} - -static void -_moddeinit(void) -{ - /* disable the umode and remove it from the available list */ - user_modes['h'] = 0; - construct_umodebuf(); -} - -static void check_umode_change(void *data); -static void check_new_user(void *data); -mapi_hfn_list_av1 ip_cloaking_hfnlist[] = { - { "umode_changed", (hookfn) check_umode_change }, - { "new_local_user", (hookfn) check_new_user }, - { NULL, NULL } -}; - -DECLARE_MODULE_AV1(ip_cloaking, _modinit, _moddeinit, NULL, NULL, - ip_cloaking_hfnlist, "$Revision: 3526 $"); - -static void -distribute_hostchange(struct Client *client) -{ - if (irccmp(client->host, client->orighost)) - sendto_one_numeric(client, RPL_HOSTHIDDEN, "%s :is now your hidden host", - client->host); - else - sendto_one_numeric(client, RPL_HOSTHIDDEN, "%s :hostname reset", - client->host); - - sendto_server(NULL, NULL, - CAP_EUID | CAP_TS6, NOCAPS, ":%s CHGHOST %s :%s", - use_id(&me), use_id(client), client->host); - sendto_server(NULL, NULL, - CAP_TS6, CAP_EUID, ":%s ENCAP * CHGHOST %s :%s", - use_id(&me), use_id(client), client->host); - if (irccmp(client->host, client->orighost)) - SetDynSpoof(client); - else - ClearDynSpoof(client); -} - -#define Nval 0x8c3a48ac -#define HOSTLEN 63 -#define INITDATA "98fwqefnoiqefv03f423t34gbv3vb89tg432t3b8" /* change this */ - -static inline unsigned int -get_string_entropy(const char *inbuf) -{ - unsigned int accum = 1; - - while(*inbuf != '\0') - accum += *inbuf++; - - return accum; -} - -/* calls get_string_entropy() and toasts it against INITDATA */ -static inline unsigned int -get_string_weighted_entropy(const char *inbuf) -{ - static int base_entropy = 0; - unsigned int accum = get_string_entropy(inbuf); - - /* initialize the algorithm if it is not yet ready */ - if (base_entropy == 0) - base_entropy = get_string_entropy(INITDATA); - - return (Nval * accum) ^ base_entropy; -} - -static void -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); - return; - } - - *tptr++ = '\0'; - - if(ipv6) - { - rb_snprintf(outbuf, HOSTLEN, "%s:%x", buf, accum); - } - else - { - rb_snprintf(outbuf, HOSTLEN, "%s.%x", buf, accum); - } -} - -static void -do_host_cloak_host(const char *inbuf, char *outbuf) -{ - char b26_alphabet[] = "abcdefghijklmnopqrstuvwxyz"; - char *tptr; - unsigned int accum = get_string_weighted_entropy(inbuf); - - strncpy(outbuf, inbuf, HOSTLEN); - - /* pass 1: scramble first section of hostname using base26 - * alphabet toasted against the weighted entropy of the string. - * - * numbers are not changed at this time, only letters. - */ - for (tptr = outbuf; *tptr != '\0'; tptr++) - { - if (*tptr == '.') - break; - - if (isdigit(*tptr) || *tptr == '-') - continue; - - *tptr = b26_alphabet[(*tptr * accum) % 26]; - } - - /* pass 2: scramble each number in the address */ - for (tptr = outbuf; *tptr != '\0'; tptr++) - { - if (isdigit(*tptr)) - { - *tptr = 48 + ((*tptr * accum) % 10); - } - } -} - -static void -check_umode_change(void *vdata) -{ - hook_data_umode_changed *data = (hook_data_umode_changed *)vdata; - struct Client *source_p = data->client; - - if (!MyClient(source_p)) - return; - - /* didn't change +h umode, we don't need to do anything */ - if (!((data->oldumodes ^ source_p->umodes) & user_modes['h'])) - return; - - if (source_p->umodes & user_modes['h']) - { - if (IsIPSpoof(source_p) || source_p->localClient->mangledhost == NULL || (IsDynSpoof(source_p) && strcmp(source_p->host, source_p->localClient->mangledhost))) - { - source_p->umodes &= ~user_modes['h']; - return; - } - if (strcmp(source_p->host, source_p->localClient->mangledhost)) - { - 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 */ - sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host", - source_p->host); - } - else if (!(source_p->umodes & user_modes['h'])) - { - if (source_p->localClient->mangledhost != NULL && - !strcmp(source_p->host, source_p->localClient->mangledhost)) - { - rb_strlcpy(source_p->host, source_p->orighost, HOSTLEN); - distribute_hostchange(source_p); - } - } -} - -static void -check_new_user(void *vdata) -{ - struct Client *source_p = (void *)vdata; - - if (IsIPSpoof(source_p)) - { - source_p->umodes &= ~user_modes['h']; - return; - } - source_p->localClient->mangledhost = rb_malloc(HOSTLEN); - if (!irccmp(source_p->orighost, source_p->sockhost)) - do_host_cloak_ip(source_p->orighost, source_p->localClient->mangledhost); - else - do_host_cloak_host(source_p->orighost, source_p->localClient->mangledhost); - if (IsDynSpoof(source_p)) - source_p->umodes &= ~user_modes['h']; - if (source_p->umodes & user_modes['h']) - { - rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host)); - if (irccmp(source_p->host, source_p->orighost)) - SetDynSpoof(source_p); - } -} diff --git a/extensions/ip_cloaking_4.0.c b/extensions/ip_cloaking_4.0.c deleted file mode 100644 index 150a719..0000000 --- a/extensions/ip_cloaking_4.0.c +++ /dev/null @@ -1,221 +0,0 @@ -/* $Id: ip_cloaking.c 3526 2007-07-06 07:56:14Z nenolod $ */ - -#include "stdinc.h" -#include "modules.h" -#include "hook.h" -#include "client.h" -#include "ircd.h" -#include "send.h" -#include "hash.h" -#include "s_conf.h" -#include "s_user.h" -#include "s_serv.h" -#include "numeric.h" - -/* if you're modifying this module, you'll probably to change this */ -#define KEY 0x13748cfa - -static int -_modinit(void) -{ - /* add the usermode to the available slot */ - user_modes['x'] = find_umode_slot(); - construct_umodebuf(); - - return 0; -} - -static void -_moddeinit(void) -{ - /* disable the umode and remove it from the available list */ - user_modes['x'] = 0; - construct_umodebuf(); -} - -static void check_umode_change(void *data); -static void check_new_user(void *data); -mapi_hfn_list_av1 ip_cloaking_hfnlist[] = { - { "umode_changed", (hookfn) check_umode_change }, - { "new_local_user", (hookfn) check_new_user }, - { NULL, NULL } -}; - -DECLARE_MODULE_AV1(ip_cloaking, _modinit, _moddeinit, NULL, NULL, - ip_cloaking_hfnlist, "$Revision: 3526 $"); - -static void -distribute_hostchange(struct Client *client) -{ - if (irccmp(client->host, client->orighost)) - sendto_one_numeric(client, RPL_HOSTHIDDEN, "%s :is now your hidden host", - client->host); - else - sendto_one_numeric(client, RPL_HOSTHIDDEN, "%s :hostname reset", - client->host); - - sendto_server(NULL, NULL, - CAP_EUID | CAP_TS6, NOCAPS, ":%s CHGHOST %s :%s", - use_id(&me), use_id(client), client->host); - sendto_server(NULL, NULL, - CAP_TS6, CAP_EUID, ":%s ENCAP * CHGHOST %s :%s", - use_id(&me), use_id(client), client->host); - if (irccmp(client->host, client->orighost)) - SetDynSpoof(client); - else - ClearDynSpoof(client); -} - -static void -do_host_cloak_ip(const char *inbuf, char *outbuf) -{ - /* None of the characters in this table can be valid in an IP */ - char chartable[] = "ghijklmnopqrstuvwxyz"; - char *tptr; - uint32_t accum = fnv_hash((const unsigned char*) inbuf, 32); - int sepcount = 0; - int totalcount = 0; - int ipv6 = 0; - - rb_strlcpy(outbuf, inbuf, HOSTLEN + 1); - - if (strchr(outbuf, ':')) - { - ipv6 = 1; - - /* Damn you IPv6... - * We count the number of colons so we can calculate how much - * of the host to cloak. This is because some hostmasks may not - * have as many octets as we'd like. - * - * We have to do this ahead of time because doing this during - * the actual cloaking would get ugly - */ - for (tptr = outbuf; *tptr != '\0'; tptr++) - if (*tptr == ':') - totalcount++; - } - else if (!strchr(outbuf, '.')) - return; - - for (tptr = outbuf; *tptr != '\0'; tptr++) - { - if (*tptr == ':' || *tptr == '.') - { - sepcount++; - continue; - } - - if (ipv6 && sepcount < totalcount / 2) - continue; - - if (!ipv6 && sepcount < 2) - continue; - - *tptr = chartable[(*tptr + accum) % 20]; - accum = (accum << 1) | (accum >> 31); - } -} - -static void -do_host_cloak_host(const char *inbuf, char *outbuf) -{ - char b26_alphabet[] = "abcdefghijklmnopqrstuvwxyz"; - char *tptr; - uint32_t accum = fnv_hash((const unsigned char*) inbuf, 32); - - rb_strlcpy(outbuf, inbuf, HOSTLEN + 1); - - /* pass 1: scramble first section of hostname using base26 - * alphabet toasted against the FNV hash of the string. - * - * numbers are not changed at this time, only letters. - */ - for (tptr = outbuf; *tptr != '\0'; tptr++) - { - if (*tptr == '.') - break; - - if (isdigit(*tptr) || *tptr == '-') - continue; - - *tptr = b26_alphabet[(*tptr + accum) % 26]; - - /* Rotate one bit to avoid all digits being turned odd or even */ - accum = (accum << 1) | (accum >> 31); - } - - /* pass 2: scramble each number in the address */ - for (tptr = outbuf; *tptr != '\0'; tptr++) - { - if (isdigit(*tptr)) - *tptr = '0' + (*tptr + accum) % 10; - - accum = (accum << 1) | (accum >> 31); - } -} - -static void -check_umode_change(void *vdata) -{ - hook_data_umode_changed *data = (hook_data_umode_changed *)vdata; - struct Client *source_p = data->client; - - if (!MyClient(source_p)) - return; - - /* didn't change +h umode, we don't need to do anything */ - if (!((data->oldumodes ^ source_p->umodes) & user_modes['x'])) - return; - - if (source_p->umodes & user_modes['x']) - { - if (IsIPSpoof(source_p) || source_p->localClient->mangledhost == NULL || (IsDynSpoof(source_p) && strcmp(source_p->host, source_p->localClient->mangledhost))) - { - source_p->umodes &= ~user_modes['x']; - return; - } - if (strcmp(source_p->host, source_p->localClient->mangledhost)) - { - rb_strlcpy(source_p->host, source_p->localClient->mangledhost, HOSTLEN + 1); - distribute_hostchange(source_p); - } - else /* not really nice, but we need to send this numeric here */ - sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host", - source_p->host); - } - else if (!(source_p->umodes & user_modes['x'])) - { - if (source_p->localClient->mangledhost != NULL && - !strcmp(source_p->host, source_p->localClient->mangledhost)) - { - rb_strlcpy(source_p->host, source_p->orighost, HOSTLEN + 1); - distribute_hostchange(source_p); - } - } -} - -static void -check_new_user(void *vdata) -{ - struct Client *source_p = (void *)vdata; - - if (IsIPSpoof(source_p)) - { - source_p->umodes &= ~user_modes['x']; - return; - } - source_p->localClient->mangledhost = rb_malloc(HOSTLEN + 1); - if (!irccmp(source_p->orighost, source_p->sockhost)) - do_host_cloak_ip(source_p->orighost, source_p->localClient->mangledhost); - else - do_host_cloak_host(source_p->orighost, source_p->localClient->mangledhost); - if (IsDynSpoof(source_p)) - source_p->umodes &= ~user_modes['x']; - if (source_p->umodes & user_modes['x']) - { - rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host)); - if (irccmp(source_p->host, source_p->orighost)) - SetDynSpoof(source_p); - } -} diff --git a/extensions/ip_cloaking_old.c b/extensions/ip_cloaking_old.c deleted file mode 100644 index 1640653..0000000 --- a/extensions/ip_cloaking_old.c +++ /dev/null @@ -1,172 +0,0 @@ -/* $Id: ip_cloaking_old.c 3522 2007-07-06 07:48:28Z nenolod $ */ - -#include "stdinc.h" -#include "modules.h" -#include "hook.h" -#include "client.h" -#include "ircd.h" -#include "send.h" -#include "s_conf.h" -#include "s_user.h" -#include "s_serv.h" -#include "numeric.h" - -/* if you're modifying this module, you'll probably to change this */ -#define KEY 0x13748cfa - -static int -_modinit(void) -{ - /* add the usermode to the available slot */ - user_modes['h'] = find_umode_slot(); - construct_umodebuf(); - - return 0; -} - -static void -_moddeinit(void) -{ - /* disable the umode and remove it from the available list */ - user_modes['h'] = 0; - construct_umodebuf(); -} - -static void check_umode_change(void *data); -static void check_new_user(void *data); -mapi_hfn_list_av1 ip_cloaking_hfnlist[] = { - { "umode_changed", (hookfn) check_umode_change }, - { "new_local_user", (hookfn) check_new_user }, - { NULL, NULL } -}; - -DECLARE_MODULE_AV1(ip_cloaking, _modinit, _moddeinit, NULL, NULL, - ip_cloaking_hfnlist, "$Revision: 3522 $"); - -static void -distribute_hostchange(struct Client *client) -{ - if (irccmp(client->host, client->orighost)) - sendto_one_numeric(client, RPL_HOSTHIDDEN, "%s :is now your hidden host", - client->host); - else - sendto_one_numeric(client, RPL_HOSTHIDDEN, "%s :hostname reset", - client->host); - - sendto_server(NULL, NULL, - CAP_EUID | CAP_TS6, NOCAPS, ":%s CHGHOST %s :%s", - use_id(&me), use_id(client), client->host); - sendto_server(NULL, NULL, - CAP_TS6, CAP_EUID, ":%s ENCAP * CHGHOST %s :%s", - use_id(&me), use_id(client), client->host); - if (irccmp(client->host, client->orighost)) - SetDynSpoof(client); - else - ClearDynSpoof(client); -} - -static void -do_host_cloak(const char *inbuf, char *outbuf, int ipmask) -{ - int cyc; - unsigned int hosthash = 1, hosthash2 = 1; - unsigned int maxcycle = strlen(inbuf); - int len1; - const char *rest, *next; - - for (cyc = 0; cyc < maxcycle - 2; cyc += 2) - hosthash *= (unsigned int) inbuf[cyc]; - - /* safety: decrement ourselves two steps back */ - for (cyc = maxcycle - 1; cyc >= 1; cyc -= 2) - hosthash2 *= (unsigned int) inbuf[cyc]; - - /* lets do some bitshifting -- this pretty much destroys the IP - * sequence, while still providing a checksum. exactly what - * we're shooting for. --nenolod - */ - hosthash += (hosthash2 / KEY); - hosthash2 += (hosthash / KEY); - - if (ipmask == 0) - { - rb_snprintf(outbuf, HOSTLEN, "%s-%X%X", - ServerInfo.network_name, hosthash2, hosthash); - len1 = strlen(outbuf); - rest = strchr(inbuf, '.'); - if (rest == NULL) - rest = "."; - /* try to avoid truncation -- jilles */ - while (len1 + strlen(rest) >= HOSTLEN && (next = strchr(rest + 1, '.')) != NULL) - rest = next; - rb_strlcat(outbuf, rest, HOSTLEN); - } - else - rb_snprintf(outbuf, HOSTLEN, "%X%X.%s", - hosthash2, hosthash, ServerInfo.network_name); -} - -static void -check_umode_change(void *vdata) -{ - hook_data_umode_changed *data = (hook_data_umode_changed *)vdata; - struct Client *source_p = data->client; - - if (!MyClient(source_p)) - return; - - /* didn't change +h umode, we don't need to do anything */ - if (!((data->oldumodes ^ source_p->umodes) & user_modes['h'])) - return; - - if (source_p->umodes & user_modes['h']) - { - if (IsIPSpoof(source_p) || source_p->localClient->mangledhost == NULL || (IsDynSpoof(source_p) && strcmp(source_p->host, source_p->localClient->mangledhost))) - { - source_p->umodes &= ~user_modes['h']; - return; - } - if (strcmp(source_p->host, source_p->localClient->mangledhost)) - { - 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 */ - sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host", - source_p->host); - } - else if (!(source_p->umodes & user_modes['h'])) - { - if (source_p->localClient->mangledhost != NULL && - !strcmp(source_p->host, source_p->localClient->mangledhost)) - { - rb_strlcpy(source_p->host, source_p->orighost, HOSTLEN); - distribute_hostchange(source_p); - } - } -} - -static void -check_new_user(void *vdata) -{ - struct Client *source_p = (void *)vdata; - - if (IsIPSpoof(source_p)) - { - source_p->umodes &= ~user_modes['h']; - return; - } - source_p->localClient->mangledhost = rb_malloc(HOSTLEN); - if (!irccmp(source_p->orighost, source_p->sockhost)) - do_host_cloak(source_p->orighost, source_p->localClient->mangledhost, 1); - else - do_host_cloak(source_p->orighost, source_p->localClient->mangledhost, 0); - if (IsDynSpoof(source_p)) - source_p->umodes &= ~user_modes['h']; - if (source_p->umodes & user_modes['h']) - { - rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host)); - if (irccmp(source_p->host, source_p->orighost)) - SetDynSpoof(source_p); - } -}