X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_chanhistory.cpp;h=08f4291c916c73b452a484a342a69b219c7d2e76;hb=ec6955f28ba9423828ac24ef83caee09ffa6b52c;hp=fe4bd94777374897551940fef5c0b058e43d4b0b;hpb=b2ac8cc0a6405946a388b80df3be21bc276a61f3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_chanhistory.cpp b/src/modules/m_chanhistory.cpp index fe4bd9477..08f4291c9 100644 --- a/src/modules/m_chanhistory.cpp +++ b/src/modules/m_chanhistory.cpp @@ -20,6 +20,7 @@ #include "inspircd.h" #include "modules/ircv3_servertime.h" #include "modules/ircv3_batch.h" +#include "modules/server.h" struct HistoryItem { @@ -47,20 +48,6 @@ struct HistoryList class HistoryMode : public ParamMode > { - bool IsValidDuration(const std::string& duration) - { - for (std::string::const_iterator i = duration.begin(); i != duration.end(); ++i) - { - unsigned char c = *i; - if (((c >= '0') && (c <= '9')) || (c == 's') || (c == 'S')) - continue; - - if (duration_multi[c] == 1) - return false; - } - return true; - } - public: unsigned int maxlines; HistoryMode(Module* Creator) @@ -78,7 +65,7 @@ class HistoryMode : public ParamMode > } std::string duration(parameter, colon+1); - if ((IS_LOCAL(source)) && ((duration.length() > 10) || (!IsValidDuration(duration)))) + if ((IS_LOCAL(source)) && ((duration.length() > 10) || (!InspIRCd::IsValidDuration(duration)))) { source->WriteNumeric(Numerics::InvalidModeParameter(channel, this, parameter)); return MODEACTION_DENY; @@ -118,7 +105,9 @@ class HistoryMode : public ParamMode > } }; -class ModuleChanHistory : public Module +class ModuleChanHistory + : public Module + , public ServerEventListener { HistoryMode m; bool sendnotice; @@ -131,7 +120,8 @@ class ModuleChanHistory : public Module public: ModuleChanHistory() - : m(this) + : ServerEventListener(this) + , m(this) , botmode(this, "bot") , batchcap(this) , batchmanager(this) @@ -148,6 +138,11 @@ class ModuleChanHistory : public Module dobots = tag->getBool("bots", true); } + ModResult OnBroadcastMessage(Channel* channel, const Server* server) CXX11_OVERRIDE + { + return channel->IsModeSet(m) ? MOD_RES_ALLOW : MOD_RES_PASSTHRU; + } + void OnUserPostMessage(User* user, const MessageTarget& target, const MessageDetails& details) CXX11_OVERRIDE { if ((target.type == MessageTarget::TYPE_CHANNEL) && (target.status == 0) && (details.type == MSG_PRIVMSG))