summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2016-03-02 15:20:21 +0100
committerAttila Molnar <attilamolnar@hush.com>2016-03-02 15:20:21 +0100
commit78044f849b63c71fb9c741c648415a298c0ed617 (patch)
treecea99eb0916f69f94aad904596b6c20eda949f38
parent4f1005acd1e97a6dac8182f80a0ccf453376ba67 (diff)
parent48d19bdd2cdccca18c82d74c0c0cbefc2a87069a (diff)
Merge branch 'master+writeremotenotice'
-rw-r--r--include/users.h11
-rw-r--r--src/configreader.cpp5
-rw-r--r--src/modules/m_alltime.cpp4
-rw-r--r--src/modules/m_sajoin.cpp2
-rw-r--r--src/modules/m_spanningtree/main.cpp21
-rw-r--r--src/modules/m_spanningtree/main.h4
-rw-r--r--src/modules/m_spanningtree/rconnect.cpp2
-rw-r--r--src/modules/m_spanningtree/rsquit.cpp4
-rw-r--r--src/users.cpp10
9 files changed, 33 insertions, 30 deletions
diff --git a/include/users.h b/include/users.h
index 5e7df74ea..8d53197ba 100644
--- a/include/users.h
+++ b/include/users.h
@@ -519,6 +519,11 @@ class CoreExport User : public Extensible
*/
void WriteNotice(const std::string& text) { this->WriteCommand("NOTICE", ":" + text); }
+ /** Send a NOTICE message from the local server to the user.
+ * @param text Text to send
+ */
+ virtual void WriteRemoteNotice(const std::string& text);
+
void WriteRemoteNumeric(const Numeric::Numeric& numeric);
template <typename T1>
@@ -847,6 +852,12 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node<Local
void Write(const std::string& text);
void Write(const char*, ...) CUSTOM_PRINTF(2, 3);
+ /** Send a NOTICE message from the local server to the user.
+ * The message will be sent even if the user is connected to a remote server.
+ * @param text Text to send
+ */
+ void WriteRemoteNotice(const std::string& text) CXX11_OVERRIDE;
+
/** Returns true or false for if a user can execute a privilaged oper command.
* This is done by looking up their oper type from User::oper, then referencing
* this to their oper classes and checking the commands they can execute.
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 1ac6b445a..e607c6e7d 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -612,7 +612,7 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
std::cout << line << std::endl;
// If a user is rehashing, tell them directly
if (user)
- user->SendText(":%s NOTICE %s :*** %s", ServerInstance->Config->ServerName.c_str(), user->nick.c_str(), line.c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** %s", line.c_str()));
// Also tell opers
ServerInstance->SNO->WriteGlobalSno('a', line);
}
@@ -652,8 +652,7 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
ApplyModules(user);
if (user)
- user->SendText(":%s NOTICE %s :*** Successfully rehashed server.",
- ServerInstance->Config->ServerName.c_str(), user->nick.c_str());
+ user->WriteRemoteNotice("*** Successfully rehashed server.");
ServerInstance->SNO->WriteGlobalSno('a', "*** Successfully rehashed server.");
}
diff --git a/src/modules/m_alltime.cpp b/src/modules/m_alltime.cpp
index 075064c62..73c0fa994 100644
--- a/src/modules/m_alltime.cpp
+++ b/src/modules/m_alltime.cpp
@@ -33,9 +33,9 @@ class CommandAlltime : public Command
{
const std::string fmtdate = InspIRCd::TimeString(ServerInstance->Time(), "%Y-%m-%d %H:%M:%S", true);
- std::string msg = ":" + ServerInstance->Config->ServerName + " NOTICE " + user->nick + " :System time is " + fmtdate + " (" + ConvToStr(ServerInstance->Time()) + ") on " + ServerInstance->Config->ServerName;
+ std::string msg = "System time is " + fmtdate + " (" + ConvToStr(ServerInstance->Time()) + ") on " + ServerInstance->Config->ServerName;
- user->SendText(msg);
+ user->WriteRemoteNotice(msg);
/* we want this routed out! */
return CMD_SUCCESS;
diff --git a/src/modules/m_sajoin.cpp b/src/modules/m_sajoin.cpp
index 9696b08a1..cc97c7308 100644
--- a/src/modules/m_sajoin.cpp
+++ b/src/modules/m_sajoin.cpp
@@ -66,7 +66,7 @@ class CommandSajoin : public Command
Channel* chan = ServerInstance->FindChan(channel);
if ((chan) && (chan->HasUser(dest)))
{
- user->SendText(":" + user->server->GetName() + " NOTICE " + user->nick + " :*** " + dest->nick + " is already on " + channel);
+ user->WriteRemoteNotice("*** " + dest->nick + " is already on " + channel);
return CMD_FAILURE;
}
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index ade8359ba..d06755c1f 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -312,19 +312,6 @@ ModResult ModuleSpanningTree::HandleVersion(const std::vector<std::string>& para
return MOD_RES_DENY;
}
-/* This method will attempt to get a message to a remote user.
- */
-void ModuleSpanningTree::RemoteMessage(User* user, const char* format, ...)
-{
- std::string text;
- VAFORMAT(text, format, format);
-
- if (IS_LOCAL(user))
- user->WriteNotice(text);
- else
- ServerInstance->PI->SendUserNotice(user, text);
-}
-
ModResult ModuleSpanningTree::HandleConnect(const std::vector<std::string>& parameters, User* user)
{
for (std::vector<reference<Link> >::iterator i = Utils->LinkBlocks.begin(); i < Utils->LinkBlocks.end(); i++)
@@ -334,25 +321,25 @@ ModResult ModuleSpanningTree::HandleConnect(const std::vector<std::string>& para
{
if (InspIRCd::Match(ServerInstance->Config->ServerName, assign(x->Name), rfc_case_insensitive_map))
{
- RemoteMessage(user, "*** CONNECT: Server \002%s\002 is ME, not connecting.",x->Name.c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** CONNECT: Server \002%s\002 is ME, not connecting.", x->Name.c_str()));
return MOD_RES_DENY;
}
TreeServer* CheckDupe = Utils->FindServer(x->Name.c_str());
if (!CheckDupe)
{
- RemoteMessage(user, "*** CONNECT: Connecting to server: \002%s\002 (%s:%d)",x->Name.c_str(),(x->HiddenFromStats ? "<hidden>" : x->IPAddr.c_str()),x->Port);
+ user->WriteRemoteNotice(InspIRCd::Format("*** CONNECT: Connecting to server: \002%s\002 (%s:%d)", x->Name.c_str(), (x->HiddenFromStats ? "<hidden>" : x->IPAddr.c_str()), x->Port));
ConnectServer(x);
return MOD_RES_DENY;
}
else
{
- RemoteMessage(user, "*** CONNECT: Server \002%s\002 already exists on the network and is connected via \002%s\002", x->Name.c_str(), CheckDupe->GetParent()->GetName().c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** CONNECT: Server \002%s\002 already exists on the network and is connected via \002%s\002", x->Name.c_str(), CheckDupe->GetParent()->GetName().c_str()));
return MOD_RES_DENY;
}
}
}
- RemoteMessage(user, "*** CONNECT: No server matching \002%s\002 could be found in the config file.",parameters[0].c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** CONNECT: No server matching \002%s\002 could be found in the config file.", parameters[0].c_str()));
return MOD_RES_DENY;
}
diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h
index 2490c83ef..e1c0932b4 100644
--- a/src/modules/m_spanningtree/main.h
+++ b/src/modules/m_spanningtree/main.h
@@ -131,10 +131,6 @@ class ModuleSpanningTree : public Module
*/
ModResult HandleConnect(const std::vector<std::string>& parameters, User* user);
- /** Attempt to send a message to a user
- */
- void RemoteMessage(User* user, const char* format, ...) CUSTOM_PRINTF(3, 4);
-
/** Display a time as a human readable string
*/
static std::string TimeToStr(time_t secs);
diff --git a/src/modules/m_spanningtree/rconnect.cpp b/src/modules/m_spanningtree/rconnect.cpp
index c5d3a5b52..8b8757a07 100644
--- a/src/modules/m_spanningtree/rconnect.cpp
+++ b/src/modules/m_spanningtree/rconnect.cpp
@@ -36,7 +36,7 @@ CmdResult CommandRConnect::Handle (const std::vector<std::string>& parameters, U
/* First see if the server which is being asked to connect to another server in fact exists */
if (!Utils->FindServerMask(parameters[0]))
{
- ((ModuleSpanningTree*)(Module*)creator)->RemoteMessage(user, "*** RCONNECT: Server \002%s\002 isn't connected to the network!", parameters[0].c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** RCONNECT: Server \002%s\002 isn't connected to the network!", parameters[0].c_str()));
return CMD_FAILURE;
}
diff --git a/src/modules/m_spanningtree/rsquit.cpp b/src/modules/m_spanningtree/rsquit.cpp
index 45413c33f..487db2826 100644
--- a/src/modules/m_spanningtree/rsquit.cpp
+++ b/src/modules/m_spanningtree/rsquit.cpp
@@ -39,13 +39,13 @@ CmdResult CommandRSQuit::Handle (const std::vector<std::string>& parameters, Use
server_target = Utils->FindServerMask(parameters[0]);
if (!server_target)
{
- ((ModuleSpanningTree*)(Module*)creator)->RemoteMessage(user, "*** RSQUIT: Server \002%s\002 isn't connected to the network!", parameters[0].c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** RSQUIT: Server \002%s\002 isn't connected to the network!", parameters[0].c_str()));
return CMD_FAILURE;
}
if (server_target->IsRoot())
{
- ((ModuleSpanningTree*)(Module*)creator)->RemoteMessage(user, "*** RSQUIT: Foolish mortal, you cannot make a server SQUIT itself! (%s matches local server name)", parameters[0].c_str());
+ user->WriteRemoteNotice(InspIRCd::Format("*** RSQUIT: Foolish mortal, you cannot make a server SQUIT itself! (%s matches local server name)", parameters[0].c_str()));
return CMD_FAILURE;
}
diff --git a/src/users.cpp b/src/users.cpp
index 11f103e9d..db5f8a74d 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -830,6 +830,16 @@ void User::WriteFrom(User *user, const char* text, ...)
this->WriteFrom(user, textbuffer);
}
+void User::WriteRemoteNotice(const std::string& text)
+{
+ ServerInstance->PI->SendUserNotice(this, text);
+}
+
+void LocalUser::WriteRemoteNotice(const std::string& text)
+{
+ WriteNotice(text);
+}
+
namespace
{
class WriteCommonRawHandler : public User::ForEachNeighborHandler