summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/inspircd.conf.example20
-rw-r--r--src/modules/m_auditorium.cpp13
2 files changed, 25 insertions, 8 deletions
diff --git a/docs/inspircd.conf.example b/docs/inspircd.conf.example
index 44110e012..4735ffd48 100644
--- a/docs/inspircd.conf.example
+++ b/docs/inspircd.conf.example
@@ -1210,14 +1210,18 @@
#
# Auditorium settings:
#
-#<auditorium showops="no">
-#
-# Setting this value to yes makes m_auditorium behave like unrealircd
-# +u channel mode, e.g. ops see users joining, parting, etc, and users
-# joining the channel see the ops. Without this flag, the mode acts
-# like ircnet's +a (anonymous channels), showing only the user in the
-# names list, and not even showing the ops in the list, or showing the
-# ops that the user has joined.
+#<auditorium showops="no" operoverride="no">
+#
+# showops:
+# Setting this value to yes makes m_auditorium behave like unrealircd
+# +u channel mode, e.g. ops see users joining, parting, etc, and users
+# joining the channel see the ops. Without this flag, the mode acts
+# like ircnet's +a (anonymous channels), showing only the user in the
+# names list, and not even showing the ops in the list, or showing the
+# ops that the user has joined.
+# operoverride:
+# Setting this value to yes makes m_auditorium affect the userlist for
+# regular users only. Opers will view all users in the channel normally.
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Ban except module: Adds support for channel ban exceptions (+e)
diff --git a/src/modules/m_auditorium.cpp b/src/modules/m_auditorium.cpp
index 31533aaa1..9d8ff4b9a 100644
--- a/src/modules/m_auditorium.cpp
+++ b/src/modules/m_auditorium.cpp
@@ -47,6 +47,7 @@ class ModuleAuditorium : public Module
private:
AuditoriumMode* aum;
bool ShowOps;
+ bool OperOverride;
CUList nl;
CUList except_list;
public:
@@ -83,6 +84,7 @@ class ModuleAuditorium : public Module
{
ConfigReader conf(ServerInstance);
ShowOps = conf.ReadFlag("auditorium", "showops", 0);
+ OperOverride = conf.ReadFlag("auditorium", "operoverride", 0);
}
virtual Version GetVersion()
@@ -94,6 +96,17 @@ class ModuleAuditorium : public Module
{
if (Ptr->IsModeSet('u'))
{
+ if (OperOverride)
+ {
+ if (IS_OPER(user))
+ {
+ /*
+ * If user is oper and operoverride is on, don't touch the list
+ */
+ return 0;
+ }
+ }
+
if (ShowOps)
{
/* Leave the names list alone, theyre an op