X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/c0e8f348f8f0a7066939ebd2160ec0088c3ec044..9b1b4a972b71cf2f9ecf01d0d082a8ac1bd9caf4:/extensions/m_webirc.c?ds=sidebyside diff --git a/extensions/m_webirc.c b/extensions/m_webirc.c index 1b42029..36a8389 100644 --- a/extensions/m_webirc.c +++ b/extensions/m_webirc.c @@ -87,12 +87,13 @@ mr_webirc(struct Client *client_p, struct Client *source_p, int parc, const char } aconf = find_address_conf(client_p->host, client_p->sockhost, + IsGotId(client_p) ? client_p->username : "webirc", IsGotId(client_p) ? client_p->username : "webirc", (struct sockaddr *) &client_p->localClient->ip, client_p->localClient->ip.ss_family); if (aconf == NULL || !(aconf->status & CONF_CLIENT)) return 0; - if (!IsConfDoSpoofIp(aconf) || irccmp(aconf->info.name, "webirc.")) + if (!IsConfDoSpoofIp(aconf) || irccmp(aconf->name, "webirc.")) { /* XXX */ sendto_one(source_p, "NOTICE * :Not a CGI:IRC auth block"); @@ -117,16 +118,20 @@ mr_webirc(struct Client *client_p, struct Client *source_p, int parc, const char return 0; } + strlcpy(source_p->sockhost, parv[4], sizeof(source_p->sockhost)); + if(strlen(parv[3]) <= HOSTLEN) strlcpy(source_p->host, parv[3], sizeof(source_p->host)); else strlcpy(source_p->host, source_p->sockhost, sizeof(source_p->host)); - - rb_inet_pton_sock(parv[4], (struct sockaddr *)&source_p->localClient->ip); + + del_unknown_ip(source_p); + inetpton_sock(parv[4], (struct sockaddr *)&source_p->localClient->ip); /* Check dlines now, k/glines will be checked on registration */ - if((aconf = find_dline((struct sockaddr *)&source_p->localClient->ip))) + if((aconf = find_dline((struct sockaddr *)&source_p->localClient->ip, + source_p->localClient->ip.ss_family))) { if(!(aconf->status & CONF_EXEMPTDLINE)) {