summaryrefslogtreecommitdiff
path: root/modules/protocol/unreal4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/protocol/unreal4.cpp')
-rw-r--r--modules/protocol/unreal4.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/modules/protocol/unreal4.cpp b/modules/protocol/unreal4.cpp
index b98de5ff2..95618a1c7 100644
--- a/modules/protocol/unreal4.cpp
+++ b/modules/protocol/unreal4.cpp
@@ -1,6 +1,6 @@
/* Unreal IRCD 4 functions
*
- * (C) 2003-2016 Anope Team
+ * (C) 2003-2017 Anope Team
* Contact us at team@anope.org
*
* Please read COPYING and README for further details.
@@ -204,6 +204,10 @@ class UnrealIRCdProto : public IRCDProto
UplinkSocket::Message(Me) << "CHGIDENT " << u->GetUID() << " " << vIdent;
if (!vhost.empty())
UplinkSocket::Message(Me) << "CHGHOST " << u->GetUID() << " " << vhost;
+ // Internally unreal sets +xt on chghost
+ BotInfo *bi = Config->GetClient("HostServ");
+ u->SetMode(bi, "CLOAK");
+ u->SetMode(bi, "VHOST");
}
void SendConnect() anope_override
@@ -300,6 +304,11 @@ class UnrealIRCdProto : public IRCDProto
UplinkSocket::Message() << "SVSPART " << user->GetUID() << " " << chan;
}
+ void SendGlobopsInternal(const MessageSource &source, const Anope::string &buf) anope_override
+ {
+ UplinkSocket::Message(Me) << "SENDUMODE o :from " << source.GetName() << ": " << buf;
+ }
+
void SendSWhois(const MessageSource &source, const Anope::string &who, const Anope::string &mask) anope_override
{
UplinkSocket::Message(source) << "SWHOIS " << who << " :" << mask;
@@ -562,7 +571,7 @@ class ChannelModeFlood : public ChannelModeParam
return true;
}
catch (const ConvertException &) { }
-
+
/* '['<number><1 letter>[optional: '#'+1 letter],[next..]']'':'<number> */
size_t end_bracket = value.find(']', 1);
if (end_bracket == Anope::string::npos)
@@ -945,10 +954,10 @@ struct IRCDMessageNick : IRCDMessage
Server *s = Server::Find(params[5]);
if (s == NULL)
{
- Log(LOG_DEBUG) << "User " << params[0] << " introduced from non-existent server " << params[5] << "?";
+ Log(LOG_DEBUG) << "User " << params[0] << " introduced from nonexistent server " << params[5] << "?";
return;
}
-
+
NickAlias *na = NULL;
if (params[6] == "0")
@@ -1001,7 +1010,7 @@ struct IRCDMessageSASL : IRCDMessage
void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override
{
size_t p = params[1].find('!');
- if (!SASL::sasl || p == Anope::string::npos)
+ if (!SASL::sasl || p == Anope::string::npos)
return;
SASL::Message m;
@@ -1151,14 +1160,14 @@ struct IRCDMessageSJoin : IRCDMessage
sju.second = User::Find(buf);
if (!sju.second)
{
- Log(LOG_DEBUG) << "SJOIN for non-existent user " << buf << " on " << params[1];
+ Log(LOG_DEBUG) << "SJOIN for nonexistent user " << buf << " on " << params[1];
continue;
}
users.push_back(sju);
}
}
-
+
time_t ts = Anope::string(params[0]).is_pos_number_only() ? convertTo<time_t>(params[0]) : Anope::CurTime;
Message::Join::SJoin(source, params[1], ts, modes, users);