Change SWHOIS to OPTCOMMON, remove m_operinvex

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11789 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
danieldg 2009-10-01 03:37:40 +00:00
parent 18aae91d93
commit 6d715e128f
7 changed files with 29 additions and 73 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}
};

View File

@ -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)

View File

@ -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");
}
}

View File

@ -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);
}
};