diff --git a/doc/extban.txt b/doc/extban.txt index 6f9c8460..79e71ca5 100644 --- a/doc/extban.txt +++ b/doc/extban.txt @@ -88,12 +88,5 @@ The function is called whenever a (local) client needs to be checked against a +bqeI entry of the given extban type, and whenever a local client tries to add such an entry. (Clients are allowed to add bans matching themselves.) -There is a convenience function which allows extbans to be stacked: -extern int match_child(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type); - -The arguments are as follows: -banstr: the text after the parent banstr (extb functions already get the mask this way) -client_p: the client to check; this is always a local client, which may be -on or off channel -chptr: the channel -mode_type: CHFL_BAN, CHFL_QUIET, CHFL_EXCEPTION or CHFL_INVEX +-- +$Id: extban.txt 1639 2006-06-04 23:26:47Z jilles $ diff --git a/include/channel.h b/include/channel.h index 57949379..2304aa4b 100644 --- a/include/channel.h +++ b/include/channel.h @@ -266,7 +266,6 @@ extern struct Ban * del_id(struct Channel *chptr, const char *banid, rb_dlink_li extern ExtbanFunc extban_table[256]; -extern int match_child(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type); extern int match_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type); extern int valid_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type); const char * get_extban_string(void); diff --git a/src/extban.c b/src/extban.c index 5dc02616..8890fcca 100644 --- a/src/extban.c +++ b/src/extban.c @@ -26,52 +26,9 @@ #include "channel.h" #include "client.h" #include "common.h" -#include "ipv4_from_ipv6.h" ExtbanFunc extban_table[256] = { NULL }; -int -match_child(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; - - if (*banstr == '$') - return match_extban(banstr, client_p, chptr, mode_type) ? EXTBAN_MATCH : EXTBAN_NOMATCH; - - rb_sprintf(src_host, "%s!%s@%s", client_p->name, client_p->username, client_p->host); - rb_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)) - rb_sprintf(src_althost, "%s!%s@%s", client_p->name, client_p->username, client_p->orighost); - else if (!IsDynSpoof(client_p)) - rb_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)) - { - rb_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; -} - int match_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type) {