X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_inviteexception.cpp;h=604c144e4b153ab2927a843d2bb019ffe60ee0f6;hb=80e81e3b81b779901fd9d67f8ae030ee30c0bcec;hp=2d83828321bd8d84aa932ecd4679aed3ff5520e9;hpb=1858feabd342636df0b52780c978979b4e049fc3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_inviteexception.cpp b/src/modules/m_inviteexception.cpp index 2d8382832..604c144e4 100644 --- a/src/modules/m_inviteexception.cpp +++ b/src/modules/m_inviteexception.cpp @@ -1,11 +1,12 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2009 Daniel De Graaf - * Copyright (C) 2006-2008 Craig Edwards + * Copyright (C) 2013, 2017-2020 Sadie Powell + * Copyright (C) 2012-2013 Attila Molnar + * Copyright (C) 2012, 2019 Robby + * Copyright (C) 2009-2010 Daniel De Graaf * Copyright (C) 2007 Dennis Friis - * Copyright (C) 2007 Robin Burchell - * Copyright (C) 2006 Oliver Lupton + * Copyright (C) 2006, 2010 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 @@ -24,25 +25,21 @@ #include "inspircd.h" #include "listmode.h" -/* $ModDesc: Provides support for the +I channel mode */ -/* $ModDep: ../../include/listmode.h */ - -/* - * Written by Om , April 2005. - * Based on m_exception, which was originally based on m_chanprotect and m_silence - * - * The +I channel mode takes a nick!ident@host, glob patterns allowed, - * and if a user matches an entry on the +I list then they can join the channel, - * ignoring if +i is set on the channel - * Now supports CIDR and IP addresses -- Brain - */ +enum +{ + // From RFC 2812. + RPL_INVEXLIST = 346, + RPL_ENDOFINVEXLIST = 347 +}; -/** Handles channel mode +I - */ class InviteException : public ListModeBase { public: - InviteException(Module* Creator) : ListModeBase(Creator, "invex", 'I', "End of Channel Invite Exception List", 346, 347, true) { } + InviteException(Module* Creator) + : ListModeBase(Creator, "invex", 'I', "End of Channel Invite Exception List", RPL_INVEXLIST, RPL_ENDOFINVEXLIST, true) + { + syntax = ""; + } }; class ModuleInviteException : public Module @@ -54,22 +51,12 @@ public: { } - void init() + void On005Numeric(std::map& tokens) CXX11_OVERRIDE { - ServerInstance->Modules->AddService(ie); - - OnRehash(NULL); - ie.DoImplements(this); - Implementation eventlist[] = { I_On005Numeric, I_OnCheckInvite, I_OnCheckKey, I_OnRehash }; - ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); + tokens["INVEX"] = ConvToStr(ie.GetModeChar()); } - void On005Numeric(std::map& tokens) - { - tokens["INVEX"] = "I"; - } - - ModResult OnCheckInvite(User* user, Channel* chan) + ModResult OnCheckInvite(User* user, Channel* chan) CXX11_OVERRIDE { ListModeBase::ModeList* list = ie.GetList(chan); if (list) @@ -86,27 +73,22 @@ public: return MOD_RES_PASSTHRU; } - ModResult OnCheckKey(User* user, Channel* chan, const std::string& key) + ModResult OnCheckKey(User* user, Channel* chan, const std::string& key) CXX11_OVERRIDE { if (invite_bypass_key) return OnCheckInvite(user, chan); return MOD_RES_PASSTHRU; } - void OnSyncChannel(Channel* chan, Module* proto, void* opaque) + void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE { - ie.DoSyncChannel(chan, proto, opaque); - } - - void OnRehash(User* user) - { - invite_bypass_key = ServerInstance->Config->ConfValue("inviteexception")->getBool("bypasskey", true); ie.DoRehash(); + invite_bypass_key = ServerInstance->Config->ConfValue("inviteexception")->getBool("bypasskey", true); } - Version GetVersion() + Version GetVersion() CXX11_OVERRIDE { - return Version("Provides support for the +I channel mode", VF_VENDOR); + return Version("Adds channel mode I (invex) which allows channel operators to exempt user masks from the i (inviteonly) channel mode.", VF_VENDOR); } };