diff options
-rw-r--r-- | conf/modules.conf.example | 9 | ||||
-rw-r--r-- | src/modules/m_allowinvite.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_noinvite.cpp | 74 |
3 files changed, 6 insertions, 79 deletions
diff --git a/conf/modules.conf.example b/conf/modules.conf.example index 2d44ffbe7..2e9fe5bcb 100644 --- a/conf/modules.conf.example +++ b/conf/modules.conf.example @@ -157,6 +157,11 @@ # requires="NickServ" uline="yes"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# +# Allowinvite module: Gives channel mode +A to allow all users to use +# /invite, and extban A to deny invite from specific masks +#<module name="m_allowinvite.so"> + +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Alltime module: Shows time on all connected servers at once #<module name="m_alltime.so"> @@ -884,10 +889,6 @@ #<module name="m_noctcp.so"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# Noinvite module: Gives channel mode +V -#<module name="m_noinvite.so"> - -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # No kicks module: Adds the +Q channel mode #<module name="m_nokicks.so"> diff --git a/src/modules/m_allowinvite.cpp b/src/modules/m_allowinvite.cpp index f137598e2..fcd8130bc 100644 --- a/src/modules/m_allowinvite.cpp +++ b/src/modules/m_allowinvite.cpp @@ -44,7 +44,7 @@ class ModuleAllowInvite : public Module { if (IS_LOCAL(user)) { - if (channel->IsModeSet('A') || channel->IsExtBanned(user, 'A')) + if (channel->IsModeSet('A') && !channel->IsExtBanned(user, 'A')) { // Explicitly allow /invite return -1; diff --git a/src/modules/m_noinvite.cpp b/src/modules/m_noinvite.cpp deleted file mode 100644 index f3ded767e..000000000 --- a/src/modules/m_noinvite.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ - * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits - * - * This program is free but copyrighted software; see - * the file COPYING for details. - * - * --------------------------------------------------- - */ - -#include "inspircd.h" - -/* $ModDesc: Provides support for unreal-style channel mode +V */ - -class NoInvite : public SimpleChannelModeHandler -{ - public: - NoInvite(InspIRCd* Instance) : SimpleChannelModeHandler(Instance, 'V') { } -}; - -class ModuleNoInvite : public Module -{ - NoInvite *ni; - public: - - ModuleNoInvite(InspIRCd* Me) : Module(Me) - { - ni = new NoInvite(ServerInstance); - if (!ServerInstance->Modes->AddMode(ni)) - throw ModuleException("Could not add new modes!"); - Implementation eventlist[] = { I_OnUserPreInvite, I_On005Numeric }; - ServerInstance->Modules->Attach(eventlist, this, 2); - } - - virtual void On005Numeric(std::string &output) - { - ServerInstance->AddExtBanChar('V'); - } - - virtual int OnUserPreInvite(User* user,User* dest,Channel* channel, time_t timeout) - { - if (IS_LOCAL(user)) - { - if (CHANOPS_EXEMPT(ServerInstance, 'V') && channel->GetStatus(user) == STATUS_OP) - { - return 0; - } - - if (channel->IsModeSet('V') || channel->IsExtBanned(user, 'V')) - { - user->WriteNumeric(ERR_NOCTCPALLOWED, "%s %s :Can't invite %s to channel (+V set)",user->nick.c_str(), channel->name.c_str(), dest->nick.c_str()); - return 1; - } - } - - return 0; - } - - virtual ~ModuleNoInvite() - { - ServerInstance->Modes->DelMode(ni); - delete ni; - } - - virtual Version GetVersion() - { - return Version(1,2,0,0,VF_COMMON|VF_VENDOR,API_VERSION); - } -}; - -MODULE_INIT(ModuleNoInvite) |