aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2021-05-23 01:53:34 +0100
committerGravatar Sadie Powell2021-05-23 01:58:34 +0100
commitee1325cf9ddcb47b2d2c1b79093e0fa5a38b75c7 (patch)
tree8ede088cbb9a89f2f10d194d6c094b84db61fc06 /src/modules
parentRefactor the population of exceptions in delayjoin. (diff)
Fire OnUserPreJoin regardless of whether the join is an override.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_banredirect.cpp4
-rw-r--r--src/modules/m_cban.cpp6
-rw-r--r--src/modules/m_denychans.cpp5
-rw-r--r--src/modules/m_joinflood.cpp4
-rw-r--r--src/modules/m_kicknorejoin.cpp4
-rw-r--r--src/modules/m_ojoin.cpp2
-rw-r--r--src/modules/m_operchans.cpp4
-rw-r--r--src/modules/m_operprefix.cpp2
-rw-r--r--src/modules/m_override.cpp4
-rw-r--r--src/modules/m_redirect.cpp4
-rw-r--r--src/modules/m_restrictchans.cpp4
-rw-r--r--src/modules/m_services_account.cpp5
-rw-r--r--src/modules/m_sslmodes.cpp4
13 files changed, 30 insertions, 22 deletions
diff --git a/src/modules/m_banredirect.cpp b/src/modules/m_banredirect.cpp
index 3b5e3fdd5..91a2a5ce2 100644
--- a/src/modules/m_banredirect.cpp
+++ b/src/modules/m_banredirect.cpp
@@ -285,9 +285,9 @@ class ModuleBanRedirect : public Module
}
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if (chan)
+ if (!override && chan)
{
BanRedirectList* redirects = re.extItem.Get(chan);
diff --git a/src/modules/m_cban.cpp b/src/modules/m_cban.cpp
index 43b6742fd..869a5a5e6 100644
--- a/src/modules/m_cban.cpp
+++ b/src/modules/m_cban.cpp
@@ -191,10 +191,12 @@ class ModuleCBan : public Module, public Stats::EventListener
return MOD_RES_DENY;
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- XLine *rl = ServerInstance->XLines->MatchesLine("CBAN", cname);
+ if (override)
+ return MOD_RES_PASSTHRU;
+ XLine *rl = ServerInstance->XLines->MatchesLine("CBAN", cname);
if (rl)
{
// Channel is banned.
diff --git a/src/modules/m_denychans.cpp b/src/modules/m_denychans.cpp
index c316a9da4..9e7454c0e 100644
--- a/src/modules/m_denychans.cpp
+++ b/src/modules/m_denychans.cpp
@@ -144,8 +144,11 @@ class ModuleDenyChannels : public Module
goodchannels.swap(goodchans);
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
+ if (!override)
+ return MOD_RES_PASSTHRU;
+
for (const auto& badchan : badchannels)
{
// If the channel does not match the current entry we have nothing else to do.
diff --git a/src/modules/m_joinflood.cpp b/src/modules/m_joinflood.cpp
index 52991d3a7..47f904620 100644
--- a/src/modules/m_joinflood.cpp
+++ b/src/modules/m_joinflood.cpp
@@ -168,9 +168,9 @@ class ModuleJoinFlood
ignoreuntil = ServerInstance->Time() + splitwait;
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if (chan)
+ if (!override && chan)
{
joinfloodsettings *f = jf.ext.Get(chan);
if (f && f->islocked())
diff --git a/src/modules/m_kicknorejoin.cpp b/src/modules/m_kicknorejoin.cpp
index 78a5031e4..321ad7659 100644
--- a/src/modules/m_kicknorejoin.cpp
+++ b/src/modules/m_kicknorejoin.cpp
@@ -138,9 +138,9 @@ public:
{
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if (chan)
+ if (!override && chan)
{
const KickRejoinData* data = kr.ext.Get(chan);
if ((data) && !invapi->IsInvited(user, chan) && (!data->canjoin(user)))
diff --git a/src/modules/m_ojoin.cpp b/src/modules/m_ojoin.cpp
index aed598231..3238db3eb 100644
--- a/src/modules/m_ojoin.cpp
+++ b/src/modules/m_ojoin.cpp
@@ -118,7 +118,7 @@ class ModuleOjoin : public Module
{
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
if (mycommand.active)
{
diff --git a/src/modules/m_operchans.cpp b/src/modules/m_operchans.cpp
index 4f5a0f74c..2b69b2f09 100644
--- a/src/modules/m_operchans.cpp
+++ b/src/modules/m_operchans.cpp
@@ -75,9 +75,9 @@ class ModuleOperChans
{
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if (chan && chan->IsModeSet(oc) && !user->IsOper())
+ if (!override && chan && chan->IsModeSet(oc) && !user->IsOper())
{
user->WriteNumeric(ERR_CANTJOINOPERSONLY, chan->name, InspIRCd::Format("Only server operators may join %s (+O is set)", chan->name.c_str()));
return MOD_RES_DENY;
diff --git a/src/modules/m_operprefix.cpp b/src/modules/m_operprefix.cpp
index a32909241..e32eb52b7 100644
--- a/src/modules/m_operprefix.cpp
+++ b/src/modules/m_operprefix.cpp
@@ -72,7 +72,7 @@ class ModuleOperPrefixMode : public Module
*/
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
if ((user->IsOper()) && (!user->IsModeSet(hideopermode)))
privs.push_back('y');
diff --git a/src/modules/m_override.cpp b/src/modules/m_override.cpp
index 60aa866d9..b0022b207 100644
--- a/src/modules/m_override.cpp
+++ b/src/modules/m_override.cpp
@@ -188,9 +188,9 @@ class ModuleOverride
return MOD_RES_PASSTHRU;
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if (user->IsOper())
+ if (user->IsOper() && !override)
{
if (chan)
{
diff --git a/src/modules/m_redirect.cpp b/src/modules/m_redirect.cpp
index 166c89da4..ea295db03 100644
--- a/src/modules/m_redirect.cpp
+++ b/src/modules/m_redirect.cpp
@@ -95,9 +95,9 @@ class ModuleRedirect : public Module
{
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if (chan)
+ if (!override && chan)
{
if (chan->IsModeSet(re) && chan->IsModeSet(limitmode))
{
diff --git a/src/modules/m_restrictchans.cpp b/src/modules/m_restrictchans.cpp
index 5b589442e..b6e78ba40 100644
--- a/src/modules/m_restrictchans.cpp
+++ b/src/modules/m_restrictchans.cpp
@@ -76,10 +76,10 @@ class ModuleRestrictChans : public Module
allowregistered = tag->getBool("allowregistered", false);
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
// channel does not yet exist (record is null, about to be created IF we were to allow it)
- if (!chan && !CanCreateChannel(user, cname))
+ if (!override && !chan && !CanCreateChannel(user, cname))
{
user->WriteNumeric(ERR_BANNEDFROMCHAN, cname, "You are not allowed to create new channels.");
return MOD_RES_DENY;
diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp
index cdef9ec04..4f9f08c00 100644
--- a/src/modules/m_services_account.cpp
+++ b/src/modules/m_services_account.cpp
@@ -294,8 +294,11 @@ class ModuleServicesAccount
return HandleMessage(user, target);
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
+ if (override)
+ return MOD_RES_PASSTHRU;
+
std::string *account = accountname.Get(user);
bool is_registered = account && !account->empty();
diff --git a/src/modules/m_sslmodes.cpp b/src/modules/m_sslmodes.cpp
index f84cf2be6..225734db0 100644
--- a/src/modules/m_sslmodes.cpp
+++ b/src/modules/m_sslmodes.cpp
@@ -183,9 +183,9 @@ class ModuleSSLModes
{
}
- ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) override
+ ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven, bool override) override
{
- if(chan && chan->IsModeSet(sslm))
+ if (!override && chan && chan->IsModeSet(sslm))
{
if (!api)
{