diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/commands/os_defcon.cpp | 4 | ||||
| -rw-r--r-- | modules/commands/os_list.cpp | 2 | ||||
| -rw-r--r-- | modules/commands/os_session.cpp | 14 | ||||
| -rw-r--r-- | modules/extra/m_sql_authentication.cpp | 2 | ||||
| -rw-r--r-- | modules/extra/m_sql_oper.cpp | 2 | ||||
| -rw-r--r-- | modules/extra/stats/irc2sql/irc2sql.cpp | 2 | ||||
| -rw-r--r-- | modules/m_dnsbl.cpp | 19 | ||||
| -rw-r--r-- | modules/m_proxyscan.cpp | 6 | ||||
| -rw-r--r-- | modules/m_xmlrpc_main.cpp | 3 | ||||
| -rw-r--r-- | modules/pseudoclients/operserv.cpp | 9 |
10 files changed, 28 insertions, 35 deletions
diff --git a/modules/commands/os_defcon.cpp b/modules/commands/os_defcon.cpp index afd5dc7d6..c5074fd44 100644 --- a/modules/commands/os_defcon.cpp +++ b/modules/commands/os_defcon.cpp @@ -502,7 +502,7 @@ class OSDefcon : public Module if (DConfig.sessionlimit <= 0 || !session_service) return; - Session *session = session_service->FindSession(u->ip); + Session *session = session_service->FindSession(u->ip.addr()); Exception *exception = session_service->FindException(u); if (DConfig.Check(DEFCON_REDUCE_SESSION) && !exception) @@ -511,7 +511,7 @@ class OSDefcon : public Module { if (!DConfig.sle_reason.empty()) { - Anope::string message = DConfig.sle_reason.replace_all_cs("%IP%", u->ip); + Anope::string message = DConfig.sle_reason.replace_all_cs("%IP%", u->ip.addr()); u->SendMessage(OperServ, message); } if (!DConfig.sle_detailsloc.empty()) diff --git a/modules/commands/os_list.cpp b/modules/commands/os_list.cpp index 7bafd8b4d..b0c5fb339 100644 --- a/modules/commands/os_list.cpp +++ b/modules/commands/os_list.cpp @@ -180,7 +180,7 @@ class CommandOSUserList : public Command if (!pattern.empty()) { - Anope::string mask = u2->nick + "!" + u2->GetIdent() + "@" + u2->GetDisplayedHost(), mask2 = u2->nick + "!" + u2->GetIdent() + "@" + u2->host, mask3 = u2->nick + "!" + u2->GetIdent() + "@" + (!u2->ip.empty() ? u2->ip : u2->host); + Anope::string mask = u2->nick + "!" + u2->GetIdent() + "@" + u2->GetDisplayedHost(), mask2 = u2->nick + "!" + u2->GetIdent() + "@" + u2->host, mask3 = u2->nick + "!" + u2->GetIdent() + "@" + u2->ip.addr(); if (!Anope::Match(mask, pattern) && !Anope::Match(mask2, pattern) && !Anope::Match(mask3, pattern)) continue; if (!modes.empty()) diff --git a/modules/commands/os_session.cpp b/modules/commands/os_session.cpp index edf9458f8..40412494e 100644 --- a/modules/commands/os_session.cpp +++ b/modules/commands/os_session.cpp @@ -64,10 +64,10 @@ class MySessionService : public SessionService for (std::vector<Exception *>::const_iterator it = this->Exceptions->begin(), it_end = this->Exceptions->end(); it != it_end; ++it) { Exception *e = *it; - if (Anope::Match(u->host, e->mask) || Anope::Match(u->ip, e->mask)) + if (Anope::Match(u->host, e->mask) || Anope::Match(u->ip.addr(), e->mask)) return e; - if (cidr(e->mask).match(sockaddrs(u->ip))) + if (cidr(e->mask).match(u->ip)) return e; } return NULL; @@ -109,9 +109,9 @@ class MySessionService : public SessionService return NULL; } - SessionMap::iterator FindSessionIterator(const Anope::string &ip) + SessionMap::iterator FindSessionIterator(const sockaddrs &ip) { - cidr c(ip, ip.find(':') != Anope::string::npos ? ipv6_cidr : ipv4_cidr); + cidr c(ip, ip.ipv6() ? ipv6_cidr : ipv4_cidr); if (!c.valid()) return this->Sessions.end(); return this->Sessions.find(c); @@ -668,7 +668,7 @@ class OSSession : public Module if (u->Quitting() || !session_limit || exempt || !u->server || u->server->IsULined()) return; - cidr u_ip(u->ip, u->ip.find(':') != Anope::string::npos ? ipv6_cidr : ipv4_cidr); + cidr u_ip(u->ip, u->ip.ipv6() ? ipv6_cidr : ipv4_cidr); if (!u_ip.valid()) return; @@ -705,7 +705,7 @@ class OSSession : public Module { if (!sle_reason.empty()) { - Anope::string message = sle_reason.replace_all_cs("%IP%", u->ip); + Anope::string message = sle_reason.replace_all_cs("%IP%", u->ip.addr()); u->SendMessage(OperServ, message); } if (!sle_detailsloc.empty()) @@ -729,7 +729,7 @@ class OSSession : public Module } else { - session = new Session(u->ip, u->ip.find(':') != Anope::string::npos ? ipv6_cidr : ipv4_cidr); + session = new Session(u->ip, u->ip.ipv6() ? ipv6_cidr : ipv4_cidr); } } diff --git a/modules/extra/m_sql_authentication.cpp b/modules/extra/m_sql_authentication.cpp index 0710a6e20..c718f3c2b 100644 --- a/modules/extra/m_sql_authentication.cpp +++ b/modules/extra/m_sql_authentication.cpp @@ -122,7 +122,7 @@ class ModuleSQLAuthentication : public Module if (u) { q.SetValue("n", u->nick); - q.SetValue("i", u->ip); + q.SetValue("i", u->ip.addr()); } else { diff --git a/modules/extra/m_sql_oper.cpp b/modules/extra/m_sql_oper.cpp index 68a6d9084..3203021bc 100644 --- a/modules/extra/m_sql_oper.cpp +++ b/modules/extra/m_sql_oper.cpp @@ -135,7 +135,7 @@ class ModuleSQLOper : public Module SQL::Query q(this->query); q.SetValue("a", u->Account()->display); - q.SetValue("i", u->ip); + q.SetValue("i", u->ip.addr()); this->SQL->Run(new SQLOperResult(this, u), q); diff --git a/modules/extra/stats/irc2sql/irc2sql.cpp b/modules/extra/stats/irc2sql/irc2sql.cpp index d20e1a420..fd0ca5890 100644 --- a/modules/extra/stats/irc2sql/irc2sql.cpp +++ b/modules/extra/stats/irc2sql/irc2sql.cpp @@ -95,7 +95,7 @@ void IRC2SQL::OnUserConnect(User *u, bool &exempt) query.SetValue("vhost", u->vhost); query.SetValue("chost", u->chost); query.SetValue("realname", u->realname); - query.SetValue("ip", u->ip); + query.SetValue("ip", u->ip.addr()); query.SetValue("ident", u->GetIdent()); query.SetValue("vident", u->GetVIdent()); query.SetValue("secure", u->HasMode("SSL") || u->HasExt("ssl") ? "Y" : "N"); diff --git a/modules/m_dnsbl.cpp b/modules/m_dnsbl.cpp index b19a66ea4..1c10b09d5 100644 --- a/modules/m_dnsbl.cpp +++ b/modules/m_dnsbl.cpp @@ -54,18 +54,18 @@ class DNSBLResolver : public Request record_reason = this->blacklist.replies[result]; } - Anope::string reason = this->blacklist.reason; + Anope::string reason = this->blacklist.reason, addr = user->ip.addr(); reason = reason.replace_all_cs("%n", user->nick); reason = reason.replace_all_cs("%u", user->GetIdent()); reason = reason.replace_all_cs("%g", user->realname); reason = reason.replace_all_cs("%h", user->host); - reason = reason.replace_all_cs("%i", user->ip); + reason = reason.replace_all_cs("%i", addr); reason = reason.replace_all_cs("%r", record_reason); reason = reason.replace_all_cs("%N", Config->GetBlock("networkinfo")->Get<const Anope::string>("networkname")); BotInfo *OperServ = Config->GetClient("OperServ"); - Log(creator, "dnsbl", OperServ) << user->GetMask() << " (" << user->ip << ") appears in " << this->blacklist.name; - XLine *x = new XLine("*@" + user->ip, OperServ ? OperServ->nick : "m_dnsbl", Anope::CurTime + this->blacklist.bantime, reason, XLineManager::GenerateUID()); + Log(creator, "dnsbl", OperServ) << user->GetMask() << " (" << addr << ") appears in " << this->blacklist.name; + XLine *x = new XLine("*@" + addr, OperServ ? OperServ->nick : "m_dnsbl", Anope::CurTime + this->blacklist.bantime, reason, XLineManager::GenerateUID()); if (this->add_to_akill && akills) { akills->AddXLine(x); @@ -130,22 +130,21 @@ class ModuleDNSBL : public Module return; /* At this time we only support IPv4 */ - sockaddrs user_ip; - user_ip.pton(AF_INET, user->ip); - if (!user_ip.valid()) + if (!user->ip.valid() || user->ip.sa.sa_family != AF_INET) /* User doesn't have a valid IPv4 IP (ipv6/spoof/etc) */ return; - const unsigned long &ip = user_ip.sa4.sin_addr.s_addr; + const unsigned long &ip = user->ip.sa4.sin_addr.s_addr; unsigned long reverse_ip = (ip << 24) | ((ip & 0xFF00) << 8) | ((ip & 0xFF0000) >> 8) | (ip >> 24); - user_ip.sa4.sin_addr.s_addr = reverse_ip; + sockaddrs reverse = user->ip; + reverse.sa4.sin_addr.s_addr = reverse_ip; for (unsigned i = 0; i < this->blacklists.size(); ++i) { const Blacklist &b = this->blacklists[i]; - Anope::string dnsbl_host = user_ip.addr() + "." + b.name; + Anope::string dnsbl_host = reverse.addr() + "." + b.name; DNSBLResolver *res = NULL; try { diff --git a/modules/m_proxyscan.cpp b/modules/m_proxyscan.cpp index 0fe4ade27..6df764166 100644 --- a/modules/m_proxyscan.cpp +++ b/modules/m_proxyscan.cpp @@ -334,9 +334,7 @@ class ModuleProxyScan : public Module return; /* At this time we only support IPv4 */ - sockaddrs user_ip; - user_ip.pton(AF_INET, user->ip); - if (!user_ip.valid()) + if (!user->ip.valid() || user->ip.sa.sa_family != AF_INET) /* User doesn't have a valid IPv4 IP (ipv6/spoof/etc) */ return; @@ -364,7 +362,7 @@ class ModuleProxyScan : public Module con = new SOCKS5ProxyConnect(p, p.ports[k]); else continue; - con->Connect(user->ip, p.ports[k]); + con->Connect(user->ip.addr(), p.ports[k]); } catch (const SocketException &ex) { diff --git a/modules/m_xmlrpc_main.cpp b/modules/m_xmlrpc_main.cpp index 17dd8b96f..a66503f87 100644 --- a/modules/m_xmlrpc_main.cpp +++ b/modules/m_xmlrpc_main.cpp @@ -212,8 +212,7 @@ class MyXMLRPCEvent : public XMLRPCEvent request.reply("vhost", iface->Sanitize(u->vhost)); if (!u->chost.empty()) request.reply("chost", iface->Sanitize(u->chost)); - if (!u->ip.empty()) - request.reply("ip", u->ip); + request.reply("ip", u->ip.addr()); request.reply("timestamp", stringify(u->timestamp)); request.reply("signon", stringify(u->signon)); if (u->Account()) diff --git a/modules/pseudoclients/operserv.cpp b/modules/pseudoclients/operserv.cpp index 1a07bb009..67eaecd45 100644 --- a/modules/pseudoclients/operserv.cpp +++ b/modules/pseudoclients/operserv.cpp @@ -53,13 +53,10 @@ class SGLineManager : public XLineManager if (!x->GetReal().empty() && !Anope::Match(u->realname, x->GetReal())) return false; - if (x->GetHost().find('/') != Anope::string::npos) - { - if (cidr(x->GetHost()).match(sockaddrs(u->ip))) - return true; - } + if (x->c && x->c->match(u->ip)) + return true; - if (x->GetHost().empty() || Anope::Match(u->host, x->GetHost()) || Anope::Match(u->ip, x->GetHost())) + if (x->GetHost().empty() || Anope::Match(u->host, x->GetHost()) || Anope::Match(u->ip.addr(), x->GetHost())) return true; return false; |
