/* * InspIRCd -- Internet Relay Chat Daemon * * Copyright (C) 2010 Daniel De Graaf * Copyright (C) 2007 Dennis Friis * Copyright (C) 2007 Robin Burchell * 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" /* $ModDesc: Forces users to join the specified channel(s) on connect */ class ModuleConnJoin : public Module { public: void init() CXX11_OVERRIDE { Implementation eventlist[] = { I_OnPostConnect }; ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } void Prioritize() { 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); } void OnPostConnect(User* user) CXX11_OVERRIDE { LocalUser* localuser = IS_LOCAL(user); if (!localuser) return; std::string chanlist = ServerInstance->Config->ConfValue("autojoin")->getString("channel"); chanlist = localuser->GetClass()->config->getString("autojoin", chanlist); irc::commasepstream chans(chanlist); std::string chan; while (chans.GetToken(chan)) { if (ServerInstance->IsChannel(chan)) Channel::JoinUser(localuser, chan); } } }; MODULE_INIT(ModuleConnJoin)