summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/inspircd.helpop-full.example2
-rw-r--r--conf/inspircd.helpop.example2
-rw-r--r--conf/modules.conf.example12
-rw-r--r--src/modules/m_operchans.cpp23
-rw-r--r--src/modules/m_operinvex.cpp57
-rw-r--r--src/modules/m_spanningtree/compat.cpp4
-rw-r--r--src/modules/m_swhois.cpp2
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);
}
};