/*
* 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(int, const char* s)
- : owned(true)
+ : ptr(NULL)
+ , owned(true)
{
new(str) std::string(s);
}
Param(int, const std::string& s)
- : owned(true)
+ : ptr(NULL)
+ , owned(true)
{
new(str) std::string(s);
}
/** Add a parameter to the parameter list.
* @param str String to add.
- * The string will NOT be copied, it must remain alive until ClearParams() is called or until the object is destroyed.
+ * The string will NOT be copied, it must remain alive until ClearParams() is called or until the object is destroyed.
*/
void PushParamRef(const std::string& str) { params.push_back(str); }
public:
/** Constructor.
- * @param protoevent Protocol event provider the event is an instance of.
+ * @param protoeventprov Protocol event provider the event is an instance of.
*/
Event(EventProvider& protoeventprov)
: event(&protoeventprov)
}
/** Constructor.
- * @param protoevent Protocol event provider the event is an instance of.
- * @param msg Message to include in this event by default.
+ * @param protoeventprov Protocol event provider the event is an instance of.
+ * @param msg Message to include in this event by default.
*/
Event(EventProvider& protoeventprov, ClientProtocol::Message& msg)
: event(&protoeventprov)
void GetMessagesForUser(LocalUser* user, MessageList& messagelist);
};
+class ClientProtocol::MessageTagEvent
+ : public Events::ModuleEventProvider
+{
+ public:
+ MessageTagEvent(Module* mod)
+ : ModuleEventProvider(mod, "event/messagetag")
+ {
+ }
+};
+
/** Base class for message tag providers.
* All message tags belong to a message tag provider. Message tag providers can populate messages
* with tags before the message is sent and they have the job of determining whether a user should
* The default implementation does nothing.
* @param msg Message to be populated with tags.
*/
- virtual void OnClientProtocolPopulateTags(ClientProtocol::Message& msg)
+ virtual void OnPopulateTags(ClientProtocol::Message& msg)
{
}
/** Called for each tag that the server receives from a client in a message.
* @param user User that sent the tag.
* @param tagname Name of the tag.
- * @param value Value of the tag, empty string if the tag has no value. May be modified.
+ * @param tagvalue Value of the tag, empty string if the tag has no value. May be modified.
* @return MOD_RES_ALLOW to accept the tag with the value in 'value', MOD_RES_DENY to reject the tag and act as if it wasn't sent,
* MOD_RES_PASSTHRU to make no decision. If no hooks accept a tag, the tag is rejected.
* The default implementation returns MOD_RES_PASSTHRU.
*/
- virtual ModResult OnClientProtocolProcessTag(LocalUser* user, const std::string& tagname, std::string& tagvalue)
+ virtual ModResult OnProcessTag(User* user, const std::string& tagname, std::string& tagvalue)
{
return MOD_RES_PASSTHRU;
}
*/
class CoreExport ClientProtocol::Serializer : public DataProvider
{
- Events::ModuleEventProvider evprov;
+ private:
+ ClientProtocol::MessageTagEvent evprov;
/** Make a white list containing which tags a user should get.
* @param user User in question.
* @param tagname Name of the tag.
* @param tagvalue Tag value, may be empty.
* @param tags TagMap to place the tag into, if it gets accepted.
- * @return True if no error occured, false if the tag name is invalid or if this tag already exists.
+ * @return True if no error occurred, false if the tag name is invalid or if this tag already exists.
*/
bool HandleTag(LocalUser* user, const std::string& tagname, std::string& tagvalue, TagMap& tags) const;