]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_conn_join.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_conn_join.cpp
index cbe8b0be3bea99fff1e2dd73bcb23cba904a85bd..ee479771616dc227d75d42eaf391d14b9325dd4a 100644 (file)
@@ -1,10 +1,15 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2010 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2014 Daniel Vassdal <shutter@canternet.org>
+ *   Copyright (C) 2013-2015 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2013, 2017, 2019 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2009 Uli Schlachter <psychon@inspircd.org>
+ *   Copyright (C) 2009 Robin Burchell <robin+git@viroteck.net>
  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
- *   Copyright (C) 2007 Craig Edwards <craigedwards@brainbox.cc>
+ *   Copyright (C) 2007 Craig Edwards <brain@inspircd.org>
  *
  * 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
@@ -43,10 +48,10 @@ class JoinTimer : public Timer
 
  public:
        JoinTimer(LocalUser* u, SimpleExtItem<JoinTimer>& ex, const std::string& chans, unsigned int delay)
-               : Timer(delay, ServerInstance->Time(), false)
+               : Timer(delay, false)
                , user(u), channels(chans), ext(ex)
        {
-               ServerInstance->Timers->AddTimer(this);
+               ServerInstance->Timers.AddTimer(this);
        }
 
        bool Tick(time_t time) CXX11_OVERRIDE
@@ -62,20 +67,30 @@ class JoinTimer : public Timer
 class ModuleConnJoin : public Module
 {
        SimpleExtItem<JoinTimer> ext;
+       std::string defchans;
+       unsigned int defdelay;
 
  public:
-       ModuleConnJoin() : ext("join_timer", this)
+       ModuleConnJoin()
+               : ext("join_timer", ExtensionItem::EXT_USER, this)
        {
        }
 
-       void Prioritize()
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
+       {
+               ConfigTag* tag = ServerInstance->Config->ConfValue("autojoin");
+               defchans = tag->getString("channel");
+               defdelay = tag->getDuration("delay", 0, 0, 60*15);
+       }
+
+       void Prioritize() CXX11_OVERRIDE
        {
                ServerInstance->Modules->SetPriority(this, I_OnPostConnect, PRIORITY_LAST);
        }
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Forces users to join the specified channel(s) on connect", VF_VENDOR);
+               return Version("Allows the server administrator to force users to join one or more channels on connect.", VF_VENDOR);
        }
 
        void OnPostConnect(User* user) CXX11_OVERRIDE
@@ -85,18 +100,16 @@ class ModuleConnJoin : public Module
                        return;
 
                std::string chanlist = localuser->GetClass()->config->getString("autojoin");
-               unsigned int chandelay = localuser->GetClass()->config->getInt("autojoindelay", 0, 0, 60);
+               unsigned int chandelay = localuser->GetClass()->config->getDuration("autojoindelay", 0, 0, 60*15);
 
                if (chanlist.empty())
                {
-                       ConfigTag* tag = ServerInstance->Config->ConfValue("autojoin");
-                       chanlist = tag->getString("channel");
-                       chandelay = tag->getInt("delay", 0, 0, 60);
+                       if (defchans.empty())
+                               return;
+                       chanlist = defchans;
+                       chandelay = defdelay;
                }
 
-               if (chanlist.empty())
-                       return;
-
                if (!chandelay)
                        JoinChannels(localuser, chanlist);
                else