diff options
author | Adam <Adam@anope.org> | 2013-09-08 21:53:06 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-09-08 21:53:06 -0400 |
commit | 339f41aebcad011d53da63b0d681a8353226a868 (patch) | |
tree | b4abd90375d05bc77322640236c149ec380b1866 /modules | |
parent | 55e4ef9d3a5dc7e3b616e1369aac01ea1c76780d (diff) |
Fix allowing duplicate entries on the snline list
Have proto mods recognize cidr ranges as zlineable IPs
Remove operserv/global from global.conf because its dumb
Fix example config ~botserv/set example to work as expected
Diffstat (limited to 'modules')
-rw-r--r-- | modules/commands/os_sxline.cpp | 18 | ||||
-rw-r--r-- | modules/protocol/bahamut.cpp | 4 | ||||
-rw-r--r-- | modules/protocol/inspircd12.cpp | 15 | ||||
-rw-r--r-- | modules/protocol/unreal.cpp | 4 | ||||
-rw-r--r-- | modules/pseudoclients/operserv.cpp | 2 |
5 files changed, 27 insertions, 16 deletions
diff --git a/modules/commands/os_sxline.cpp b/modules/commands/os_sxline.cpp index 7cd3c12ca..62f81d337 100644 --- a/modules/commands/os_sxline.cpp +++ b/modules/commands/os_sxline.cpp @@ -333,6 +333,13 @@ class CommandOSSNLine : public CommandOSSXLineBase } } + /* Clean up the last character of the mask if it is a space + * See bug #761 + */ + unsigned masklen = mask.length(); + if (mask[masklen - 1] == ' ') + mask.erase(masklen - 1); + if (!this->xlm()->CanAdd(source, mask, expires, reason)) return; else if (mask.find_first_not_of("/.*?") == Anope::string::npos) @@ -341,13 +348,6 @@ class CommandOSSNLine : public CommandOSSXLineBase return; } - /* Clean up the last character of the mask if it is a space - * See bug #761 - */ - unsigned masklen = mask.length(); - if (mask[masklen - 1] == ' ') - mask.erase(masklen - 1); - if (Config->GetModule("operserv")->Get<bool>("addakiller", "yes") && !source.GetNick().empty()) reason = "[" + source.GetNick() + "] " + reason; @@ -391,7 +391,7 @@ class CommandOSSNLine : public CommandOSSXLineBase user->Kill(Me->GetName(), rreason); } - this->xlm()->Send(source.GetUser(), x); + this->xlm()->Send(NULL, x); } source.Reply(_("\002%s\002 added to the %s list."), mask.c_str(), source.command.c_str()); @@ -623,7 +623,7 @@ class CommandOSSQLine : public CommandOSSXLineBase } } - this->xlm()->Send(source.GetUser(), x); + this->xlm()->Send(NULL, x); } source.Reply(_("\002%s\002 added to the SQLINE list."), mask.c_str()); diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp index 633b6cab3..629cb443d 100644 --- a/modules/protocol/bahamut.cpp +++ b/modules/protocol/bahamut.cpp @@ -137,7 +137,7 @@ class BahamutIRCdProto : public IRCDProto /* ZLine if we can instead */ if (x->GetUser() == "*") { - sockaddrs a(x->GetHost()); + cidr a(x->GetHost()); if (a.valid()) { IRCD->SendSZLineDel(x); @@ -212,7 +212,7 @@ class BahamutIRCdProto : public IRCDProto /* ZLine if we can instead */ if (x->GetUser() == "*") { - sockaddrs a(x->GetHost()); + cidr a(x->GetHost()); if (a.valid()) { IRCD->SendSZLine(u, x); diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index 023325c02..5e58a7704 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -118,7 +118,18 @@ class InspIRCd12Proto : public IRCDProto else if (x->IsRegex() || x->HasNickOrReal()) return; - SendDelLine("G", x->mask); + /* ZLine if we can instead */ + if (x->GetUser() == "*") + { + cidr addr(x->GetHost()); + if (addr.valid()) + { + IRCD->SendSZLineDel(x); + return; + } + } + + SendDelLine("G", x->GetUser() + "@" + x->GetHost()); } void SendTopic(const MessageSource &source, Channel *c) anope_override @@ -192,7 +203,7 @@ class InspIRCd12Proto : public IRCDProto /* ZLine if we can instead */ if (x->GetUser() == "*") { - sockaddrs addr(x->GetHost()); + cidr addr(x->GetHost()); if (addr.valid()) { IRCD->SendSZLine(u, x); diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index 17dca20a6..67462432d 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -47,7 +47,7 @@ class UnrealIRCdProto : public IRCDProto /* ZLine if we can instead */ if (x->GetUser() == "*") { - sockaddrs a(x->GetHost()); + cidr a(x->GetHost()); if (a.valid()) { IRCD->SendSZLineDel(x); @@ -111,7 +111,7 @@ class UnrealIRCdProto : public IRCDProto /* ZLine if we can instead */ if (x->GetUser() == "*") { - sockaddrs a(x->GetHost()); + cidr a(x->GetHost()); if (a.valid()) { IRCD->SendSZLine(u, x); diff --git a/modules/pseudoclients/operserv.cpp b/modules/pseudoclients/operserv.cpp index e10a8f39b..59ef7a067 100644 --- a/modules/pseudoclients/operserv.cpp +++ b/modules/pseudoclients/operserv.cpp @@ -134,7 +134,7 @@ class SNLineManager : public XLineManager { if (IRCD->CanSNLine) IRCD->SendSGLine(u, x); - else + else if (u) u->Kill(Config->GetClient("OperServ"), "SNLined: " + x->reason); } |