X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/550e851c5eee26dad124e3caa6e60b07ea575d5a..8f0c3422e75189b7f39a7555ded278ab6027707b:/extensions/extb_hostmask.c diff --git a/extensions/extb_hostmask.c b/extensions/extb_hostmask.c index fcdee731..241ac1bb 100644 --- a/extensions/extb_hostmask.c +++ b/extensions/extb_hostmask.c @@ -7,7 +7,6 @@ #include "modules.h" #include "client.h" #include "ircd.h" -#include "ipv4_from_ipv6.h" static const char extb_desc[] = "Hostmask ($m) extban type"; @@ -33,38 +32,7 @@ _moddeinit(void) static int eb_hostmask(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type) { - char src_host[NICKLEN + USERLEN + HOSTLEN + 6]; - char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6]; - char src_althost[NICKLEN + USERLEN + HOSTLEN + 6]; - char src_ip4host[NICKLEN + USERLEN + HOSTLEN + 6]; - struct sockaddr_in ip4; - char *s = src_host, *s2 = src_iphost, *s3 = NULL, *s4 = NULL; - - sprintf(src_host, "%s!%s@%s", client_p->name, client_p->username, client_p->host); - sprintf(src_iphost, "%s!%s@%s", client_p->name, client_p->username, client_p->sockhost); - - /* handle hostmangling if necessary */ - if (client_p->localClient->mangledhost != NULL) - { - if (!strcmp(client_p->host, client_p->localClient->mangledhost)) - sprintf(src_althost, "%s!%s@%s", client_p->name, client_p->username, client_p->orighost); - else if (!IsDynSpoof(client_p)) - sprintf(src_althost, "%s!%s@%s", client_p->name, client_p->username, client_p->localClient->mangledhost); - - s3 = src_althost; - } - -#ifdef RB_IPV6 - /* handle Teredo if necessary */ - if (client_p->localClient->ip.ss_family == AF_INET6 && ipv4_from_ipv6((const struct sockaddr_in6 *) &client_p->localClient->ip, &ip4)) - { - sprintf(src_ip4host, "%s!%s@", client_p->name, client_p->username); - s4 = src_ip4host + strlen(src_ip4host); - rb_inet_ntop_sock((struct sockaddr *)&ip4, - s4, src_ip4host + sizeof src_ip4host - s4); - s4 = src_ip4host; - } -#endif - - return match(banstr, s) || match(banstr, s2) || (s3 != NULL && match(banstr, s3)) || (s4 != NULL && match(banstr, s4)) ? EXTBAN_MATCH : EXTBAN_NOMATCH; + if (banstr == NULL) + return EXTBAN_INVALID; + return client_matches_mask(client_p, banstr) ? EXTBAN_MATCH : EXTBAN_NOMATCH; }