/*
* InspIRCd -- Internet Relay Chat Daemon
*
- * Copyright (C) 2016 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2018, 2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2018 Attila Molnar <attilamolnar@hush.com>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
* @param user User to send the numeric to. May be unregistered, must remain valid as long as this object is alive.
*/
Numeric(const ::Numeric::Numeric& num, User* user)
- : ClientProtocol::Message(NULL, (num.GetServer() ? num.GetServer()->GetName() : ServerInstance->Config->ServerName))
+ : ClientProtocol::Message(NULL, (num.GetServer() ? num.GetServer() : ServerInstance->FakeClient->server)->GetName())
{
if (user->registered & REG_NICK)
PushParamRef(user->nick);
* @param target Target string, must stay valid as long as this object is alive.
*/
Numeric(const ::Numeric::Numeric& num, const std::string& target)
- : ClientProtocol::Message(NULL, (num.GetServer() ? num.GetServer()->GetName() : ServerInstance->Config->ServerName))
+ : ClientProtocol::Message(NULL, (num.GetServer() ? num.GetServer() : ServerInstance->FakeClient->server)->GetName())
{
PushParamRef(target);
InitFromNumeric(num);
* @param num Numeric number.
*/
Numeric(unsigned int num)
- : ClientProtocol::Message(NULL, ServerInstance->Config->ServerName)
+ : ClientProtocol::Message(NULL, ServerInstance->Config->GetServerName())
{
InitCommand(num);
PushParam("*");
/** Constructor, string source, string target, copies text.
* @param source Source user.
- * @param targetuser Target user.
+ * @param target Target string.
* @param text Privmsg text, will be copied.
* @param mt Message type.
+ * @param status Prefix character for status messages. If non-zero the message is a status message. Optional, defaults to 0.
*/
- Privmsg(const std::string& source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG)
+ Privmsg(const std::string& source, const std::string& target, const std::string& text, MessageType mt = MSG_PRIVMSG, char status = 0)
: ClientProtocol::Message(CommandStrFromMsgType(mt), source)
{
- PushParam(target);
+ if (status)
+ {
+ std::string rawtarget(1, status);
+ rawtarget.append(target);
+ PushParam(rawtarget);
+ }
+ else
+ {
+ PushParam(target);
+ }
PushParam(text);
}
/** Constructor, user source, string target, copies text.
* @param source Source user.
- * @param targetuser Target string.
+ * @param target Target string.
* @param text Privmsg text, will not be copied.
* @param mt Message type.
*/
/** Constructor, string source, string target, does not copy text.
* @param source Source string.
- * @param targetuser Target string.
+ * @param target Target string.
* @param text Privmsg text, will not be copied.
* @param mt Message type.
*/
/** Constructor, string source, user target, does not copy text.
* @param source Source string.
- * @param targetchan Target user.
+ * @param targetuser Target user.
* @param text Privmsg text, will not be copied.
* @param mt Message type.
*/
Ping()
: ClientProtocol::Message("PING")
{
- PushParamRef(ServerInstance->Config->ServerName);
+ PushParamRef(ServerInstance->Config->GetServerName());
}
/** Constructor.
{
/** Constructor.
* @param cookie Ping cookie. Must remain valid as long as this object is alive.
+ * @param server Pinged server. Must remain valid as long as this object is alive if non-empty.
*/
- Pong(const std::string& cookie)
- : ClientProtocol::Message("PONG", ServerInstance->Config->ServerName)
+ Pong(const std::string& cookie, const std::string& server = "")
+ : ClientProtocol::Message("PONG", ServerInstance->Config->GetServerName())
{
- PushParamRef(ServerInstance->Config->ServerName);
+ PushParamRef(ServerInstance->Config->GetServerName());
+ if (!server.empty())
+ PushParamRef(server);
PushParamRef(cookie);
}
};