diff options
-rw-r--r-- | conf/inspircd.helpop-full.example | 2 | ||||
-rw-r--r-- | conf/inspircd.helpop.example | 2 | ||||
-rw-r--r-- | conf/modules.conf.example | 12 | ||||
-rw-r--r-- | src/modules/m_operchans.cpp | 23 | ||||
-rw-r--r-- | src/modules/m_operinvex.cpp | 57 | ||||
-rw-r--r-- | src/modules/m_spanningtree/compat.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_swhois.cpp | 2 |
7 files changed, 29 insertions, 73 deletions
diff --git a/conf/inspircd.helpop-full.example b/conf/inspircd.helpop-full.example index 1942a2935..48e5186d8 100644 --- a/conf/inspircd.helpop-full.example +++ b/conf/inspircd.helpop-full.example @@ -995,7 +995,7 @@ Note that all /STATS use is broadcast to online IRC operators."> nonicks module). O:opertype Prevents IRCops of the specified opertype from joining the channel, mostly useful as an invite exception (IRCop - only, requires operinvex module). + only, requires operchans module). Q:n!u@h Blocks kicks by matching users (requires nokicks module). R:account Prevents users logged into a matching account from diff --git a/conf/inspircd.helpop.example b/conf/inspircd.helpop.example index 2e69a546b..8a53629e9 100644 --- a/conf/inspircd.helpop.example +++ b/conf/inspircd.helpop.example @@ -271,7 +271,7 @@ help channel if you have any questions."> nonicks module). O:opertype Prevents IRCops of the specified opertype from joining the channel, mostly useful as an invite exception (IRCop - only, requires operinvex module). + only, requires operchans module). Q:n!u@h Blocks kicks by matching users (requires nokicks module). R:account Prevents users logged into a matching account from diff --git a/conf/modules.conf.example b/conf/modules.conf.example index d3e77ca26..4fb3ef80d 100644 --- a/conf/modules.conf.example +++ b/conf/modules.conf.example @@ -1103,19 +1103,13 @@ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# Oper channels mode: Adds the +O channel mode -# This module is oper-only. -#<module name="m_operchans.so"> - -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# Oper invex/extban module: Adds +beI type O, to ban, exempt, and invex -# given oper type masks. +# Oper channels mode: Adds the +O channel mode and +beI type O:<mask> +# to ban, exempt, and invex given oper type masks. # e.g, /mode #channel +iI O:* is equivilant to chmode +O, but you # may also, e.g. /mode #channel +iI O:AdminTypeOnly to only allow admins. # +be work in a similar fashion. -# This module is oper-only. # -#<module name="m_operinvex.so"> +#<module name="m_operchans.so"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Oper Join module: Auto-joins opers to a channel upon oper-up diff --git a/src/modules/m_operchans.cpp b/src/modules/m_operchans.cpp index edafcd071..5fe891b50 100644 --- a/src/modules/m_operchans.cpp +++ b/src/modules/m_operchans.cpp @@ -48,12 +48,12 @@ class ModuleOperChans : public Module { OperChans oc; public: - ModuleOperChans() - : oc(this) + ModuleOperChans() : oc(this) { if (!ServerInstance->Modes->AddMode(&oc)) throw ModuleException("Could not add new modes!"); - ServerInstance->Modules->Attach(I_OnUserPreJoin, this); + Implementation eventlist[] = { I_OnCheckBan, I_On005Numeric, I_OnUserPreJoin }; + ServerInstance->Modules->Attach(eventlist, this, 3); } ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven) @@ -67,6 +67,21 @@ class ModuleOperChans : public Module return MOD_RES_PASSTHRU; } + ModResult OnCheckBan(User *user, Channel *c, const std::string& mask) + { + if (mask[0] == 'O' && mask[1] == ':') + { + if (IS_OPER(user) && InspIRCd::Match(user->oper, mask.substr(2))) + return MOD_RES_DENY; + } + return MOD_RES_PASSTHRU; + } + + void On005Numeric(std::string &output) + { + ServerInstance->AddExtBanChar('O'); + } + ~ModuleOperChans() { ServerInstance->Modes->DelMode(&oc); @@ -74,7 +89,7 @@ class ModuleOperChans : public Module Version GetVersion() { - return Version("Provides support for oper-only chans via the +O channel mode", VF_VENDOR | VF_COMMON, API_VERSION); + return Version("Provides support for oper-only chans via the +O channel mode and 'O' extban", VF_VENDOR | VF_COMMON, API_VERSION); } }; diff --git a/src/modules/m_operinvex.cpp b/src/modules/m_operinvex.cpp deleted file mode 100644 index e8e9215b4..000000000 --- a/src/modules/m_operinvex.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ - * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits - * - * This program is free but copyrighted software; see - * the file COPYING for details. - * - * --------------------------------------------------- - */ - -#include "inspircd.h" -#include "u_listmode.h" - -/* $ModDep: ../../include/u_listmode.h */ - -/* $ModDesc: Implements extban/invex +I O: - opertype bans */ - -class ModuleOperInvex : public Module -{ - private: - public: - ModuleOperInvex() { - Implementation eventlist[] = { I_OnCheckBan, I_On005Numeric }; - ServerInstance->Modules->Attach(eventlist, this, 2); - } - - ~ModuleOperInvex() - { - } - - Version GetVersion() - { - return Version("ExtBan 'O' - oper type ban", VF_COMMON|VF_VENDOR); - } - - ModResult OnCheckBan(User *user, Channel *c, const std::string& mask) - { - if (mask[0] == 'O' && mask[1] == ':') - { - if (IS_OPER(user) && InspIRCd::Match(user->oper, mask.substr(2))) - return MOD_RES_DENY; - } - return MOD_RES_PASSTHRU; - } - - virtual void On005Numeric(std::string &output) - { - ServerInstance->AddExtBanChar('O'); - } -}; - - -MODULE_INIT(ModuleOperInvex) - diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp index 3724319b7..6d804aa71 100644 --- a/src/modules/m_spanningtree/compat.cpp +++ b/src/modules/m_spanningtree/compat.cpp @@ -25,6 +25,7 @@ static const char* const forge_common_1201[] = { "m_sapart.so", "m_saquit.so", "m_setident.so", + "m_swhois.so", }; static std::string wide_newline("\r\n"); @@ -40,6 +41,9 @@ void TreeSocket::CompatAddModules(std::vector<std::string>& modlist) if (ServerInstance->Modules->Find(forge_common_1201[i])) modlist.push_back(forge_common_1201[i]); } + // module was merged + if (ServerInstance->Modules->Find("m_operchans.so")) + modlist.push_back("m_operinvex.so"); } } diff --git a/src/modules/m_swhois.cpp b/src/modules/m_swhois.cpp index 4465b0c89..6d74e9d39 100644 --- a/src/modules/m_swhois.cpp +++ b/src/modules/m_swhois.cpp @@ -146,7 +146,7 @@ class ModuleSWhois : public Module Version GetVersion() { - return Version("Provides the SWHOIS command which allows setting of arbitary WHOIS lines", VF_COMMON | VF_VENDOR, API_VERSION); + return Version("Provides the SWHOIS command which allows setting of arbitary WHOIS lines", VF_OPTCOMMON | VF_VENDOR, API_VERSION); } }; |