diff options
-rw-r--r-- | data/example.conf | 8 | ||||
-rw-r--r-- | data/global.example.conf | 1 | ||||
-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 | ||||
-rw-r--r-- | src/xline.cpp | 4 |
8 files changed, 32 insertions, 24 deletions
diff --git a/data/example.conf b/data/example.conf index 9ed55fee2..59f253548 100644 --- a/data/example.conf +++ b/data/example.conf @@ -751,7 +751,7 @@ log * Note that modules may add their own values to these options. */ admin = "operserv/*" - override = "chanserv/* nickserv/* memoserv/set botserv/* ~botserv/set" + override = "chanserv/* nickserv/* memoserv/set ~botserv/set botserv/*" commands = "~operserv/* *" servers = "*" #channels = "~mode *" @@ -767,7 +767,7 @@ log log { target = "globops" - admin = "global/* operserv/global operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop" + admin = "global/* operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop" servers = "squit" users = "oper" other = "expire/* bados akill/*" @@ -832,7 +832,7 @@ log * operserv/news operserv/stats operserv/kick operserv/exception operserv/seen * operserv/mode operserv/session operserv/modinfo operserv/ignore operserv/chanlist * operserv/chankill operserv/akill operserv/sqline operserv/snline operserv/userlist - * operserv/global operserv/oper operserv/config operserv/umode operserv/logsearch + * operserv/oper operserv/config operserv/umode operserv/logsearch * operserv/modload operserv/jupe operserv/set operserv/noop * operserv/quit operserv/update operserv/reload operserv/restart * operserv/shutdown operserv/svs operserv/oline operserv/kill @@ -886,7 +886,7 @@ opertype inherits = "Services Operator" - commands = "chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/* operserv/global" + commands = "chanserv/access/list chanserv/drop chanserv/getkey chanserv/saset/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svs operserv/stats operserv/oline operserv/noop operserv/forbid global/*" privs = "*" } diff --git a/data/global.example.conf b/data/global.example.conf index b013537d6..3b2470a5c 100644 --- a/data/global.example.conf +++ b/data/global.example.conf @@ -112,5 +112,4 @@ command { service = "Global"; name = "HELP"; command = "generic/help"; } * Used for sending a message to every online user. */ module { name = "gl_global" } -command { service = "OperServ"; name = "GLOBAL"; command = "global/global"; permission = "operserv/global"; } command { service = "Global"; name = "GLOBAL"; command = "global/global"; permission = "global/global"; } 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); } diff --git a/src/xline.cpp b/src/xline.cpp index ea7fc1e73..554632a38 100644 --- a/src/xline.cpp +++ b/src/xline.cpp @@ -126,9 +126,7 @@ Anope::string XLine::GetReason() const bool XLine::HasNickOrReal() const { - bool r = this->GetNick().find_first_not_of("?*") != Anope::string::npos; - r = r || this->GetReal().find_first_not_of("?*") != Anope::string::npos; - return r; + return !this->GetNick().empty() || !this->GetReal().empty(); } bool XLine::IsRegex() const |