summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2016-06-05 14:16:36 +0100
committerRussell King <rmk+kernel@armlinux.org.uk>2019-07-21 20:59:35 +0100
commit7f273676eb203a1be6ca179c6ee1b3d3a4e81a78 (patch)
tree9621beb408331e4cd9d9f32763e78f561c2118ee /modules
parent02b2a4ebcbd2eb71f7abaad36da2dc489c7c2d7c (diff)
Convert global channel operator support to OFTC's God mode.
OFTC's God mode is very similar to the global channel operator mode, with the following differences: - gaining God mode notifies all operators - uses of God mode privileges notifies all operators - God mode times out after a configurable period - uses umode S rather than O - S is taken for SSL clients in hybrid 8.1.13. So align with OFTC's implementation, but omit these features.
Diffstat (limited to 'modules')
-rw-r--r--modules/core/m_join.c2
-rw-r--r--modules/core/m_kick.c6
-rw-r--r--modules/m_invite.c2
-rw-r--r--modules/m_topic.c2
4 files changed, 6 insertions, 6 deletions
diff --git a/modules/core/m_join.c b/modules/core/m_join.c
index 833bebb..df22fe0 100644
--- a/modules/core/m_join.c
+++ b/modules/core/m_join.c
@@ -174,7 +174,7 @@ m_join(struct Client *client_p, struct Client *source_p,
/*
* can_join checks for +i key, bans.
*/
- if ((i = can_join(source_p, chptr, key)))
+ if ((i = can_join(source_p, chptr, key)) && !HasUMode(source_p, UMODE_GOD))
{
sendto_one(source_p, form_str(i), me.name,
source_p->name, chptr->chname);
diff --git a/modules/core/m_kick.c b/modules/core/m_kick.c
index 1b15c4d..5d4545f 100644
--- a/modules/core/m_kick.c
+++ b/modules/core/m_kick.c
@@ -97,7 +97,7 @@ m_kick(struct Client *client_p, struct Client *source_p,
}
}
- if (!has_member_flags(ms_source, CHFL_CHANOP|CHFL_HALFOP) && !HasUMode(source_p, UMODE_GCHANOP))
+ if (!has_member_flags(ms_source, CHFL_CHANOP|CHFL_HALFOP) && !HasUMode(source_p, UMODE_GOD))
{
/* was a user, not a server, and user isn't seen as a chanop here */
if (MyConnect(source_p))
@@ -146,9 +146,9 @@ m_kick(struct Client *client_p, struct Client *source_p,
{
#ifdef HALFOPS
/* half ops cannot kick other halfops on private channels */
- if (has_member_flags(ms_source, CHFL_HALFOP) && !has_member_flags(ms_source, CHFL_CHANOP) && !HasUMode(source_p, UMODE_GCHANOP))
+ if (has_member_flags(ms_source, CHFL_HALFOP) && !has_member_flags(ms_source, CHFL_CHANOP) && !HasUMode(source_p, UMODE_GOD))
{
- if (has_member_flags(ms_target, CHFL_CHANOP|CHFL_HALFOP) || HasUMode(target_p, UMODE_GCHANOP))
+ if (has_member_flags(ms_target, CHFL_CHANOP|CHFL_HALFOP) || HasUMode(target_p, UMODE_GOD))
{
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
me.name, source_p->name, chptr->chname);
diff --git a/modules/m_invite.c b/modules/m_invite.c
index 48e86e6..ccca4dd 100644
--- a/modules/m_invite.c
+++ b/modules/m_invite.c
@@ -91,7 +91,7 @@ m_invite(struct Client *client_p, struct Client *source_p,
}
if (MyConnect(source_p) && !has_member_flags(ms, CHFL_CHANOP)
- && !HasUMode(source_p, UMODE_GCHANOP))
+ && !HasUMode(source_p, UMODE_GOD))
{
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
me.name, source_p->name, chptr->chname);
diff --git a/modules/m_topic.c b/modules/m_topic.c
index 3aa5e3d..6d7e351 100644
--- a/modules/m_topic.c
+++ b/modules/m_topic.c
@@ -82,7 +82,7 @@ m_topic(struct Client *client_p, struct Client *source_p,
if (!(chptr->mode.mode & MODE_TOPICLIMIT) ||
has_member_flags(ms, CHFL_CHANOP|CHFL_HALFOP) ||
- HasUMode(source_p, UMODE_GCHANOP))
+ HasUMode(source_p, UMODE_GOD))
{
char topic_info[USERHOST_REPLYLEN];