]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Replace OnRehash() with ReadConfig() that is called on boot, on module load and on...
authorattilamolnar <attilamolnar@hush.com>
Fri, 16 Aug 2013 10:10:55 +0000 (12:10 +0200)
committerattilamolnar <attilamolnar@hush.com>
Fri, 30 Aug 2013 11:15:10 +0000 (13:15 +0200)
This eliminates the need for calling OnRehash() in init()

81 files changed:
include/configreader.h
include/modules.h
include/typedefs.h
src/commands/cmd_dns.cpp
src/commands/cmd_whowas.cpp
src/configreader.cpp
src/listmode.cpp
src/modmanager_dynamic.cpp
src/modmanager_static.cpp
src/modules.cpp
src/modules/extra/m_ldapauth.cpp
src/modules/extra/m_ldapoper.cpp
src/modules/extra/m_mssql.cpp
src/modules/extra/m_mysql.cpp
src/modules/extra/m_pgsql.cpp
src/modules/extra/m_regex_posix.cpp
src/modules/extra/m_regex_stdlib.cpp
src/modules/extra/m_sqlite3.cpp
src/modules/extra/m_ssl_gnutls.cpp
src/modules/extra/m_ssl_openssl.cpp
src/modules/m_alias.cpp
src/modules/m_auditorium.cpp
src/modules/m_autoop.cpp
src/modules/m_banexception.cpp
src/modules/m_blockamsg.cpp
src/modules/m_blockcaps.cpp
src/modules/m_callerid.cpp
src/modules/m_censor.cpp
src/modules/m_cgiirc.cpp
src/modules/m_chanfilter.cpp
src/modules/m_chanhistory.cpp
src/modules/m_chanlog.cpp
src/modules/m_channames.cpp
src/modules/m_chghost.cpp
src/modules/m_cloaking.cpp
src/modules/m_conn_waitpong.cpp
src/modules/m_connectban.cpp
src/modules/m_connflood.cpp
src/modules/m_dccallow.cpp
src/modules/m_deaf.cpp
src/modules/m_denychans.cpp
src/modules/m_dnsbl.cpp
src/modules/m_exemptchanops.cpp
src/modules/m_filter.cpp
src/modules/m_helpop.cpp
src/modules/m_hidechans.cpp
src/modules/m_hostchange.cpp
src/modules/m_httpd_acl.cpp
src/modules/m_ident.cpp
src/modules/m_inviteexception.cpp
src/modules/m_ircv3.cpp
src/modules/m_jumpserver.cpp
src/modules/m_knock.cpp
src/modules/m_lockserv.cpp
src/modules/m_maphide.cpp
src/modules/m_nationalchars.cpp
src/modules/m_nonicks.cpp
src/modules/m_ojoin.cpp
src/modules/m_operjoin.cpp
src/modules/m_operlog.cpp
src/modules/m_opermotd.cpp
src/modules/m_override.cpp
src/modules/m_passforward.cpp
src/modules/m_password_hash.cpp
src/modules/m_permchannels.cpp
src/modules/m_remove.cpp
src/modules/m_repeat.cpp
src/modules/m_restrictchans.cpp
src/modules/m_rline.cpp
src/modules/m_sasl.cpp
src/modules/m_securelist.cpp
src/modules/m_sethost.cpp
src/modules/m_shun.cpp
src/modules/m_silence.cpp
src/modules/m_spanningtree/main.cpp
src/modules/m_spanningtree/main.h
src/modules/m_spanningtree/utils.cpp
src/modules/m_sqlauth.cpp
src/modules/m_sqloper.cpp
src/modules/m_watch.cpp
src/modules/m_xline_db.cpp

index 6786604b50acd72aa8a3efacc8545b2c66277959..0fbf234c330b5c0a41856eb45d886c7eb266f9e7 100644 (file)
@@ -614,3 +614,14 @@ class CoreExport ConfigReaderThread : public Thread
        void Finish();
        bool IsDone() { return done; }
 };
+
+class CoreExport ConfigStatus
+{
+ public:
+       User* const srcuser;
+
+       ConfigStatus(User* user = NULL)
+               : srcuser(user)
+       {
+       }
+};
index d13ff58b0cb8c5e2b9822423e239e080cb7ab9fa..68044ae89ad5a44d9f455c66d0548a1e4b14f6e1 100644 (file)
@@ -250,7 +250,7 @@ enum Priority { PRIORITY_FIRST, PRIORITY_LAST, PRIORITY_BEFORE, PRIORITY_AFTER }
 enum Implementation
 {
        I_BEGIN,
-       I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart, I_OnRehash,
+       I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart,
        I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper, I_OnInfo, I_OnWhois,
        I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick,
        I_OnUserMessage, I_OnMode, I_OnGetServerDescription, I_OnSyncUser,
@@ -319,6 +319,13 @@ class CoreExport Module : public classbase, public usecountbase
        {
        }
 
+       /** This method is called when you should reload module specific configuration:
+        * on boot, on a /REHASH and on module load.
+        * @param status The current status, can be inspected for more information;
+        * also used for reporting configuration errors and warnings.
+        */
+       virtual void ReadConfig(ConfigStatus& status);
+
        /** Returns the version number of a Module.
         * The method should return a Version object with its version information assigned via
         * Version::Version
@@ -409,14 +416,6 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual void OnModuleRehash(User* user, const std::string &parameter);
 
-       /** Called on rehash.
-        * This method is called after a rehash has completed. You should use it to reload any module
-        * configuration from the main configuration file.
-        * @param user The user that performed the rehash, if it was initiated by a user and that user
-        * is still connected.
-        */
-       virtual void OnRehash(User* user);
-
        /** Called whenever a snotice is about to be sent to a snomask.
         * snomask and type may both be modified; the message may not.
         * @param snomask The snomask the message is going to (e.g. 'A')
@@ -1191,7 +1190,9 @@ class CoreExport ModuleManager
 
        /** Internal unload module hook */
        bool CanUnload(Module*);
+
  public:
+       typedef std::map<std::string, Module*> ModuleMap;
 
        /** Event handler hooks.
         * This needs to be public to be used by FOREACH_MOD and friends.
@@ -1353,6 +1354,11 @@ class CoreExport ModuleManager
         * @return The list of module names
         */
        const std::vector<std::string> GetAllModuleNames(int filter);
+
+       /** Get a map of all loaded modules keyed by their name
+        * @return A ModuleMap containing all loaded modules
+        */
+       const ModuleMap& GetModules() const { return Modules; }
 };
 
 /** Do not mess with these functions unless you know the C preprocessor
index c38f89d4d353b952ab901cf87875a92e4bd3930d..98ea4a0b922b12ce755fb4626ee0c6d23cef07d9 100644 (file)
@@ -25,6 +25,7 @@ class BanCacheManager;
 class BufferedSocket;
 class Channel;
 class Command;
+class ConfigStatus;
 class ConfigTag;
 class Extensible;
 class FakeUser;
index 2b7114128858ef9d01ed8ae8af8c87622784619d..f97d687832f0fefeee3a5a77c02bc1b93d63b5a4 100644 (file)
@@ -798,11 +798,9 @@ class ModuleDNS : public Module
        void init()
        {
                ServerInstance->Modules->AddService(this->manager);
-
-               this->OnRehash(NULL);
        }
 
-       void OnRehash(User* user)
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                std::string oldserver = DNSServer;
                DNSServer = ServerInstance->Config->ConfValue("dns")->getString("server");
index 75d1ee8ff449416766f0ebdf164c267e05c79df9..ea1020fbc6f798807601e97df7d199a864594bb0 100644 (file)
@@ -231,7 +231,6 @@ class ModuleWhoWas : public Module
        void init()
        {
                ServerInstance->Modules->AddService(cmd);
-               OnRehash(NULL);
        }
 
        void OnGarbageCollect()
@@ -253,7 +252,7 @@ class ModuleWhoWas : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User* user)
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("whowas");
                unsigned int NewGroupSize = tag->getInt("groupsize", 10, 0, 10000);
index 957adc829f69bcbb2ebf1f0614c61dd299a8fd53..a080476782df0f948f318751449309ed497d114e 100644 (file)
@@ -837,7 +837,12 @@ void ConfigReaderThread::Finish()
                static_cast<ListModeBase*>(*ban)->DoRehash();
                Config->ApplyDisabledCommands(Config->DisabledCommands);
                User* user = ServerInstance->FindNick(TheUserUID);
-               FOREACH_MOD(OnRehash, (user));
+
+               ConfigStatus status(user);
+               const ModuleManager::ModuleMap& mods = ServerInstance->Modules->GetModules();
+               for (ModuleManager::ModuleMap::const_iterator i = mods.begin(); i != mods.end(); ++i)
+                       i->second->ReadConfig(status);
+
                ServerInstance->ISupport.Build();
 
                ServerInstance->Logs->CloseLogs();
index fb76beab210cc4c8a00379e9083d644078d54b81..a377f19e3293a276d2ab7e509767bdd611c61ecd 100644 (file)
@@ -92,7 +92,6 @@ void ListModeBase::DoRehash()
 void ListModeBase::DoImplements(Module* m)
 {
        ServerInstance->Modules->AddService(extItem);
-       this->DoRehash();
 }
 
 unsigned int ListModeBase::FindLimit(const std::string& channame)
index 750a1c448002c8cc17b416cdf7618b8e8160ab22..64d2bf69ccfa84bb7adff8e45ea380271648bf88 100644 (file)
@@ -74,8 +74,11 @@ bool ModuleManager::Load(const std::string& filename, bool defer)
                        }
                        else
                        {
+                               ConfigStatus confstatus;
+
                                AttachAll(newmod);
                                newmod->init();
+                               newmod->ReadConfig(confstatus);
 
                                Version v = newmod->GetVersion();
                                ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "New module introduced: %s (Module version %s)%s",
@@ -228,6 +231,8 @@ void ModuleManager::LoadAll()
                }
        }
 
+       ConfigStatus confstatus;
+
        for(std::map<std::string, Module*>::iterator i = Modules.begin(); i != Modules.end(); i++)
        {
                Module* mod = i->second;
@@ -236,6 +241,7 @@ void ModuleManager::LoadAll()
                        ServerInstance->Logs->Log("MODULE", LOG_DEBUG, "Initializing %s", i->first.c_str());
                        AttachAll(mod);
                        mod->init();
+                       mod->ReadConfig(confstatus);
                }
                catch (CoreException& modexcept)
                {
index 321bf520dd7833ff7f5448a65e893ed2b94792c3..eeb8b6f96c2634698355c0b10ee8bf611d3d0679 100644 (file)
@@ -102,8 +102,11 @@ bool ModuleManager::Load(const std::string& name, bool defer)
                }
                else
                {
+                       ConfigStatus confstatus;
+
                        AttachAll(mod);
                        mod->init();
+                       mod->ReadConfig(confstatus);
                }
        }
        catch (CoreException& modexcept)
@@ -203,6 +206,8 @@ void ModuleManager::LoadAll()
                }
        }
 
+       ConfigStatus confstatus;
+
        for(std::map<std::string, Module*>::iterator i = Modules.begin(); i != Modules.end(); i++)
        {
                Module* mod = i->second;
@@ -210,6 +215,7 @@ void ModuleManager::LoadAll()
                {
                        AttachAll(mod);
                        mod->init();
+                       mod->ReadConfig(confstatus);
                }
                catch (CoreException& modexcept)
                {
index 47c99408838ee58136c549f164f6283ee856a8d6..d581b76a5204c35cbc6b60917db2e0e369406c54 100644 (file)
@@ -81,6 +81,7 @@ void Module::DetachEvent(Implementation i)
        ServerInstance->Modules->Detach(i, this);
 }
 
+void           Module::ReadConfig(ConfigStatus& status) { }
 ModResult      Module::OnSendSnotice(char &snomask, std::string &type, const std::string &message) { DetachEvent(I_OnSendSnotice); return MOD_RES_PASSTHRU; }
 void           Module::OnUserConnect(LocalUser*) { DetachEvent(I_OnUserConnect); }
 void           Module::OnUserQuit(User*, const std::string&, const std::string&) { DetachEvent(I_OnUserQuit); }
@@ -90,7 +91,6 @@ void          Module::OnPostJoin(Membership*) { DetachEvent(I_OnPostJoin); }
 void           Module::OnUserPart(Membership*, std::string&, CUList&) { DetachEvent(I_OnUserPart); }
 void           Module::OnPreRehash(User*, const std::string&) { DetachEvent(I_OnPreRehash); }
 void           Module::OnModuleRehash(User*, const std::string&) { DetachEvent(I_OnModuleRehash); }
-void           Module::OnRehash(User*) { DetachEvent(I_OnRehash); }
 ModResult      Module::OnUserPreJoin(LocalUser*, Channel*, const std::string&, std::string&, const std::string&) { DetachEvent(I_OnUserPreJoin); return MOD_RES_PASSTHRU; }
 void           Module::OnMode(User*, User*, Channel*, const std::vector<std::string>&, const std::vector<TranslateType>&) { DetachEvent(I_OnMode); }
 void           Module::OnOper(User*, const std::string&) { DetachEvent(I_OnOper); }
index 517a6d395f03b4276316ab35a0eb9eea3ecfa756..827179f84ebb0c225d39ff262cc1c5baf82968c5 100644 (file)
@@ -122,7 +122,6 @@ public:
        {
                ServerInstance->Modules->AddService(ldapAuthed);
                ServerInstance->Modules->AddService(ldapVhost);
-               OnRehash(NULL);
        }
 
        ~ModuleLDAPAuth()
@@ -131,7 +130,7 @@ public:
                        ldap_unbind_ext(conn, NULL, NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("ldapauth");
                whitelistedcidrs.clear();
index af7b48d070b5ecb092d215b1d383b5e00ec3527e..67ba9a7e5e3ef17f41e44338d240e0234b22a395 100644 (file)
@@ -97,18 +97,13 @@ public:
        {
        }
 
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
        ~ModuleLDAPAuth()
        {
                if (conn)
                        ldap_unbind_ext(conn, NULL, NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("ldapoper");
 
index e6bac038cf65c45c3bc91cdc4a33e1591ed574ba..84e02be98ca8351bd837c9ebe5091c385193dd4c 100644 (file)
@@ -779,7 +779,7 @@ class ModuleMsSQL : public Module
                connections.clear();
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                queryDispatcher->LockQueue();
                ReadConf();
index 2d20a82ab1913ef891d2e2a8409d55b7e16b211d..3aed094164321b7dcdde6be982fc041bfb9411f8 100644 (file)
@@ -108,7 +108,7 @@ class ModuleSQL : public Module
        ModuleSQL();
        void init() CXX11_OVERRIDE;
        ~ModuleSQL();
-       void OnRehash(User* user) CXX11_OVERRIDE;
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE;
        void OnUnloadModule(Module* mod) CXX11_OVERRIDE;
        Version GetVersion() CXX11_OVERRIDE;
 };
@@ -381,8 +381,6 @@ void ModuleSQL::init()
 {
        Dispatcher = new DispatcherThread(this);
        ServerInstance->Threads->Start(Dispatcher);
-
-       OnRehash(NULL);
 }
 
 ModuleSQL::~ModuleSQL()
@@ -399,7 +397,7 @@ ModuleSQL::~ModuleSQL()
        }
 }
 
-void ModuleSQL::OnRehash(User* user)
+void ModuleSQL::ReadConfig(ConfigStatus& status)
 {
        ConnMap conns;
        ConfigTagList tags = ServerInstance->Config->ConfTags("database");
index 2300c9d5b2dc2b9505a2c58da165bc04adf4eb18..1ed5be6f0dfbc776e9be72ebb740e7a2f5e1916d 100644 (file)
@@ -508,18 +508,13 @@ class ModulePgSQL : public Module
        {
        }
 
-       void init() CXX11_OVERRIDE
-       {
-               ReadConf();
-       }
-
        ~ModulePgSQL()
        {
                delete retimer;
                ClearAllConnections();
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ReadConf();
        }
index 935cdbf92907edf2c6ac2d8017e9d6317df47454..bde5c39475ec428452b32fa7ab5f7b51452232f3 100644 (file)
@@ -79,7 +79,6 @@ class ModuleRegexPOSIX : public Module
        ModuleRegexPOSIX() : ref(this)
        {
                ServerInstance->Modules->AddService(ref);
-               OnRehash(NULL);
        }
 
        Version GetVersion() CXX11_OVERRIDE
@@ -87,7 +86,7 @@ class ModuleRegexPOSIX : public Module
                return Version("Regex Provider Module for POSIX Regular Expressions", VF_VENDOR);
        }
 
-       void OnRehash(User* u) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ref.extended = ServerInstance->Config->ConfValue("posix")->getBool("extended");
        }
index 5ec358d58fffb5da8517476450a30c6254cafd8a..2f75a60a870302a0812018329655832f65d2e511 100644 (file)
@@ -62,7 +62,6 @@ public:
        ModuleRegexStd() : ref(this)
        {
                ServerInstance->Modules->AddService(ref);
-               OnRehash(NULL);
        }
 
        Version GetVersion() CXX11_OVERRIDE
@@ -70,7 +69,7 @@ public:
                return Version("Regex Provider Module for std::regex", VF_VENDOR);
        }
 
-       void OnRehash(User* u) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* Conf = ServerInstance->Config->ConfValue("stdregex");
                std::string regextype = Conf->getString("type", "ecmascript");
index 54a2788ebc1a780c43e9ac95e6980cc488b9a275..1c213e8e074550ca2b8d1b2d8287eb1fb1845109 100644 (file)
@@ -202,11 +202,6 @@ class ModuleSQLite3 : public Module
        ConnMap conns;
 
  public:
-       void init() CXX11_OVERRIDE
-       {
-               ReadConf();
-       }
-
        ~ModuleSQLite3()
        {
                ClearConns();
@@ -223,7 +218,7 @@ class ModuleSQLite3 : public Module
                conns.clear();
        }
 
-       void ReadConf()
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ClearConns();
                ConfigTagList tags = ServerInstance->Config->ConfTags("database");
@@ -237,11 +232,6 @@ class ModuleSQLite3 : public Module
                }
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               ReadConf();
-       }
-
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("sqlite3 provider", VF_VENDOR);
index 53fc38ec0ba5ea2035e5fa81ac56486488b95ab7..9f21d6d281397d2fb235a1caf43a1f724d3b4fa9 100644 (file)
@@ -638,7 +638,7 @@ class ModuleSSLGnuTLS : public Module
                ServerInstance->Modules->AddService(starttls);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                sslports.clear();
 
@@ -687,7 +687,6 @@ class ModuleSSLGnuTLS : public Module
                std::string certfile;
                std::string cafile;
                std::string crlfile;
-               OnRehash(user);
 
                ConfigTag* Conf = ServerInstance->Config->ConfValue("gnutls");
 
index 29c3568ef117c93c7289bbefb5aad6298c39e6bc..0957b5912f16c7a444b01f01e455b211b64eac84 100644 (file)
@@ -502,7 +502,7 @@ class ModuleSSLOpenSSL : public Module
                }
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                sslports.clear();
 
@@ -550,7 +550,6 @@ class ModuleSSLOpenSSL : public Module
                std::string certfile;
                std::string cafile;
                std::string dhfile;
-               OnRehash(user);
 
                ConfigTag* conf = ServerInstance->Config->ConfValue("openssl");
 
index 4d942854cbdeff85c5aa5dd2093a205a1ea37643..7d2eabd15dfd467bb9aaa509e1a2277ee7e5e5cb 100644 (file)
@@ -69,7 +69,8 @@ class ModuleAlias : public Module
        bool AllowBots;
        UserModeReference botmode;
 
-       void ReadAliases()
+ public:
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* fantasy = ServerInstance->Config->ConfValue("fantasy");
                AllowBots = fantasy->getBool("allowbots", false);
@@ -96,17 +97,11 @@ class ModuleAlias : public Module
                }
        }
 
- public:
        ModuleAlias()
                : botmode(this, "bot")
        {
        }
 
-       void init() CXX11_OVERRIDE
-       {
-               ReadAliases();
-       }
-
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Provides aliases of commands.", VF_VENDOR);
@@ -369,11 +364,6 @@ class ModuleAlias : public Module
                ServerInstance->Parser->CallHandler(command, pars, user);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               ReadAliases();
-       }
-
        void Prioritize()
        {
                // Prioritise after spanningtree so that channel aliases show the alias before the effects.
index af828c130d42ff1dd8874f6eb64f25ff694638e0..00227c66e8e9e5e8dbd8f39db440ac50861290d6 100644 (file)
@@ -54,11 +54,9 @@ class ModuleAuditorium : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(aum);
-
-               OnRehash(NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("auditorium");
                OpsVisible = tag->getBool("opvisible");
index 6bc5f464c375d6697a3ce93bab938fba04ec1826..32e0971882c012f9a8df32b45ea11f7a34caa8fa 100644 (file)
@@ -127,7 +127,7 @@ class ModuleAutoOp : public Module
                mh.DoSyncChannel(chan, proto, opaque);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                mh.DoRehash();
        }
index e142af0debb80dcbab223344c4169a24374ac46b..ad42449451c665dff817278a166af03e597bc226 100644 (file)
@@ -117,7 +117,7 @@ class ModuleBanException : public Module
                be.DoSyncChannel(chan, proto, opaque);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                be.DoRehash();
        }
index b71247d71bfd658c9196543249079b4c53e98e5b..963f94fc299a45fc3baf7b32af7058ead25c6335 100644 (file)
@@ -59,7 +59,6 @@ class ModuleBlockAmsg : public Module
 
        void init() CXX11_OVERRIDE
        {
-               this->OnRehash(NULL);
                ServerInstance->Modules->AddService(blockamsg);
        }
 
@@ -68,7 +67,7 @@ class ModuleBlockAmsg : public Module
                return Version("Attempt to block /amsg, at least some of the irritating mIRC scripts.",VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("blockamsg");
                ForgetDelay = tag->getInt("delay", -1);
index f80c6d16dc2c53bef549b4767027794cfa431fa7..c3c8b2297bab151937b7ba073d08a92ca48faa51 100644 (file)
@@ -45,7 +45,6 @@ public:
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(bc);
        }
 
@@ -54,11 +53,6 @@ public:
                tokens["EXTBAN"].push_back('B');
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               ReadConf();
-       }
-
        ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE
        {
                if (target_type == TYPE_CHANNEL)
@@ -101,7 +95,7 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
-       void ReadConf()
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("blockcaps");
                percent = tag->getInt("percent", 100, 1, 100);
index 3d2394fb1a8e3f3f34279bab308ce187b893be77..de74773ad5784c9d9ff8556bf0868805b25eab4f 100644 (file)
@@ -363,8 +363,6 @@ public:
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
-
                ServerInstance->Modules->AddService(myumode);
                ServerInstance->Modules->AddService(cmd);
                ServerInstance->Modules->AddService(cmd.extInfo);
@@ -427,7 +425,7 @@ public:
                RemoveFromAllAccepts(user);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("callerid");
                cmd.maxaccepts = tag->getInt("maxaccepts", 16);
index 747c16d83a1cf98f1b70158ef68829b8ce18a709..fe0321ab1db2c3b53acfd00e2fc59dde91d0bbe5 100644 (file)
@@ -55,9 +55,6 @@ class ModuleCensor : public Module
 
        void init() CXX11_OVERRIDE
        {
-               /* Read the configuration file on startup.
-                */
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(cu);
                ServerInstance->Modules->AddService(cc);
        }
@@ -103,7 +100,7 @@ class ModuleCensor : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                /*
                 * reload our config file on rehash - we must destroy and re-allocate the classes
index 2352fa2171ef0a99fb2e9de88d5bfa859b56fe69..9fbc77850e82e4b089a7bea8f27f7bc958c42d91 100644 (file)
@@ -236,12 +236,11 @@ public:
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServiceProvider* providerlist[] = { &cmd, &cmd.realhost, &cmd.realip, &cmd.webirc_hostname, &cmd.webirc_ip, &waiting };
                ServerInstance->Modules->AddServices(providerlist, sizeof(providerlist)/sizeof(ServiceProvider*));
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                cmd.Hosts.clear();
 
index 38ee14e60a2271c40a49c4cf0d40db873a69d4e0..3a7ad90572a402ade49396602e23165ea3c0b99c 100644 (file)
@@ -80,11 +80,9 @@ class ModuleChanFilter : public Module
                ServerInstance->Modules->AddService(cf);
 
                cf.DoImplements(this);
-
-               OnRehash(NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                hidemask = ServerInstance->Config->ConfValue("chanfilter")->getBool("hidemask");
                cf.DoRehash();
index f1f9ed614907e79f401f5ec67f67853a402f9ad4..0e0841f6760a916d051afe2289882a764e4fe868 100644 (file)
@@ -118,11 +118,9 @@ class ModuleChanHistory : public Module
        {
                ServerInstance->Modules->AddService(m);
                ServerInstance->Modules->AddService(m.ext);
-
-               OnRehash(NULL);
        }
 
-       void OnRehash(User*) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("chanhistory");
                m.maxlines = tag->getInt("maxlines", 50);
index dc5750ba66ff95be4d6aadbe470601adc8733302..736285be8ac5c3afecd53400dcf2d0fee1913efd 100644 (file)
@@ -29,12 +29,7 @@ class ModuleChanLog : public Module
        ChanLogTargets logstreams;
 
  public:
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
-       void OnRehash(User *user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                std::string snomasks;
                std::string channel;
index fcb2ef6d74d7fda8d38bcfbe0bb34138cb7ca19e..8b050df2b964193ef8bc3efcb799cf60b1551eb3 100644 (file)
@@ -62,7 +62,6 @@ class ModuleChannelNames : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->IsChannel = &myhandler;
-               OnRehash(NULL);
        }
 
        void ValidateChans()
@@ -102,7 +101,7 @@ class ModuleChannelNames : public Module
                badchan = false;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("channames");
                std::string denyToken = tag->getString("denyrange");
index 664508301d5f3695e762bc8fc49759b4c78bb59f..4d8223d137d29cdcad7dc48cb964478b232cc746 100644 (file)
@@ -96,11 +96,10 @@ class ModuleChgHost : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(cmd);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                std::string hmap = ServerInstance->Config->ConfValue("hostname")->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789");
 
index 4e203d14c97a8079c06b946d5ef6196ef9a0ee37..bef4e94b82ab2982937dcb85cd0541238a640dda 100644 (file)
@@ -148,8 +148,6 @@ class ModuleCloaking : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
-
                ServerInstance->Modules->AddService(cu);
                ServerInstance->Modules->AddService(ck);
                ServerInstance->Modules->AddService(cu.ext);
@@ -331,7 +329,7 @@ class ModuleCloaking : public Module
                return Version("Provides masking of user hostnames", VF_COMMON|VF_VENDOR, testcloak);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("cloak");
                prefix = tag->getString("prefix");
index c15205df377a8b102ad487c60b5c0860f5334989..76f41c4bf7919f7377e150293ca2285e93a093d0 100644 (file)
@@ -39,10 +39,9 @@ class ModuleWaitPong : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(ext);
-               OnRehash(NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("waitpong");
                sendsnotice = tag->getBool("sendsnotice", true);
index 227373a36443ea12cd2484756134334a320d2e0b..39639927ce4dd6b81e95d85a5c758dd37f6b8694 100644 (file)
@@ -29,17 +29,12 @@ class ModuleConnectBan : public Module
        unsigned int ipv6_cidr;
 
  public:
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Throttles the connections of IP ranges who try to connect flood.", VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("connectban");
 
index 23b570bf6007b85af20998d66b05be65584742b6..2ab906e27c42d1e2f34b583dfaf0898e8b4f3314 100644 (file)
@@ -36,17 +36,12 @@ public:
        {
        }
 
-       void init() CXX11_OVERRIDE
-       {
-               InitConf();
-       }
-
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Connection throttle", VF_VENDOR);
        }
 
-       void InitConf()
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                /* read configuration variables */
                ConfigTag* tag = ServerInstance->Config->ConfValue("connflood");
@@ -109,12 +104,6 @@ public:
                }
                return MOD_RES_PASSTHRU;
        }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               InitConf();
-       }
-
 };
 
 MODULE_INIT(ModuleConnFlood)
index d65537537548490a654fd8d467dbaee9802d3c75..169ba720326108dd1d22595a727cc170c121dc16 100644 (file)
@@ -258,12 +258,6 @@ class ModuleDCCAllow : public Module
                ext = new SimpleExtItem<dccallowlist>("dccallow", this);
                ServerInstance->Modules->AddService(*ext);
                ServerInstance->Modules->AddService(cmd);
-               ReadFileConf();
-       }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               ReadFileConf();
        }
 
        void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message) CXX11_OVERRIDE
@@ -453,7 +447,7 @@ class ModuleDCCAllow : public Module
                }
        }
 
-       void ReadFileConf()
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                bfl.clear();
                ConfigTagList tags = ServerInstance->Config->ConfTags("banfile");
index 2e07aea4140cbc3fbdb9fdfca883702b24eec833..3fdd2533eae9c2da8077b10b6fd5c7931aa1759b 100644 (file)
@@ -56,11 +56,9 @@ class ModuleDeaf : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(m1);
-
-               OnRehash(NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("deaf");
                deaf_bypasschars = tag->getString("bypasschars");
index 237447ac7dfd915a4a2aca69e14f48bcb0e2f0de..34b2fedd510d6c8f641cbb4875119954cf3832dc 100644 (file)
@@ -32,7 +32,7 @@ class ModuleDenyChannels : public Module
        {
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                /* check for redirect validity and loops/chains */
                ConfigTagList tags = ServerInstance->Config->ConfTags("badchan");
@@ -46,8 +46,8 @@ class ModuleDenyChannels : public Module
 
                                if (!ServerInstance->IsChannel(redirect))
                                {
-                                       if (user)
-                                               user->WriteNotice("Invalid badchan redirect '" + redirect + "'");
+                                       if (status.srcuser)
+                                               status.srcuser->WriteNotice("Invalid badchan redirect '" + redirect + "'");
                                        throw ModuleException("Invalid badchan redirect, not a channel");
                                }
 
@@ -66,8 +66,8 @@ class ModuleDenyChannels : public Module
                                                if (!goodchan)
                                                {
                                                        /* <badchan:redirect> is a badchan */
-                                                       if (user)
-                                                               user->WriteNotice("Badchan " + name + " redirects to badchan " + redirect);
+                                                       if (status.srcuser)
+                                                               status.srcuser->WriteNotice("Badchan " + name + " redirects to badchan " + redirect);
                                                        throw ModuleException("Badchan redirect loop");
                                                }
                                        }
index 3c9d64d49a598ad5c7822deacdd25985465bdc48..a785678b58e765d107587cc08dfa40e9e2f5ef0a 100644 (file)
@@ -231,7 +231,6 @@ class ModuleDNSBL : public Module
 
        void init() CXX11_OVERRIDE
        {
-               ReadConf();
                ServerInstance->Modules->AddService(nameExt);
                ServerInstance->Modules->AddService(countExt);
        }
@@ -243,7 +242,7 @@ class ModuleDNSBL : public Module
 
        /** Fill our conf vector with data
         */
-       void ReadConf()
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                DNSBLConfEntries.clear();
 
@@ -315,11 +314,6 @@ class ModuleDNSBL : public Module
                }
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               ReadConf();
-       }
-
        void OnSetUserIP(LocalUser* user) CXX11_OVERRIDE
        {
                if ((user->exempt) || (user->client_sa.sa.sa_family != AF_INET) || !DNS)
index a74658bcdd031bf423e39aff0e3ee4d857d4c93b..57057c4117e4966c42cdd36517f7d9199c87760f 100644 (file)
@@ -117,8 +117,6 @@ class ModuleExemptChanOps : public Module
        {
                ServerInstance->Modules->AddService(eh.ec);
                ServerInstance->OnCheckExemption = &eh;
-
-               OnRehash(NULL);
        }
 
        ~ModuleExemptChanOps()
@@ -131,7 +129,7 @@ class ModuleExemptChanOps : public Module
                return Version("Provides the ability to allow channel operators to be exempt from certain modes.",VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                eh.ec.DoRehash();
        }
index d60dd794272fe123d85399003e75e796db808227..ec75ebebb8bde3b42ae953f6d0870a2639e14ae1 100644 (file)
@@ -183,7 +183,7 @@ class ModuleFilter : public Module
        FilterResult* FilterMatch(User* user, const std::string &text, int flags);
        bool DeleteFilter(const std::string &freeform);
        std::pair<bool, std::string> AddFilter(const std::string &freeform, FilterAction type, const std::string &reason, long duration, const std::string &flags);
-       void OnRehash(User* user) CXX11_OVERRIDE;
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE;
        Version GetVersion() CXX11_OVERRIDE;
        std::string EncodeFilter(FilterResult* filter);
        FilterResult DecodeFilter(const std::string &data);
@@ -301,7 +301,6 @@ ModuleFilter::ModuleFilter()
 void ModuleFilter::init()
 {
        ServerInstance->Modules->AddService(filtcommand);
-       OnRehash(NULL);
 }
 
 CullResult ModuleFilter::cull()
@@ -451,7 +450,7 @@ ModResult ModuleFilter::OnPreCommand(std::string &command, std::vector<std::stri
        return MOD_RES_PASSTHRU;
 }
 
-void ModuleFilter::OnRehash(User* user)
+void ModuleFilter::ReadConfig(ConfigStatus& status)
 {
        ConfigTagList tags = ServerInstance->Config->ConfTags("exemptfromfilter");
        exemptfromfilter.clear();
index 7d7e9663ae6734c434dbc961d3da35e21399efe2..6259636ce3b03a326f4a95f1154243933566298c 100644 (file)
@@ -108,12 +108,11 @@ class ModuleHelpop : public Module
 
                void init() CXX11_OVERRIDE
                {
-                       ReadConfig();
                        ServerInstance->Modules->AddService(ho);
                        ServerInstance->Modules->AddService(cmd);
                }
 
-               void ReadConfig()
+               void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
                {
                        helpop_map.clear();
 
@@ -146,11 +145,6 @@ class ModuleHelpop : public Module
 
                }
 
-               void OnRehash(User* user) CXX11_OVERRIDE
-               {
-                       ReadConfig();
-               }
-
                void OnWhois(User* src, User* dst) CXX11_OVERRIDE
                {
                        if (dst->IsModeSet(ho))
index 1bf87bd1441dc72ba9f2bb73126333b232714187..1bf6c18665885bb91d9b4aad4f050b6f0dd93d59 100644 (file)
@@ -40,7 +40,6 @@ class ModuleHideChans : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(hm);
-               OnRehash(NULL);
        }
 
        Version GetVersion() CXX11_OVERRIDE
@@ -48,7 +47,7 @@ class ModuleHideChans : public Module
                return Version("Provides support for hiding channels with user mode +I", VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                AffectsOpers = ServerInstance->Config->ConfValue("hidechans")->getBool("affectsopers");
        }
index 74c58b22aaebc297f7befc00e40ac042f708d9fd..d0e44b3940e59e1f9c03945a49da9a0fcc3f1820 100644 (file)
@@ -51,12 +51,7 @@ class ModuleHostChange : public Module
        std::string MySeparator;
 
  public:
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* host = ServerInstance->Config->ConfValue("host");
                MySuffix = host->getString("suffix");
index 27231644026ac7d63d82878c3d11bc3f3212d05e..74d25deba1d6a9dad99d7bd98d3145e4b40fc22e 100644 (file)
@@ -49,7 +49,7 @@ class ModuleHTTPAccessList : public Module
        {
        }
 
-       void OnRehash(User* user)
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                acl_list.clear();
                ConfigTagList acls = ServerInstance->Config->ConfTags("httpdacl");
@@ -93,11 +93,6 @@ class ModuleHTTPAccessList : public Module
                }
        }
 
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
        void BlockAccess(HTTPRequest* http, int returnval, const std::string &extraheaderkey = "", const std::string &extraheaderval="")
        {
                ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "BlockAccess (%d)", returnval);
index bbd66530eff64b6d0e6558b24463e7b323f90c5f..a9a62fecf53636c2970c5b008b10af0ea95a191d 100644 (file)
@@ -279,7 +279,6 @@ class ModuleIdent : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(ext);
-               OnRehash(NULL);
        }
 
        Version GetVersion() CXX11_OVERRIDE
@@ -287,7 +286,7 @@ class ModuleIdent : public Module
                return Version("Provides support for RFC1413 ident lookups", VF_VENDOR);
        }
 
-       void OnRehash(User *user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                RequestTimeout = ServerInstance->Config->ConfValue("ident")->getInt("timeout", 5);
                if (!RequestTimeout)
index 700df27fb31907f20a328acaeb8dcbb53db1f2f6..2424808f6b6310253948e2e4ed6bea1142f9e984 100644 (file)
@@ -54,8 +54,6 @@ public:
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(ie);
-
-               OnRehash(NULL);
                ie.DoImplements(this);
        }
 
@@ -93,7 +91,7 @@ public:
                ie.DoSyncChannel(chan, proto, opaque);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                invite_bypass_key = ServerInstance->Config->ConfValue("inviteexception")->getBool("bypasskey", true);
                ie.DoRehash();
index f46ae97b4de39a516692fc0490d92a5fc92106f7..e8018aea6c1adf79967bc0d616acedb2b5db3b15 100644 (file)
@@ -76,12 +76,7 @@ class ModuleIRCv3 : public Module
        {
        }
 
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* conf = ServerInstance->Config->ConfValue("ircv3");
                accountnotify = conf->getBool("accountnotify", true);
index 81022a9076ad5fbe7cceb2d13895123779718f84..c8a196832a92bba113e65076b72b15fb794d894d 100644 (file)
@@ -170,10 +170,11 @@ class ModuleJumpServer : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                // Emergency way to unlock
-               if (!user) js.redirect_new_users = false;
+               if (!status.srcuser)
+                       js.redirect_new_users = false;
        }
 
        Version GetVersion() CXX11_OVERRIDE
index 96ea66d7b0e505294a6d8557255caebd02ce2b6b..79d8cddb63262818b4d5840ea9650b0785306872 100644 (file)
@@ -99,11 +99,9 @@ class ModuleKnock : public Module
        {
                ServerInstance->Modules->AddService(kn);
                ServerInstance->Modules->AddService(cmd);
-
-               OnRehash(NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                std::string knocknotify = ServerInstance->Config->ConfValue("knock")->getString("notify");
                irc::string notify(knocknotify.c_str());
index 8fae86e1e9124d9604673c6e7d54c33dabf529e4..a31e4d32494e418d47203cec2c5f0b52619e98e4 100644 (file)
@@ -93,10 +93,11 @@ class ModuleLockserv : public Module
                ServerInstance->Modules->AddService(unlockcommand);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                // Emergency way to unlock
-               if (!user) locked = false;
+               if (!status.srcuser)
+                       locked = false;
        }
 
        ModResult OnUserRegister(LocalUser* user) CXX11_OVERRIDE
index 21072c1fc29d0c6c6a68028e7103588ec5f86d63..41de2997d3db56a361b4050cd9b2c82ba7a9b9d2 100644 (file)
@@ -23,12 +23,7 @@ class ModuleMapHide : public Module
 {
        std::string url;
  public:
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                url = ServerInstance->Config->ConfValue("security")->getString("maphide");
        }
index 99e525398ba00075e0fd15a37bc23619c9b9f99f..d65d3b49cd383fd6afdc3b4d3ed93340aed4f56c 100644 (file)
@@ -239,8 +239,6 @@ class ModuleNationalChars : public Module
                national_case_insensitive_map = m_lower;
 
                ServerInstance->IsNick = &myhandler;
-
-               OnRehash(NULL);
        }
 
        void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
@@ -248,7 +246,7 @@ class ModuleNationalChars : public Module
                tokens["CASEMAPPING"] = casemapping;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("nationalchars");
                charset = tag->getString("file");
index 4078e54a4fecbaff9722f311648c17de109c4c65..b9010d3302770c1a918b8294409ba56e67be9c7f 100644 (file)
@@ -38,7 +38,6 @@ class ModuleNoNickChange : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(nn);
        }
 
@@ -80,7 +79,7 @@ class ModuleNoNickChange : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                override = ServerInstance->Config->ConfValue("nonicks")->getBool("operoverride", false);
        }
index b0c206ab312731dc8d5d724da81f51dfb0e069ec..83a0494805a5aa4a0b9f8ec5385d5d787177e584 100644 (file)
@@ -128,9 +128,6 @@ class ModuleOjoin : public Module
 
        void init() CXX11_OVERRIDE
        {
-               /* Load config stuff */
-               OnRehash(NULL);
-
                std::string npre = ServerInstance->Config->ConfValue("ojoin")->getString("prefix");
                char NPrefix = npre.empty() ? 0 : npre[0];
                if (NPrefix && ServerInstance->Modes->FindPrefix(NPrefix))
@@ -157,7 +154,7 @@ class ModuleOjoin : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* Conf = ServerInstance->Config->ConfValue("ojoin");
                mycommand.notice = Conf->getBool("notice", true);
index 80bb73ad4989f785cf411c7d9f70240726a76a0a..8a50411902579ee4d04c117bdfd8824cab26a6f8 100644 (file)
@@ -50,13 +50,7 @@ class ModuleOperjoin : public Module
                }
 
        public:
-               void init() CXX11_OVERRIDE
-               {
-                       OnRehash(NULL);
-               }
-
-
-               void OnRehash(User* user) CXX11_OVERRIDE
+               void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
                {
                        ConfigTag* tag = ServerInstance->Config->ConfValue("operjoin");
 
index 42a0e4ecf0580fb6e9cc48679dbf45ae3cf74feb..0da0c1f2099b836f0ccf88cf3a8abf4862a319c3 100644 (file)
@@ -29,7 +29,6 @@ class ModuleOperLog : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->SNO->EnableSnomask('r', "OPERLOG");
-               OnRehash(NULL);
        }
 
        Version GetVersion() CXX11_OVERRIDE
@@ -37,7 +36,7 @@ class ModuleOperLog : public Module
                return Version("A module which logs all oper commands to the ircd log at default loglevel.", VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                tosnomask = ServerInstance->Config->ConfValue("operlog")->getBool("tosnomask", false);
        }
index 1be81e641823e6a5f8e9079b8df34cd2f13590e1..543fa685469511062588dce1380878766163c26d 100644 (file)
@@ -83,7 +83,6 @@ class ModuleOpermotd : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(cmd);
-               OnRehash(NULL);
        }
 
        Version GetVersion() CXX11_OVERRIDE
@@ -97,7 +96,7 @@ class ModuleOpermotd : public Module
                        cmd.ShowOperMOTD(user);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                cmd.opermotd.clear();
                ConfigTag* conf = ServerInstance->Config->ConfValue("opermotd");
index e342e7dab2dffd92ded0ca0eafddf7114260e726..7e0d796d7f8f6df9064d971027b1f740f1e5aa89 100644 (file)
@@ -46,14 +46,12 @@ class ModuleOverride : public Module
 
        void init() CXX11_OVERRIDE
        {
-               // read our config options (main config file)
-               OnRehash(NULL);
                ServerInstance->SNO->EnableSnomask('v', "OVERRIDE");
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
-               // re-read our config options on a rehash
+               // re-read our config options
                ConfigTag* tag = ServerInstance->Config->ConfValue("override");
                NoisyOverride = tag->getBool("noisy");
                RequireKey = tag->getBool("requirekey");
index 7f3cb6421ff4dd668f7f998dae204917dfc33d30..589fc06a6e0586c42de4d04657dd337313b8554a 100644 (file)
@@ -24,17 +24,12 @@ class ModulePassForward : public Module
        std::string nickrequired, forwardmsg, forwardcmd;
 
  public:
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Sends server password to NickServ", VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("passforward");
                nickrequired = tag->getString("nick", "NickServ");
index 4f7d9e4496dff34f21d90c298855ea4c63b4e8f7..c8532e2ff7cb7f5c5e6d3842d235a0c54c24dc4a 100644 (file)
@@ -82,9 +82,6 @@ class ModuleOperHash : public Module
 
        void init() CXX11_OVERRIDE
        {
-               /* Read the config file first */
-               OnRehash(NULL);
-
                ServerInstance->Modules->AddService(cmd);
        }
 
index a19a184e08bb91d4cdfd05c15581ce99e7815e91..ec04c7a4547b4b5e7a23c562b09a62841abf68eb 100644 (file)
@@ -169,8 +169,6 @@ public:
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(p);
-
-               OnRehash(NULL);
        }
 
        CullResult cull()
@@ -199,7 +197,7 @@ public:
                return Module::cull();
        }
 
-       void OnRehash(User *user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("permchanneldb");
                permchannelsconf = tag->getString("filename");
index 43f7065b5e429e12d694d7ef1f54db5bef9cb3fc..4a8574a6a60e8557bc4013ce5363fb4cfb7de6a1 100644 (file)
@@ -206,7 +206,6 @@ class ModuleRemove : public Module
        {
                ServerInstance->Modules->AddService(cmd1);
                ServerInstance->Modules->AddService(cmd2);
-               OnRehash(NULL);
        }
 
        void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
@@ -214,7 +213,7 @@ class ModuleRemove : public Module
                tokens["REMOVE"];
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                supportnokicks = ServerInstance->Config->ConfValue("remove")->getBool("supportnokicks");
        }
index 4591d8ad20475ec40abdb91f65fb27419763df44..6ba65a7672f788869e0367bcb8e2a9cd5c1fce8d 100644 (file)
@@ -352,10 +352,9 @@ class RepeatModule : public Module
                ServerInstance->Modules->AddService(rm);
                ServerInstance->Modules->AddService(rm.ChanSet);
                ServerInstance->Modules->AddService(rm.MemberInfoExt);
-               rm.ReadConfig();
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                rm.ReadConfig();
        }
index 21686add399b16572260cc9647dfa7a6344d1aae..dcdd8a8a8597a915fb71381208bd9c15270b3f36 100644 (file)
@@ -26,7 +26,8 @@ class ModuleRestrictChans : public Module
 {
        std::set<irc::string> allowchans;
 
-       void ReadConfig()
+ public:
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                allowchans.clear();
                ConfigTagList tags = ServerInstance->Config->ConfTags("allowchannel");
@@ -38,17 +39,6 @@ class ModuleRestrictChans : public Module
                }
        }
 
- public:
-       void init() CXX11_OVERRIDE
-       {
-               ReadConfig();
-       }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
-       {
-               ReadConfig();
-       }
-
        ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) CXX11_OVERRIDE
        {
                irc::string x(cname.c_str());
index 7a65947d3b4dc046520695f3f895bdd6cca57e91..01d8b753a23ac7bf2b83be83b2ed6bcd1980bfa9 100644 (file)
@@ -223,8 +223,6 @@ class ModuleRLine : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
-
                ServerInstance->Modules->AddService(r);
                ServerInstance->XLines->RegisterFactory(&f);
        }
@@ -254,7 +252,7 @@ class ModuleRLine : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User *user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("rline");
 
index 8b6d4ed8593fa3bed9d0f04846ff5800690c2ac3..1ef1fa073df4ae04e811a60ac6dc2d1f0be110c9 100644 (file)
@@ -256,8 +256,6 @@ class ModuleSASL : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
-
                ServiceProvider* providelist[] = { &auth, &sasl, &authExt };
                ServerInstance->Modules->AddServices(providelist, 3);
 
@@ -265,7 +263,7 @@ class ModuleSASL : public Module
                        ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "WARNING: m_services_account.so and m_cap.so are not loaded! m_sasl.so will NOT function correctly until these two modules are loaded!");
        }
 
-       void OnRehash(User*) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                sasl_target = ServerInstance->Config->ConfValue("sasl")->getString("target", "*");
        }
index cfafd4f05bf0e457d5e6b93d63c432d55f46b8cd..9e1aeea1a8c4454b407463f1ee06ebb35b1202d5 100644 (file)
@@ -27,17 +27,12 @@ class ModuleSecureList : public Module
        time_t WaitTime;
 
  public:
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Disallows /LIST for recently connected clients to hinder spam bots", VF_VENDOR);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                allowlist.clear();
 
index fb9fd7f1fad84e051625abce7922a513d28a03dc..80953ee6f8102d76d55bc05072ed189d3ffa1892 100644 (file)
@@ -76,11 +76,10 @@ class ModuleSetHost : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(cmd);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                std::string hmap = ServerInstance->Config->ConfValue("hostname")->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789");
 
index dbc1812c700ce96e42f244097e1d13fa4d6bf40e..b5d579d00bce85718aa714909d8d5e23c8a272f0 100644 (file)
@@ -181,8 +181,6 @@ class ModuleShun : public Module
        {
                ServerInstance->XLines->RegisterFactory(&f);
                ServerInstance->Modules->AddService(cmd);
-
-               OnRehash(NULL);
        }
 
        ~ModuleShun()
@@ -206,7 +204,7 @@ class ModuleShun : public Module
                return MOD_RES_DENY;
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("shun");
                std::string cmds = tag->getString("enabledcommands");
index b6cb897e705753e36f459d93c8fde1a3b6bf3087..c17cd8e360ba8ad88a262e1807a28c32aea5778c 100644 (file)
@@ -301,13 +301,12 @@ class ModuleSilence : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(cmdsilence);
                ServerInstance->Modules->AddService(cmdsvssilence);
                ServerInstance->Modules->AddService(cmdsilence.ext);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                maxsilence = ServerInstance->Config->ConfValue("showwhois")->getInt("maxentries", 32);
                if (!maxsilence)
index 9ece3c03dcf4e1b90ff94b766f76a9eb8be07050..1e59e1607c52ff83eab584af002d535d4cfa1a65 100644 (file)
@@ -618,7 +618,7 @@ void ModuleSpanningTree::OnPreRehash(User* user, const std::string &parameter)
        }
 }
 
-void ModuleSpanningTree::OnRehash(User* user)
+void ModuleSpanningTree::ReadConfig(ConfigStatus& status)
 {
        // Re-read config stuff
        try
@@ -633,7 +633,7 @@ void ModuleSpanningTree::OnRehash(User* user)
                std::string msg = "Error in configuration: ";
                msg.append(e.GetReason());
                ServerInstance->SNO->WriteToSnoMask('l', msg);
-               if (user && !IS_LOCAL(user))
+               if (status.srcuser && !IS_LOCAL(status.srcuser))
                        ServerInstance->PI->SendSNONotice("L", msg);
        }
 }
index f03a36db2ed98052d17bb3d50ef7f3a91aa77abd..10f698f22d0ea566c02e621f2226ac43a8dd6416 100644 (file)
@@ -142,7 +142,7 @@ class ModuleSpanningTree : public Module
        void OnUserPostNick(User* user, const std::string &oldnick) CXX11_OVERRIDE;
        void OnUserKick(User* source, Membership* memb, const std::string &reason, CUList& excepts) CXX11_OVERRIDE;
        void OnPreRehash(User* user, const std::string &parameter) CXX11_OVERRIDE;
-       void OnRehash(User* user) CXX11_OVERRIDE;
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE;
        void OnOper(User* user, const std::string &opertype) CXX11_OVERRIDE;
        void OnLine(User* source, const std::string &host, bool adding, char linetype, long duration, const std::string &reason);
        void OnAddLine(User *u, XLine *x) CXX11_OVERRIDE;
index 40db1339c5ecd38044b89396129cbc27e864ffb8..0ec0a57f925f517972c08e1efdff11bb297e78b1 100644 (file)
@@ -131,8 +131,6 @@ SpanningTreeUtilities::SpanningTreeUtilities(ModuleSpanningTree* C)
        : Creator(C), TreeRoot(NULL)
 {
        ServerInstance->Timers->AddTimer(&RefreshTimer);
-
-       this->ReadConfiguration();
 }
 
 CullResult SpanningTreeUtilities::cull()
index ba969e54dad9853340a3a7f0e09693927c6c84eb..fe65d2805a5bbf3b82a68f8767b3fc81d88124f9 100644 (file)
@@ -84,10 +84,9 @@ class ModuleSQLAuth : public Module
        void init() CXX11_OVERRIDE
        {
                ServerInstance->Modules->AddService(pendingExt);
-               OnRehash(NULL);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* conf = ServerInstance->Config->ConfValue("sqlauth");
                std::string dbid = conf->getString("dbid");
index 295f4aa94d4aab48e3f4efb123aa36d4953f7bec..fb5b65e566e82a91ce3809c82246255814834b33 100644 (file)
@@ -111,12 +111,7 @@ class ModuleSQLOper : public Module
 public:
        ModuleSQLOper() : SQL(this, "SQL") {}
 
-       void init() CXX11_OVERRIDE
-       {
-               OnRehash(NULL);
-       }
-
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("sqloper");
 
index 94f53c16451ab4fbedd644fbb95bb15773adc739..be1dcfc91e4600df5e71299ad53a9dbb89dca32b 100644 (file)
@@ -376,13 +376,12 @@ class Modulewatch : public Module
 
        void init() CXX11_OVERRIDE
        {
-               OnRehash(NULL);
                ServerInstance->Modules->AddService(cmdw);
                ServerInstance->Modules->AddService(sw);
                ServerInstance->Modules->AddService(cmdw.ext);
        }
 
-       void OnRehash(User* user) CXX11_OVERRIDE
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                maxwatch = ServerInstance->Config->ConfValue("watch")->getInt("maxentries", 32);
                if (!maxwatch)
index 63eb6d3ee7bb36c2e050d17b198eace1d38ef288..d482dca2bf047a5333483a598c9b4bcc02373b63 100644 (file)
@@ -31,7 +31,7 @@ class ModuleXLineDB : public Module
        {
                /* Load the configuration
                 * Note:
-                *              this is on purpose not in the OnRehash() method. It would be non-trivial to change the database on-the-fly.
+                *              This is on purpose not changed on a rehash. It would be non-trivial to change the database on-the-fly.
                 *              Imagine a scenario where the new file already exists. Merging the current XLines with the existing database is likely a bad idea
                 *              ...and so is discarding all current in-memory XLines for the ones in the database.
                 */