From 889d521e05f2e922683d48c74eb00290e7a2f548 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Wed, 17 Jul 2024 00:06:50 +0100 Subject: Shuffle the modules about a bit. --- src/modules/m_conn_join.cpp | 122 -------------------------------------------- 1 file changed, 122 deletions(-) delete mode 100644 src/modules/m_conn_join.cpp (limited to 'src/modules/m_conn_join.cpp') diff --git a/src/modules/m_conn_join.cpp b/src/modules/m_conn_join.cpp deleted file mode 100644 index d10836a93..000000000 --- a/src/modules/m_conn_join.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * InspIRCd -- Internet Relay Chat Daemon - * - * Copyright (C) 2021 Dominic Hamon - * Copyright (C) 2019-2023 Sadie Powell - * Copyright (C) 2014 Daniel Vassdal - * Copyright (C) 2013-2015 Attila Molnar - * Copyright (C) 2012 Robby - * Copyright (C) 2009-2010 Daniel De Graaf - * Copyright (C) 2009 Robin Burchell - * Copyright (C) 2007 Dennis Friis - * Copyright (C) 2007 Craig Edwards - * - * 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 - * License as published by the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include "inspircd.h" -#include "extension.h" - -static void JoinChannels(LocalUser* u, const std::string& chanlist) -{ - irc::commasepstream chans(chanlist); - std::string chan; - - while (chans.GetToken(chan)) - { - if (ServerInstance->Channels.IsChannel(chan)) - Channel::JoinUser(u, chan); - } -} - -class JoinTimer final - : public Timer -{ -private: - LocalUser* const user; - const std::string channels; - SimpleExtItem& ext; - -public: - JoinTimer(LocalUser* u, SimpleExtItem& ex, const std::string& chans, unsigned int delay) - : Timer(delay, false) - , user(u) - , channels(chans) - , ext(ex) - { - ServerInstance->Timers.AddTimer(this); - } - - bool Tick() override - { - if (user->chans.empty()) - JoinChannels(user, channels); - - ext.Unset(user); - return false; - } -}; - -class ModuleConnJoin final - : public Module -{ -private: - SimpleExtItem ext; - std::string defchans; - unsigned int defdelay; - -public: - ModuleConnJoin() - : Module(VF_VENDOR, "Allows the server administrator to force users to join one or more channels on connect.") - , ext(this, "join-timer", ExtensionType::USER) - { - } - - void ReadConfig(ConfigStatus& status) override - { - const auto& tag = ServerInstance->Config->ConfValue("autojoin"); - defchans = tag->getString("channel"); - defdelay = static_cast(tag->getDuration("delay", 0, 0, 60*15)); - } - - void Prioritize() override - { - ServerInstance->Modules.SetPriority(this, I_OnPostConnect, PRIORITY_LAST); - } - - void OnPostConnect(User* user) override - { - LocalUser* localuser = IS_LOCAL(user); - if (!localuser) - return; - - std::string chanlist = localuser->GetClass()->config->getString("autojoin"); - unsigned int chandelay = static_cast(localuser->GetClass()->config->getDuration("autojoindelay", 0, 0, 60*15)); - - if (chanlist.empty()) - { - if (defchans.empty()) - return; - chanlist = defchans; - chandelay = defdelay; - } - - if (!chandelay) - JoinChannels(localuser, chanlist); - else - ext.SetFwd(localuser, localuser, ext, chanlist, chandelay); - } -}; - -MODULE_INIT(ModuleConnJoin) -- cgit v1.3.1-10-gc9f91