summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/example.conf8
-rw-r--r--data/global.example.conf1
-rw-r--r--modules/commands/os_sxline.cpp18
-rw-r--r--modules/protocol/bahamut.cpp4
-rw-r--r--modules/protocol/inspircd12.cpp15
-rw-r--r--modules/protocol/unreal.cpp4
-rw-r--r--modules/pseudoclients/operserv.cpp2
-rw-r--r--src/xline.cpp4
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