X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_topiclock.cpp;h=c6125878455fe10ad9c095dd452b9dec5dc5eca2;hb=80e81e3b81b779901fd9d67f8ae030ee30c0bcec;hp=340fbfdec86655a96f9983015d586041032583f0;hpb=c0aba5b728b0a921d95ec120aa638dab1520b42f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_topiclock.cpp b/src/modules/m_topiclock.cpp index 340fbfdec..c61258784 100644 --- a/src/modules/m_topiclock.cpp +++ b/src/modules/m_topiclock.cpp @@ -1,7 +1,8 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2012 Attila Molnar + * Copyright (C) 2013, 2017-2019 Sadie Powell + * Copyright (C) 2012, 2014-2016 Attila Molnar * * 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 @@ -18,6 +19,12 @@ #include "inspircd.h" +enum +{ + // InspIRCd-specific. + ERR_TOPICLOCK = 744 +}; + class CommandSVSTOPIC : public Command { public: @@ -27,7 +34,7 @@ class CommandSVSTOPIC : public Command flags_needed = FLAG_SERVERONLY; } - CmdResult Handle(const std::vector ¶meters, User *user) + CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE { if (!user->server->IsULine()) { @@ -42,7 +49,7 @@ class CommandSVSTOPIC : public Command if (parameters.size() == 4) { // 4 parameter version, set all topic data on the channel to the ones given in the parameters - time_t topicts = ConvToInt(parameters[1]); + time_t topicts = ConvToNum(parameters[1]); if (!topicts) { ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Received SVSTOPIC with a 0 topicts, dropped."); @@ -61,12 +68,13 @@ class CommandSVSTOPIC : public Command return CMD_SUCCESS; } - RouteDescriptor GetRouting(User* user, const std::vector& parameters) + RouteDescriptor GetRouting(User* user, const Params& parameters) CXX11_OVERRIDE { return ROUTE_BROADCAST; } }; +// TODO: add a BoolExtItem to replace this. class FlagExtItem : public ExtensionItem { public: @@ -80,15 +88,18 @@ class FlagExtItem : public ExtensionItem return (get_raw(container) != NULL); } - std::string serialize(SerializeFormat format, const Extensible* container, void* item) const + std::string ToHuman(const Extensible* container, void* item) const CXX11_OVERRIDE { - if (format == FORMAT_USER) - return "true"; + // Make the human version more readable. + return "true"; + } + std::string ToNetwork(const Extensible* container, void* item) const CXX11_OVERRIDE + { return "1"; } - void unserialize(SerializeFormat format, Extensible* container, const std::string& value) + void FromNetwork(Extensible* container, const std::string& value) CXX11_OVERRIDE { if (value == "1") set_raw(container, this); @@ -109,7 +120,7 @@ class FlagExtItem : public ExtensionItem unset_raw(container); } - void free(void* item) + void free(Extensible* container, void* item) CXX11_OVERRIDE { // nothing to free } @@ -131,7 +142,7 @@ class ModuleTopicLock : public Module // Only fired for local users currently, but added a check anyway if ((IS_LOCAL(user)) && (topiclock.get(chan))) { - user->WriteNumeric(744, chan->name, "TOPIC cannot be changed due to topic lock being active on the channel"); + user->WriteNumeric(ERR_TOPICLOCK, chan->name, "TOPIC cannot be changed due to topic lock being active on the channel"); return MOD_RES_DENY; } @@ -140,7 +151,7 @@ class ModuleTopicLock : public Module Version GetVersion() CXX11_OVERRIDE { - return Version("Implements server-side topic locks and the server-to-server command SVSTOPIC", VF_COMMON | VF_VENDOR); + return Version("Allows services to lock the channel topic so that it can not be changed.", VF_COMMON | VF_VENDOR); } };