aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2019-07-27 19:12:29 +0100
committerGravatar Sadie Powell2019-07-27 19:12:29 +0100
commitada6646b6546e936f5f9d91f63f9f9fc6f651ef5 (patch)
tree817e2f69b601d4bbf0ef720a69240050c915560d /src/modules
parentRemove code relating to v3 API changes and v2 module compatibility. (diff)
parentImprove the "max connections exceeded" oper snotice. (diff)
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_chanfilter.cpp2
-rw-r--r--src/modules/m_chanhistory.cpp53
-rw-r--r--src/modules/m_check.cpp4
-rw-r--r--src/modules/m_ircv3_servertime.cpp16
-rw-r--r--src/modules/m_sasl.cpp2
-rw-r--r--src/modules/m_satopic.cpp2
-rw-r--r--src/modules/m_spanningtree/commandbuilder.h56
-rw-r--r--src/modules/m_spanningtree/compat.cpp7
-rw-r--r--src/modules/m_spanningtree/fjoin.cpp2
-rw-r--r--src/modules/m_spanningtree/idle.cpp8
-rw-r--r--src/modules/m_spanningtree/main.cpp44
-rw-r--r--src/modules/m_spanningtree/main.h7
-rw-r--r--src/modules/m_spanningtree/misccommands.cpp35
-rw-r--r--src/modules/m_spanningtree/netburst.cpp1
-rw-r--r--src/modules/m_spanningtree/nickcollide.cpp4
-rw-r--r--src/modules/m_spanningtree/ping.cpp4
-rw-r--r--src/modules/m_spanningtree/postcommand.cpp10
-rw-r--r--src/modules/m_spanningtree/protocolinterface.cpp4
-rw-r--r--src/modules/m_spanningtree/server.cpp2
-rw-r--r--src/modules/m_spanningtree/sinfo.cpp2
-rw-r--r--src/modules/m_spanningtree/treeserver.cpp1
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp1
-rw-r--r--src/modules/m_spanningtree/uid.cpp2
-rw-r--r--src/modules/m_spanningtree/utils.cpp5
-rw-r--r--src/modules/m_spanningtree/utils.h2
25 files changed, 174 insertions, 102 deletions
diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp
index 004990870..4b3721b12 100644
--- a/src/modules/m_chanfilter.cpp
+++ b/src/modules/m_chanfilter.cpp
@@ -71,7 +71,7 @@ class ModuleChanFilter : public Module
{
ConfigTag* tag = ServerInstance->Config->ConfValue("chanfilter");
hidemask = tag->getBool("hidemask");
- cf.maxlen = tag->getUInt("maxlen", 35, 10, 100);
+ cf.maxlen = tag->getUInt("maxlen", 35, 10, ModeParser::MODE_PARAM_MAX);
notifyuser = tag->getBool("notifyuser", true);
cf.DoRehash();
}
diff --git a/src/modules/m_chanhistory.cpp b/src/modules/m_chanhistory.cpp
index 163940deb..f3e51c808 100644
--- a/src/modules/m_chanhistory.cpp
+++ b/src/modules/m_chanhistory.cpp
@@ -114,6 +114,7 @@ class ModuleChanHistory
: public Module
, public ServerProtocol::BroadcastEventListener
{
+ private:
HistoryMode m;
bool sendnotice;
UserModeReference botmode;
@@ -123,6 +124,31 @@ class ModuleChanHistory
IRCv3::Batch::Batch batch;
IRCv3::ServerTime::API servertimemanager;
+ void SendHistory(LocalUser* user, Channel* channel, HistoryList* list, time_t mintime)
+ {
+ if (batchmanager)
+ {
+ batchmanager->Start(batch);
+ batch.GetBatchStartMessage().PushParamRef(channel->name);
+ }
+
+ for(std::deque<HistoryItem>::iterator i = list->lines.begin(); i != list->lines.end(); ++i)
+ {
+ const HistoryItem& item = *i;
+ if (item.ts >= mintime)
+ {
+ ClientProtocol::Messages::Privmsg msg(ClientProtocol::Messages::Privmsg::nocopy, item.sourcemask, channel, item.text);
+ if (servertimemanager)
+ servertimemanager->Set(msg, item.ts);
+ batch.AddToBatch(msg);
+ user->Send(ServerInstance->GetRFCEvents().privmsg, msg);
+ }
+ }
+
+ if (batchmanager)
+ batchmanager->End(batch);
+ }
+
public:
ModuleChanHistory()
: ServerProtocol::BroadcastEventListener(this)
@@ -175,9 +201,6 @@ class ModuleChanHistory
HistoryList* list = m.ext.get(memb->chan);
if (!list)
return;
- time_t mintime = 0;
- if (list->maxtime)
- mintime = ServerInstance->Time() - list->maxtime;
if ((sendnotice) && (!batchcap.get(localuser)))
{
@@ -187,27 +210,11 @@ class ModuleChanHistory
memb->WriteNotice(message);
}
- if (batchmanager)
- {
- batchmanager->Start(batch);
- batch.GetBatchStartMessage().PushParamRef(memb->chan->name);
- }
-
- for(std::deque<HistoryItem>::iterator i = list->lines.begin(); i != list->lines.end(); ++i)
- {
- const HistoryItem& item = *i;
- if (item.ts >= mintime)
- {
- ClientProtocol::Messages::Privmsg msg(ClientProtocol::Messages::Privmsg::nocopy, item.sourcemask, memb->chan, item.text);
- if (servertimemanager)
- servertimemanager->Set(msg, item.ts);
- batch.AddToBatch(msg);
- localuser->Send(ServerInstance->GetRFCEvents().privmsg, msg);
- }
- }
+ time_t mintime = 0;
+ if (list->maxtime)
+ mintime = ServerInstance->Time() - list->maxtime;
- if (batchmanager)
- batchmanager->End(batch);
+ SendHistory(localuser, memb->chan, list, mintime);
}
Version GetVersion() override
diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp
index 76b411006..f8bbbff45 100644
--- a/src/modules/m_check.cpp
+++ b/src/modules/m_check.cpp
@@ -261,8 +261,8 @@ class CommandCheck : public Command
for (Channel::MemberMap::const_iterator i = ulist.begin(); i != ulist.end(); ++i)
{
/*
- * Unlike Asuka, I define a clone as coming from the same host. --w00t
- */
+ * Unlike Asuka, I define a clone as coming from the same host. --w00t
+ */
const UserManager::CloneCounts& clonecount = ServerInstance->Users.GetCloneCounts(i->first);
context.Write("member", InspIRCd::Format("%u %s%s (%s)", clonecount.global,
i->second->GetAllPrefixChars().c_str(), i->first->GetFullHost().c_str(),
diff --git a/src/modules/m_ircv3_servertime.cpp b/src/modules/m_ircv3_servertime.cpp
index e7ab231e3..5fa099ece 100644
--- a/src/modules/m_ircv3_servertime.cpp
+++ b/src/modules/m_ircv3_servertime.cpp
@@ -20,8 +20,12 @@
#include "inspircd.h"
#include "modules/ircv3.h"
#include "modules/ircv3_servertime.h"
+#include "modules/server.h"
-class ServerTimeTag : public IRCv3::ServerTime::Manager, public IRCv3::CapTag<ServerTimeTag>
+class ServerTimeTag
+ : public IRCv3::ServerTime::Manager
+ , public IRCv3::CapTag<ServerTimeTag>
+ , public ServerProtocol::MessageEventListener
{
time_t lasttime;
long lasttimens;
@@ -45,6 +49,7 @@ class ServerTimeTag : public IRCv3::ServerTime::Manager, public IRCv3::CapTag<Se
ServerTimeTag(Module* mod)
: IRCv3::ServerTime::Manager(mod)
, IRCv3::CapTag<ServerTimeTag>(mod, "server-time", "time")
+ , ServerProtocol::MessageEventListener(mod)
, lasttime(0)
, lasttimens(0)
{
@@ -53,9 +58,18 @@ class ServerTimeTag : public IRCv3::ServerTime::Manager, public IRCv3::CapTag<Se
const std::string* GetValue(const ClientProtocol::Message& msg)
{
+ // Client protocol.
RefreshTimeString();
return &lasttimestring;
}
+
+ void OnBuildMessage(User* source, const char* command, ClientProtocol::TagMap& tags) override
+ {
+ // Server protocol.
+ RefreshTimeString();
+ tags.insert(std::make_pair(tagname, ClientProtocol::MessageTagData(this, lasttimestring)));
+ }
+
};
class ModuleIRCv3ServerTime : public Module
diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp
index 544a2bf0e..d2d3589f4 100644
--- a/src/modules/m_sasl.cpp
+++ b/src/modules/m_sasl.cpp
@@ -285,7 +285,7 @@ class SaslAuthenticator
case SASL_OK:
this->user->WriteNumeric(RPL_SASLSUCCESS, "SASL authentication successful");
break;
- case SASL_ABORT:
+ case SASL_ABORT:
this->user->WriteNumeric(ERR_SASLABORTED, "SASL authentication aborted");
break;
case SASL_FAIL:
diff --git a/src/modules/m_satopic.cpp b/src/modules/m_satopic.cpp
index 94f9999ca..df91b1be4 100644
--- a/src/modules/m_satopic.cpp
+++ b/src/modules/m_satopic.cpp
@@ -33,7 +33,7 @@ class CommandSATopic : public Command
{
/*
* Handles a SATOPIC request. Notifies all +s users.
- */
+ */
Channel* target = ServerInstance->FindChan(parameters[0]);
if(target)
diff --git a/src/modules/m_spanningtree/commandbuilder.h b/src/modules/m_spanningtree/commandbuilder.h
index 4bbb60e47..f6cca9917 100644
--- a/src/modules/m_spanningtree/commandbuilder.h
+++ b/src/modules/m_spanningtree/commandbuilder.h
@@ -26,28 +26,53 @@ class TreeServer;
class CmdBuilder
{
protected:
+ /** The raw message contents. */
std::string content;
+ /** Tags which have been added to this message. */
+ ClientProtocol::TagMap tags;
+
+ /** The size of tags within the contents. */
+ size_t tagsize;
+
+ /** Fires the ServerProtocol::MessageEventListener::OnBuildMessage event for a server target. */
+ void FireEvent(Server* target, const char* cmd, ClientProtocol::TagMap& taglist);
+
+ /** Fires the ServerProtocol::MessageEventListener::OnBuildMessage event for a user target. */
+ void FireEvent(User* target, const char* cmd, ClientProtocol::TagMap& taglist);
+
+ /** Updates the tag string within the buffer. */
+ void UpdateTags();
+
public:
CmdBuilder(const char* cmd)
: content(1, ':')
+ , tagsize(0)
{
content.append(ServerInstance->Config->GetSID());
push(cmd);
+ FireEvent(ServerInstance->FakeClient->server, cmd, tags);
}
- CmdBuilder(const std::string& src, const char* cmd)
+ CmdBuilder(TreeServer* src, const char* cmd)
: content(1, ':')
+ , tagsize(0)
{
- content.append(src);
+ content.append(src->GetID());
push(cmd);
+ FireEvent(src, cmd, tags);
}
CmdBuilder(User* src, const char* cmd)
: content(1, ':')
+ , tagsize(0)
{
content.append(src->uuid);
push(cmd);
+ if (InspIRCd::IsSID(src->uuid))
+ FireEvent(src->server, cmd, tags);
+ else
+ FireEvent(src, cmd, tags);
}
CmdBuilder& push_raw(const std::string& s)
@@ -119,27 +144,12 @@ class CmdBuilder
return *this;
}
- CmdBuilder& push_tags(const ClientProtocol::TagMap& tags)
+ CmdBuilder& push_tags(ClientProtocol::TagMap newtags)
{
- if (!tags.empty())
- {
- char separator = '@';
- std::string taglist;
- for (ClientProtocol::TagMap::const_iterator iter = tags.begin(); iter != tags.end(); ++iter)
- {
- taglist.push_back(separator);
- separator = ';';
-
- taglist.append(iter->first);
- if (!iter->second.value.empty())
- {
- taglist.push_back('=');
- taglist.append(iter->second.value);
- }
- }
- taglist.push_back(' ');
- content.insert(0, taglist);
- }
+ // It has to be this way around so new tags get priority.
+ newtags.insert(tags.begin(), tags.end());
+ std::swap(tags, newtags);
+ UpdateTags();
return *this;
}
@@ -151,8 +161,6 @@ class CmdBuilder
return *this;
}
- void push_back(const std::string& s) { push(s); }
-
const std::string& str() const { return content; }
operator const std::string&() const { return str(); }
diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp
index 9ab44ce2a..e0fbbc174 100644
--- a/src/modules/m_spanningtree/compat.cpp
+++ b/src/modules/m_spanningtree/compat.cpp
@@ -286,7 +286,12 @@ void TreeSocket::WriteLine(const std::string& original_line)
// Synthesize a :<newserver> BURST <time> message
spcolon = line.find(" :");
- line = CmdBuilder(line.substr(spcolon-3, 3), "BURST").push_int(ServerInstance->Time()).str();
+
+ TreeServer* const source = Utils->FindServerID(line.substr(spcolon-3, 3));
+ if (!source)
+ return;
+
+ line = CmdBuilder(source, "BURST").push_int(ServerInstance->Time()).str();
}
}
else if (command == "NUM")
diff --git a/src/modules/m_spanningtree/fjoin.cpp b/src/modules/m_spanningtree/fjoin.cpp
index 6c053c530..62a51faba 100644
--- a/src/modules/m_spanningtree/fjoin.cpp
+++ b/src/modules/m_spanningtree/fjoin.cpp
@@ -295,7 +295,7 @@ void CommandFJoin::LowerTS(Channel* chan, time_t TS, const std::string& newname)
}
CommandFJoin::Builder::Builder(Channel* chan, TreeServer* source)
- : CmdBuilder(source->GetID(), "FJOIN")
+ : CmdBuilder(source, "FJOIN")
{
push(chan->name).push_int(chan->age).push_raw(" +");
pos = str().size();
diff --git a/src/modules/m_spanningtree/idle.cpp b/src/modules/m_spanningtree/idle.cpp
index 11e665531..904142999 100644
--- a/src/modules/m_spanningtree/idle.cpp
+++ b/src/modules/m_spanningtree/idle.cpp
@@ -59,10 +59,10 @@ CmdResult CommandIdle::HandleRemote(RemoteUser* issuer, Params& params)
else
idle = ((unsigned int) (ServerInstance->Time() - localtarget->idle_lastmsg));
- CmdBuilder reply(params[0], "IDLE");
- reply.push_back(issuer->uuid);
- reply.push_back(ConvToStr(target->signon));
- reply.push_back(ConvToStr(idle));
+ CmdBuilder reply(target, "IDLE");
+ reply.push(issuer->uuid);
+ reply.push(ConvToStr(target->signon));
+ reply.push(ConvToStr(idle));
reply.Unicast(issuer);
}
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index 6177d7859..aaaee47d4 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -25,7 +25,6 @@
#include "socket.h"
#include "xline.h"
#include "iohook.h"
-#include "modules/server.h"
#include "resolvers.h"
#include "main.h"
@@ -47,6 +46,7 @@ ModuleSpanningTree::ModuleSpanningTree()
, currmembid(0)
, broadcasteventprov(this, "event/server-broadcast")
, linkeventprov(this, "event/server-link")
+ , messageeventprov(this, "event/server-message")
, synceventprov(this, "event/server-sync")
, sslapi(this)
, DNS(this, "DNS")
@@ -359,10 +359,10 @@ void ModuleSpanningTree::OnUserInvite(User* source, User* dest, Channel* channel
if (IS_LOCAL(source))
{
CmdBuilder params(source, "INVITE");
- params.push_back(dest->uuid);
- params.push_back(channel->name);
+ params.push(dest->uuid);
+ params.push(channel->name);
params.push_int(channel->age);
- params.push_back(ConvToStr(expiry));
+ params.push(ConvToStr(expiry));
params.Broadcast();
}
}
@@ -403,7 +403,7 @@ void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& targ
{
CmdBuilder params(user, message_type);
params.push_tags(details.tags_out);
- params.push_back(d->uuid);
+ params.push(d->uuid);
params.push_last(details.text);
params.Unicast(d);
}
@@ -411,7 +411,7 @@ void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& targ
}
case MessageTarget::TYPE_CHANNEL:
{
- Utils->SendChannelMessage(user->uuid, target.Get<Channel>(), details.text, target.status, details.tags_out, details.exemptions, message_type);
+ Utils->SendChannelMessage(user, target.Get<Channel>(), details.text, target.status, details.tags_out, details.exemptions, message_type);
break;
}
case MessageTarget::TYPE_SERVER:
@@ -419,7 +419,7 @@ void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& targ
const std::string* serverglob = target.Get<std::string>();
CmdBuilder par(user, message_type);
par.push_tags(details.tags_out);
- par.push_back(*serverglob);
+ par.push(*serverglob);
par.push_last(details.text);
par.Broadcast();
break;
@@ -441,14 +441,14 @@ void ModuleSpanningTree::OnUserPostTagMessage(User* user, const MessageTarget& t
{
CmdBuilder params(user, "TAGMSG");
params.push_tags(details.tags_out);
- params.push_back(d->uuid);
+ params.push(d->uuid);
params.Unicast(d);
}
break;
}
case MessageTarget::TYPE_CHANNEL:
{
- Utils->SendChannelMessage(user->uuid, target.Get<Channel>(), "", target.status, details.tags_out, details.exemptions, "TAGMSG");
+ Utils->SendChannelMessage(user, target.Get<Channel>(), "", target.status, details.tags_out, details.exemptions, "TAGMSG");
break;
}
case MessageTarget::TYPE_SERVER:
@@ -456,7 +456,7 @@ void ModuleSpanningTree::OnUserPostTagMessage(User* user, const MessageTarget& t
const std::string* serverglob = target.Get<std::string>();
CmdBuilder par(user, "TAGMSG");
par.push_tags(details.tags_out);
- par.push_back(*serverglob);
+ par.push(*serverglob);
par.Broadcast();
break;
}
@@ -513,12 +513,12 @@ void ModuleSpanningTree::OnUserJoin(Membership* memb, bool sync, bool created_by
else
{
CmdBuilder params(memb->user, "IJOIN");
- params.push_back(memb->chan->name);
+ params.push(memb->chan->name);
params.push_int(memb->id);
if (!memb->modes.empty())
{
- params.push_back(ConvToStr(memb->chan->age));
- params.push_back(memb->modes);
+ params.push(ConvToStr(memb->chan->age));
+ params.push(memb->modes);
}
params.Broadcast();
}
@@ -553,7 +553,7 @@ void ModuleSpanningTree::OnUserPart(Membership* memb, std::string &partmessage,
if (IS_LOCAL(memb->user))
{
CmdBuilder params(memb->user, "PART");
- params.push_back(memb->chan->name);
+ params.push(memb->chan->name);
if (!partmessage.empty())
params.push_last(partmessage);
params.Broadcast();
@@ -593,8 +593,8 @@ void ModuleSpanningTree::OnUserPostNick(User* user, const std::string &oldnick)
{
// The nick TS is updated by the core, we don't do it
CmdBuilder params(user, "NICK");
- params.push_back(user->nick);
- params.push_back(ConvToStr(user->age));
+ params.push(user->nick);
+ params.push(ConvToStr(user->age));
params.Broadcast();
}
else if (!loopCall)
@@ -609,8 +609,8 @@ void ModuleSpanningTree::OnUserKick(User* source, Membership* memb, const std::s
return;
CmdBuilder params(source, "KICK");
- params.push_back(memb->chan->name);
- params.push_back(memb->user->uuid);
+ params.push(memb->chan->name);
+ params.push(memb->user->uuid);
// If a remote user is being kicked by us then send the membership id in the kick too
if (!IS_LOCAL(memb->user))
params.push_int(memb->id);
@@ -625,8 +625,8 @@ void ModuleSpanningTree::OnPreRehash(User* user, const std::string &parameter)
// Send out to other servers
if (!parameter.empty() && parameter[0] != '-')
{
- CmdBuilder params((user ? user->uuid : ServerInstance->Config->GetSID()), "REHASH");
- params.push_back(parameter);
+ CmdBuilder params(user ? user : ServerInstance->FakeClient, "REHASH");
+ params.push(parameter);
params.Forward(user ? TreeServer::Get(user)->GetRoute() : NULL);
}
}
@@ -749,8 +749,8 @@ void ModuleSpanningTree::OnDelLine(User* user, XLine *x)
user = ServerInstance->FakeClient;
CmdBuilder params(user, "DELLINE");
- params.push_back(x->type);
- params.push_back(x->Displayable());
+ params.push(x->type);
+ params.push(x->Displayable());
params.Broadcast();
}
diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h
index 29d133b94..ac96de391 100644
--- a/src/modules/m_spanningtree/main.h
+++ b/src/modules/m_spanningtree/main.h
@@ -29,6 +29,7 @@
#include "modules/ssl.h"
#include "modules/stats.h"
#include "modules/ctctags.h"
+#include "modules/server.h"
#include "servercommand.h"
#include "commands.h"
#include "protocolinterface.h"
@@ -99,6 +100,9 @@ class ModuleSpanningTree
/** Event provider for our link events. */
Events::ModuleEventProvider linkeventprov;
+ /** Event provider for our message events. */
+ Events::ModuleEventProvider messageeventprov;
+
/** Event provider for our sync events. */
Events::ModuleEventProvider synceventprov;
@@ -169,6 +173,9 @@ class ModuleSpanningTree
/** Retrieves the event provider for link events. */
const Events::ModuleEventProvider& GetLinkEventProvider() const { return linkeventprov; }
+ /** Retrieves the event provider for message events. */
+ const Events::ModuleEventProvider& GetMessageEventProvider() const { return messageeventprov; }
+
/** Retrieves the event provider for sync events. */
const Events::ModuleEventProvider& GetSyncEventProvider() const { return synceventprov; }
diff --git a/src/modules/m_spanningtree/misccommands.cpp b/src/modules/m_spanningtree/misccommands.cpp
index 827ea2562..bccdf5016 100644
--- a/src/modules/m_spanningtree/misccommands.cpp
+++ b/src/modules/m_spanningtree/misccommands.cpp
@@ -29,6 +29,41 @@
#include "commands.h"
#include "treeserver.h"
+void CmdBuilder::FireEvent(Server* target, const char* cmd, ClientProtocol::TagMap& taglist)
+{
+ FOREACH_MOD_CUSTOM(Utils->Creator->GetMessageEventProvider(), ServerProtocol::MessageEventListener, OnBuildMessage, (target, cmd, taglist));
+ UpdateTags();
+}
+
+void CmdBuilder::FireEvent(User* target, const char* cmd, ClientProtocol::TagMap& taglist)
+{
+ FOREACH_MOD_CUSTOM(Utils->Creator->GetMessageEventProvider(), ServerProtocol::MessageEventListener, OnBuildMessage, (target, cmd, taglist));
+ UpdateTags();
+}
+
+void CmdBuilder::UpdateTags()
+{
+ std::string taglist;
+ if (!tags.empty())
+ {
+ char separator = '@';
+ for (ClientProtocol::TagMap::const_iterator iter = tags.begin(); iter != tags.end(); ++iter)
+ {
+ taglist.push_back(separator);
+ separator = ';';
+ taglist.append(iter->first);
+ if (!iter->second.value.empty())
+ {
+ taglist.push_back('=');
+ taglist.append(iter->second.value);
+ }
+ }
+ taglist.push_back(' ');
+ }
+ content.replace(0, tagsize, taglist);
+ tagsize = taglist.length();
+}
+
CmdResult CommandSNONotice::Handle(User* user, Params& params)
{
ServerInstance->SNO.WriteToSnoMask(params[0][0], "From " + user->nick + ": " + params[1]);
diff --git a/src/modules/m_spanningtree/netburst.cpp b/src/modules/m_spanningtree/netburst.cpp
index 7d0e48dc1..a8dbbc714 100644
--- a/src/modules/m_spanningtree/netburst.cpp
+++ b/src/modules/m_spanningtree/netburst.cpp
@@ -27,7 +27,6 @@
#include "treeserver.h"
#include "main.h"
#include "commands.h"
-#include "modules/server.h"
/**
* Creates FMODE messages, used only when syncing channels
diff --git a/src/modules/m_spanningtree/nickcollide.cpp b/src/modules/m_spanningtree/nickcollide.cpp
index 071d15b3a..7bcb69647 100644
--- a/src/modules/m_spanningtree/nickcollide.cpp
+++ b/src/modules/m_spanningtree/nickcollide.cpp
@@ -108,8 +108,8 @@ bool SpanningTreeUtilities::DoCollision(User* u, TreeServer* server, time_t remo
* this "local" nick is actually behind us, send a SAVE out.
*/
CmdBuilder params("SAVE");
- params.push_back(u->uuid);
- params.push_back(ConvToStr(u->age));
+ params.push(u->uuid);
+ params.push(ConvToStr(u->age));
params.Broadcast();
u->ChangeNick(u->uuid, CommandSave::SavedTimestamp);
diff --git a/src/modules/m_spanningtree/ping.cpp b/src/modules/m_spanningtree/ping.cpp
index 844feb35b..51e87874d 100644
--- a/src/modules/m_spanningtree/ping.cpp
+++ b/src/modules/m_spanningtree/ping.cpp
@@ -30,10 +30,10 @@ CmdResult CommandPing::Handle(User* user, Params& params)
{
// PING for us, reply with a PONG
CmdBuilder reply("PONG");
- reply.push_back(user->uuid);
+ reply.push(user->uuid);
if (params.size() >= 2)
// If there is a second parameter, append it
- reply.push_back(params[1]);
+ reply.push(params[1]);
reply.Unicast(user);
}
diff --git a/src/modules/m_spanningtree/postcommand.cpp b/src/modules/m_spanningtree/postcommand.cpp
index 122763279..ee74db0fd 100644
--- a/src/modules/m_spanningtree/postcommand.cpp
+++ b/src/modules/m_spanningtree/postcommand.cpp
@@ -45,7 +45,7 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
if (routing.type == ROUTE_TYPE_OPT_BCAST)
{
params.push('*');
- params.push_back(command);
+ params.push(command);
}
else if (routing.type == ROUTE_TYPE_UNICAST || routing.type == ROUTE_TYPE_OPT_UCAST)
{
@@ -64,8 +64,8 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
if (encap)
{
- params.push_back(sdest->GetID());
- params.push_back(command);
+ params.push(sdest->GetID());
+ params.push(command);
}
}
else
@@ -83,7 +83,7 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
std::string output_text = CommandParser::TranslateUIDs(thiscmd->translation, parameters, true, thiscmd);
- params.push_back(output_text);
+ params.push(output_text);
if (routing.type == ROUTE_TYPE_MESSAGE)
{
@@ -104,7 +104,7 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
std::string message;
if (parameters.size() >= 2)
message.assign(parameters[1]);
- SendChannelMessage(user->uuid, c, message, pfx, parameters.GetTags(), exempts, command.c_str(), origin ? origin->GetSocket() : NULL);
+ SendChannelMessage(user, c, message, pfx, parameters.GetTags(), exempts, command.c_str(), origin ? origin->GetSocket() : NULL);
}
else if (dest[0] == '$')
{
diff --git a/src/modules/m_spanningtree/protocolinterface.cpp b/src/modules/m_spanningtree/protocolinterface.cpp
index 56b9370ad..9fe93a389 100644
--- a/src/modules/m_spanningtree/protocolinterface.cpp
+++ b/src/modules/m_spanningtree/protocolinterface.cpp
@@ -112,13 +112,13 @@ void SpanningTreeProtocolInterface::SendMessage(Channel* target, char status, co
const char* cmd = (msgtype == MSG_PRIVMSG ? "PRIVMSG" : "NOTICE");
CUList exempt_list;
ClientProtocol::TagMap tags;
- Utils->SendChannelMessage(ServerInstance->Config->GetSID(), target, text, status, tags, exempt_list, cmd);
+ Utils->SendChannelMessage(ServerInstance->FakeClient, target, text, status, tags, exempt_list, cmd);
}
void SpanningTreeProtocolInterface::SendMessage(User* target, const std::string& text, MessageType msgtype)
{
CmdBuilder p(msgtype == MSG_PRIVMSG ? "PRIVMSG" : "NOTICE");
- p.push_back(target->uuid);
+ p.push(target->uuid);
p.push_last(text);
p.Unicast(target);
}
diff --git a/src/modules/m_spanningtree/server.cpp b/src/modules/m_spanningtree/server.cpp
index b07725d00..9840a84a3 100644
--- a/src/modules/m_spanningtree/server.cpp
+++ b/src/modules/m_spanningtree/server.cpp
@@ -225,7 +225,7 @@ bool TreeSocket::Inbound_Server(CommandBase::Params& params)
}
CommandServer::Builder::Builder(TreeServer* server)
- : CmdBuilder(server->GetParent()->GetID(), "SERVER")
+ : CmdBuilder(server->GetParent(), "SERVER")
{
push(server->GetName());
push(server->GetID());
diff --git a/src/modules/m_spanningtree/sinfo.cpp b/src/modules/m_spanningtree/sinfo.cpp
index fbe0f22e2..36f2a31cb 100644
--- a/src/modules/m_spanningtree/sinfo.cpp
+++ b/src/modules/m_spanningtree/sinfo.cpp
@@ -49,7 +49,7 @@ CmdResult CommandSInfo::HandleServer(TreeServer* server, CommandBase::Params& pa
}
CommandSInfo::Builder::Builder(TreeServer* server, const char* key, const std::string& val)
- : CmdBuilder(server->GetID(), "SINFO")
+ : CmdBuilder(server, "SINFO")
{
push(key).push_last(val);
}
diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp
index 9a53aede1..43c23a55a 100644
--- a/src/modules/m_spanningtree/treeserver.cpp
+++ b/src/modules/m_spanningtree/treeserver.cpp
@@ -23,7 +23,6 @@
#include "inspircd.h"
#include "xline.h"
#include "main.h"
-#include "modules/server.h"
#include "utils.h"
#include "treeserver.h"
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index 919b064fe..cccd4f8cc 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -24,7 +24,6 @@
#include "iohook.h"
#include "main.h"
-#include "modules/server.h"
#include "utils.h"
#include "treeserver.h"
#include "link.h"
diff --git a/src/modules/m_spanningtree/uid.cpp b/src/modules/m_spanningtree/uid.cpp
index 954780d99..e6db4e0e5 100644
--- a/src/modules/m_spanningtree/uid.cpp
+++ b/src/modules/m_spanningtree/uid.cpp
@@ -152,7 +152,7 @@ CmdResult CommandFName::HandleRemote(RemoteUser* src, Params& params)
}
CommandUID::Builder::Builder(User* user)
- : CmdBuilder(TreeServer::Get(user)->GetID(), "UID")
+ : CmdBuilder(TreeServer::Get(user), "UID")
{
push(user->uuid);
push_int(user->age);
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index a90fa5740..f4dca874e 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -28,7 +28,6 @@
#include "treesocket.h"
#include "resolvers.h"
#include "commandbuilder.h"
-#include "modules/server.h"
SpanningTreeUtilities* Utils = NULL;
@@ -351,9 +350,9 @@ Link* SpanningTreeUtilities::FindLink(const std::string& name)
return NULL;
}
-void SpanningTreeUtilities::SendChannelMessage(const std::string& prefix, Channel* target, const std::string& text, char status, const ClientProtocol::TagMap& tags, const CUList& exempt_list, const char* message_type, TreeSocket* omit)
+void SpanningTreeUtilities::SendChannelMessage(User* source, Channel* target, const std::string& text, char status, const ClientProtocol::TagMap& tags, const CUList& exempt_list, const char* message_type, TreeSocket* omit)
{
- CmdBuilder msg(prefix, message_type);
+ CmdBuilder msg(source, message_type);
msg.push_tags(tags);
msg.push_raw(' ');
if (status != 0)
diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h
index af8e4bc8f..ded180cb3 100644
--- a/src/modules/m_spanningtree/utils.h
+++ b/src/modules/m_spanningtree/utils.h
@@ -172,7 +172,7 @@ class SpanningTreeUtilities : public classbase
/** Sends a PRIVMSG or a NOTICE to a channel obeying an exempt list and an optional prefix
*/
- void SendChannelMessage(const std::string& prefix, Channel* target, const std::string& text, char status, const ClientProtocol::TagMap& tags, const CUList& exempt_list, const char* message_type, TreeSocket* omit = NULL);
+ void SendChannelMessage(User* source, Channel* target, const std::string& text, char status, const ClientProtocol::TagMap& tags, const CUList& exempt_list, const char* message_type, TreeSocket* omit = NULL);
};
inline void SpanningTreeUtilities::DoOneToMany(const CmdBuilder& params)