summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-07-21 16:29:47 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-07-21 16:29:47 +0000
commit644ed25d8d87874b55aef6b8e700e9e79017ec18 (patch)
tree2c9e5d58b964889963c23c89de6788074209fc57
parentedf6ba3cf14923c0b79c5da7df5e72b9639bcfc3 (diff)
Add extban +b B: - matching users may not use caps, same as chmode +B (or +P in 1.1)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10058 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modules/m_blockcaps.cpp10
-rw-r--r--src/modules/m_nonicks.cpp12
2 files changed, 10 insertions, 12 deletions
diff --git a/src/modules/m_blockcaps.cpp b/src/modules/m_blockcaps.cpp
index 31542befd..aa91b6bcd 100644
--- a/src/modules/m_blockcaps.cpp
+++ b/src/modules/m_blockcaps.cpp
@@ -41,10 +41,14 @@ public:
delete bc;
throw ModuleException("Could not add new modes!");
}
- Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash };
- ServerInstance->Modules->Attach(eventlist, this, 3);
+ Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_On005Numeric };
+ ServerInstance->Modules->Attach(eventlist, this, 4);
}
+ virtual void On005Numeric(std::string &output)
+ {
+ ServerInstance->AddExtBanChar('B');
+ }
virtual void OnRehash(User* user, const std::string &param)
{
@@ -65,7 +69,7 @@ public:
return 0;
}
- if (c->IsModeSet('B'))
+ if (c->IsModeSet('B') || c->IsExtBanned(user, 'B'))
{
int caps = 0;
const char* actstr = "\1ACTION ";
diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp
index f29cbf04a..9a1d0079e 100644
--- a/src/modules/m_nonicks.cpp
+++ b/src/modules/m_nonicks.cpp
@@ -85,16 +85,10 @@ class ModuleNoNickChange : public Module
{
Channel* curr = i->first;
- if (curr->IsModeSet('N'))
- {
- if (CHANOPS_EXEMPT(ServerInstance, 'N') && curr->GetStatus(user) == STATUS_OP)
- continue;
-
- user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)", user->nick.c_str(), curr->name.c_str());
- return 1;
- }
+ if (CHANOPS_EXEMPT(ServerInstance, 'N') && curr->GetStatus(user) == STATUS_OP)
+ continue;
- if (curr->IsExtBanned(user, 'N'))
+ if (curr->IsModeSet('N') || curr->IsExtBanned(user, 'N'))
{
user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)", user->nick.c_str(), curr->name.c_str());
return 1;