From c3c97b917de8426cc0c0e9d87eda4efcfa88ef61 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 13 Jul 2024 00:38:25 +0100 Subject: Allow using /ACCEPT to override more blocking modes. --- src/modules/m_sslmodes.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/modules/m_sslmodes.cpp') diff --git a/src/modules/m_sslmodes.cpp b/src/modules/m_sslmodes.cpp index e05c60d31..1304c296f 100644 --- a/src/modules/m_sslmodes.cpp +++ b/src/modules/m_sslmodes.cpp @@ -26,6 +26,7 @@ #include "inspircd.h" +#include "modules/callerid.h" #include "modules/ctctags.h" #include "modules/extban.h" #include "modules/ssl.h" @@ -165,6 +166,7 @@ class ModuleSSLModes final { private: UserCertificateAPI api; + CallerID::API calleridapi; SSLMode sslm; SSLModeUser sslquery; FingerprintExtBan extban; @@ -174,6 +176,7 @@ public: : Module(VF_VENDOR, "Adds channel mode z (sslonly) which prevents users who are not connecting using TLS from joining the channel and user mode z (sslqueries) to prevent messages from non-TLS users.") , CTCTags::EventListener(this) , api(this) + , calleridapi(this) , sslm(this, api) , sslquery(this, api) , extban(this, api) @@ -216,7 +219,7 @@ public: /* If the target is +z */ if (target->IsModeSet(sslquery)) { - if (!api || !api->IsSecure(user)) + if (!api || !api->IsSecure(user) || (calleridapi && !calleridapi->IsOnAcceptList(user, target))) { /* The sending user is not on an TLS connection */ user->WriteNumeric(Numerics::CannotSendTo(target, "messages", &sslquery)); -- cgit v1.3.1-10-gc9f91 From 3b9e22381bac094b20daa2715fefa90978f2d465 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 13 Jul 2024 15:29:29 +0100 Subject: Use auto when extracting the internal type of a message target. --- src/coremods/core_message.cpp | 2 +- src/modules/m_account.cpp | 4 ++-- src/modules/m_alias.cpp | 2 +- src/modules/m_anticaps.cpp | 2 +- src/modules/m_blockcolor.cpp | 2 +- src/modules/m_callerid.cpp | 2 +- src/modules/m_chanfilter.cpp | 2 +- src/modules/m_commonchans.cpp | 2 +- src/modules/m_dccallow.cpp | 2 +- src/modules/m_delayjoin.cpp | 4 ++-- src/modules/m_delaymsg.cpp | 2 +- src/modules/m_filter.cpp | 4 ++-- src/modules/m_ircv3_ctctags.cpp | 2 +- src/modules/m_ircv3_echomessage.cpp | 12 ++++++------ src/modules/m_messageflood.cpp | 2 +- src/modules/m_muteban.cpp | 2 +- src/modules/m_noctcp.cpp | 2 +- src/modules/m_nonotice.cpp | 2 +- src/modules/m_opmoderated.cpp | 2 +- src/modules/m_repeat.cpp | 2 +- src/modules/m_restrictmsg.cpp | 2 +- src/modules/m_spanningtree/main.cpp | 8 ++++---- src/modules/m_sslmodes.cpp | 2 +- src/modules/m_stripcolor.cpp | 4 ++-- 24 files changed, 36 insertions(+), 36 deletions(-) (limited to 'src/modules/m_sslmodes.cpp') diff --git a/src/coremods/core_message.cpp b/src/coremods/core_message.cpp index 591f19ea5..944fa3828 100644 --- a/src/coremods/core_message.cpp +++ b/src/coremods/core_message.cpp @@ -423,7 +423,7 @@ public: if (!IS_LOCAL(user) || target.type != MessageTarget::TYPE_CHANNEL) return MOD_RES_PASSTHRU; - Channel* chan = target.Get(); + auto* chan = target.Get(); if (chan->IsModeSet(noextmsgmode) && !chan->HasUser(user)) { // The noextmsg mode is set and the user is not in the channel. diff --git a/src/modules/m_account.cpp b/src/modules/m_account.cpp index d369f09d8..2d7e487a6 100644 --- a/src/modules/m_account.cpp +++ b/src/modules/m_account.cpp @@ -232,7 +232,7 @@ public: { case MessageTarget::TYPE_CHANNEL: { - Channel* targetchan = target.Get(); + auto* targetchan = target.Get(); if (!targetchan->IsModeSet(regmoderatedmode) || account) return MOD_RES_PASSTHRU; @@ -246,7 +246,7 @@ public: } case MessageTarget::TYPE_USER: { - User* targetuser = target.Get(); + auto* targetuser = target.Get(); if (!targetuser->IsModeSet(regdeafmode) || account) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_alias.cpp b/src/modules/m_alias.cpp index a4f13a438..a7621a806 100644 --- a/src/modules/m_alias.cpp +++ b/src/modules/m_alias.cpp @@ -223,7 +223,7 @@ public: return; } - Channel* c = target.Get(); + auto* c = target.Get(); std::string scommand; // text is like "!moo cows bite me", we want "!moo" first diff --git a/src/modules/m_anticaps.cpp b/src/modules/m_anticaps.cpp index 960ddab44..4514406d2 100644 --- a/src/modules/m_anticaps.cpp +++ b/src/modules/m_anticaps.cpp @@ -209,7 +209,7 @@ public: return MOD_RES_PASSTHRU; // We only act if the channel has the mode set. - Channel* channel = target.Get(); + auto* channel = target.Get(); if (!channel->IsModeSet(&mode)) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_blockcolor.cpp b/src/modules/m_blockcolor.cpp index 5f387212a..c402eff83 100644 --- a/src/modules/m_blockcolor.cpp +++ b/src/modules/m_blockcolor.cpp @@ -51,7 +51,7 @@ public: { if ((target.type == MessageTarget::TYPE_CHANNEL) && (IS_LOCAL(user))) { - Channel* c = target.Get(); + auto* c = target.Get(); ModResult res = exemptionprov.Check(user, c, "blockcolor"); if (res == MOD_RES_ALLOW) diff --git a/src/modules/m_callerid.cpp b/src/modules/m_callerid.cpp index 50512824d..a5124ba90 100644 --- a/src/modules/m_callerid.cpp +++ b/src/modules/m_callerid.cpp @@ -411,7 +411,7 @@ public: if (!IS_LOCAL(user) || target.type != MessageTarget::TYPE_USER) return MOD_RES_PASSTHRU; - User* dest = target.Get(); + auto* dest = target.Get(); if (!dest->IsModeSet(myumode) || (user == dest)) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp index 39ad4f019..d70fd272f 100644 --- a/src/modules/m_chanfilter.cpp +++ b/src/modules/m_chanfilter.cpp @@ -153,7 +153,7 @@ public: if (target.type != MessageTarget::TYPE_CHANNEL) return MOD_RES_PASSTHRU; - Channel* chan = target.Get(); + auto* chan = target.Get(); const ChanFilter::ListItem* match = Match(user, chan, details.text); if (match) { diff --git a/src/modules/m_commonchans.cpp b/src/modules/m_commonchans.cpp index 33ed4bd99..2e4b53cdf 100644 --- a/src/modules/m_commonchans.cpp +++ b/src/modules/m_commonchans.cpp @@ -53,7 +53,7 @@ private: if (target.type != MessageTarget::TYPE_USER) return MOD_RES_PASSTHRU; - User* targetuser = target.Get(); + auto* targetuser = target.Get(); if (IsExempt(user, targetuser)) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp index af8155e37..e0f80ca2a 100644 --- a/src/modules/m_dccallow.cpp +++ b/src/modules/m_dccallow.cpp @@ -425,7 +425,7 @@ public: if (target.type == MessageTarget::TYPE_USER) { - User* u = target.Get(); + auto* u = target.Get(); /* Always allow a user to dcc themselves (although... why?) */ if (user == u) diff --git a/src/modules/m_delayjoin.cpp b/src/modules/m_delayjoin.cpp index 738ae17aa..160b276b2 100644 --- a/src/modules/m_delayjoin.cpp +++ b/src/modules/m_delayjoin.cpp @@ -222,7 +222,7 @@ void ModuleDelayJoin::OnUserTagMessage(User* user, const MessageTarget& target, if (target.type != MessageTarget::TYPE_CHANNEL) return; - Channel* channel = target.Get(); + auto* channel = target.Get(); djm.RevealUser(user, channel); } @@ -231,7 +231,7 @@ void ModuleDelayJoin::OnUserMessage(User* user, const MessageTarget& target, con if (target.type != MessageTarget::TYPE_CHANNEL) return; - Channel* channel = target.Get(); + auto* channel = target.Get(); djm.RevealUser(user, channel); } diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp index 52a03cc88..603e9e407 100644 --- a/src/modules/m_delaymsg.cpp +++ b/src/modules/m_delaymsg.cpp @@ -117,7 +117,7 @@ ModResult ModuleDelayMsg::HandleMessage(User* user, const MessageTarget& target) if (!IS_LOCAL(user) || target.type != MessageTarget::TYPE_CHANNEL) return MOD_RES_PASSTHRU; - Channel* channel = target.Get(); + auto* channel = target.Get(); Membership* memb = channel->GetUser(user); if (!memb) diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index 458dbc93c..bd509fc52 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -402,7 +402,7 @@ ModResult ModuleFilter::OnUserPreMessage(User* user, MessageTarget& msgtarget, M { case MessageTarget::TYPE_USER: { - User* t = msgtarget.Get(); + const auto* t = msgtarget.Get(); // Check if the target nick is exempted, if yes, ignore this message if (exemptednicks.count(t->nick)) return MOD_RES_PASSTHRU; @@ -413,7 +413,7 @@ ModResult ModuleFilter::OnUserPreMessage(User* user, MessageTarget& msgtarget, M } case MessageTarget::TYPE_CHANNEL: { - Channel* t = msgtarget.Get(); + const auto* t = msgtarget.Get(); if (exemptedchans.count(t->name)) return MOD_RES_PASSTHRU; break; diff --git a/src/modules/m_ircv3_ctctags.cpp b/src/modules/m_ircv3_ctctags.cpp index 669ebadc6..ce624075d 100644 --- a/src/modules/m_ircv3_ctctags.cpp +++ b/src/modules/m_ircv3_ctctags.cpp @@ -371,7 +371,7 @@ public: { if (IS_LOCAL(user) && target.type == MessageTarget::TYPE_CHANNEL) { - Channel* chan = target.Get(); + auto* chan = target.Get(); if (chan->IsModeSet(noextmsgmode) && !chan->HasUser(user)) { // The noextmsg mode is set and the user is not in the channel. diff --git a/src/modules/m_ircv3_echomessage.cpp b/src/modules/m_ircv3_echomessage.cpp index f57719c46..3d573d1ba 100644 --- a/src/modules/m_ircv3_echomessage.cpp +++ b/src/modules/m_ircv3_echomessage.cpp @@ -82,7 +82,7 @@ public: { case MessageTarget::TYPE_USER: { - User* destuser = target.Get(); + const auto* destuser = target.Get(); ClientProtocol::Messages::Privmsg privmsg(ClientProtocol::Messages::Privmsg::nocopy, user, destuser, text, details.type); privmsg.AddTags(tags); AddEchoTag(privmsg); @@ -91,7 +91,7 @@ public: } case MessageTarget::TYPE_CHANNEL: { - Channel* chan = target.Get(); + const auto* chan = target.Get(); const char status = details.echo_original ? target.original_status : target.status; ClientProtocol::Messages::Privmsg privmsg(ClientProtocol::Messages::Privmsg::nocopy, user, chan, text, details.type, status); privmsg.AddTags(tags); @@ -101,7 +101,7 @@ public: } case MessageTarget::TYPE_SERVER: { - const std::string* servername = target.Get(); + const auto* servername = target.Get(); ClientProtocol::Messages::Privmsg privmsg(ClientProtocol::Messages::Privmsg::nocopy, user, *servername, text, details.type); privmsg.AddTags(tags); AddEchoTag(privmsg); @@ -124,7 +124,7 @@ public: { case MessageTarget::TYPE_USER: { - User* destuser = target.Get(); + const auto* destuser = target.Get(); CTCTags::TagMessage message(user, destuser, tags); AddEchoTag(message); localuser->Send(tagmsgprov, message); @@ -132,7 +132,7 @@ public: } case MessageTarget::TYPE_CHANNEL: { - Channel* chan = target.Get(); + const auto* chan = target.Get(); const char status = details.echo_original ? target.original_status : target.status; CTCTags::TagMessage message(user, chan, tags, status); AddEchoTag(message); @@ -141,7 +141,7 @@ public: } case MessageTarget::TYPE_SERVER: { - const std::string* servername = target.Get(); + const auto* servername = target.Get(); CTCTags::TagMessage message(user, servername->c_str(), tags); AddEchoTag(message); localuser->Send(tagmsgprov, message); diff --git a/src/modules/m_messageflood.cpp b/src/modules/m_messageflood.cpp index b9d321232..9d7006146 100644 --- a/src/modules/m_messageflood.cpp +++ b/src/modules/m_messageflood.cpp @@ -281,7 +281,7 @@ public: if (target.type != MessageTarget::TYPE_CHANNEL) return MOD_RES_PASSTHRU; - Channel* dest = target.Get(); + auto* dest = target.Get(); if ((!IS_LOCAL(user)) || !dest->IsModeSet(mf)) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_muteban.cpp b/src/modules/m_muteban.cpp index 1c1a19d1b..df91a9724 100644 --- a/src/modules/m_muteban.cpp +++ b/src/modules/m_muteban.cpp @@ -53,7 +53,7 @@ public: if (!IS_LOCAL(user) || target.type != MessageTarget::TYPE_CHANNEL) return MOD_RES_PASSTHRU; - Channel* chan = target.Get(); + auto* chan = target.Get(); if (extban.GetStatus(user, chan) == MOD_RES_DENY && chan->GetPrefixValue(user) < VOICE_VALUE) { if (!notifyuser) diff --git a/src/modules/m_noctcp.cpp b/src/modules/m_noctcp.cpp index 7bbb9feee..67dc11492 100644 --- a/src/modules/m_noctcp.cpp +++ b/src/modules/m_noctcp.cpp @@ -68,7 +68,7 @@ public: if (user->HasPrivPermission("channels/ignore-noctcp")) return MOD_RES_PASSTHRU; - Channel* c = target.Get(); + auto* c = target.Get(); for (const auto& [u, _] : c->GetUsers()) { if (u->IsModeSet(ncu)) diff --git a/src/modules/m_nonotice.cpp b/src/modules/m_nonotice.cpp index bf4a18bdc..af30474c6 100644 --- a/src/modules/m_nonotice.cpp +++ b/src/modules/m_nonotice.cpp @@ -49,7 +49,7 @@ public: { if ((details.type == MessageType::NOTICE) && (target.type == MessageTarget::TYPE_CHANNEL) && (IS_LOCAL(user))) { - Channel* c = target.Get(); + auto* c = target.Get(); ModResult res = exemptionprov.Check(user, c, "nonotice"); if (res == MOD_RES_ALLOW) diff --git a/src/modules/m_opmoderated.cpp b/src/modules/m_opmoderated.cpp index 9fcdd141b..ad29200c3 100644 --- a/src/modules/m_opmoderated.cpp +++ b/src/modules/m_opmoderated.cpp @@ -46,7 +46,7 @@ private: return MOD_RES_PASSTHRU; // Exempt channel members who have the appropriate privileges. - Channel* const chan = target.Get(); + auto* chan = target.Get(); if (chan->GetPrefixValue(user) > VOICE_VALUE) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_repeat.cpp b/src/modules/m_repeat.cpp index c334168d3..3492eca26 100644 --- a/src/modules/m_repeat.cpp +++ b/src/modules/m_repeat.cpp @@ -457,7 +457,7 @@ public: if (target.type != MessageTarget::TYPE_CHANNEL || !IS_LOCAL(user)) return MOD_RES_PASSTHRU; - Channel* chan = target.Get(); + auto* chan = target.Get(); ChannelSettings* settings = rm.ext.Get(chan); if (!settings) return MOD_RES_PASSTHRU; diff --git a/src/modules/m_restrictmsg.cpp b/src/modules/m_restrictmsg.cpp index 1ad71341b..42a17155c 100644 --- a/src/modules/m_restrictmsg.cpp +++ b/src/modules/m_restrictmsg.cpp @@ -35,7 +35,7 @@ private: { if ((target.type == MessageTarget::TYPE_USER) && (IS_LOCAL(user))) { - User* u = target.Get(); + const auto* u = target.Get(); // message allowed if: // (1) the sender is opered diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index cf44708db..47545b47e 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -417,7 +417,7 @@ void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& targ { case MessageTarget::TYPE_USER: { - User* d = target.Get(); + auto* d = target.Get(); if (!IS_LOCAL(d)) { CmdBuilder params(user, message_type); @@ -435,7 +435,7 @@ void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& targ } case MessageTarget::TYPE_SERVER: { - const std::string* serverglob = target.Get(); + const auto* serverglob = target.Get(); CmdBuilder par(user, message_type); par.push_tags(details.tags_out); par.push(std::string("$") + *serverglob); @@ -455,7 +455,7 @@ void ModuleSpanningTree::OnUserPostTagMessage(User* user, const MessageTarget& t { case MessageTarget::TYPE_USER: { - User* d = target.Get(); + auto* d = target.Get(); if (!IS_LOCAL(d)) { CmdBuilder params(user, "TAGMSG"); @@ -472,7 +472,7 @@ void ModuleSpanningTree::OnUserPostTagMessage(User* user, const MessageTarget& t } case MessageTarget::TYPE_SERVER: { - const std::string* serverglob = target.Get(); + const auto* serverglob = target.Get(); CmdBuilder par(user, "TAGMSG"); par.push_tags(details.tags_out); par.push(std::string("$") + *serverglob); diff --git a/src/modules/m_sslmodes.cpp b/src/modules/m_sslmodes.cpp index 1304c296f..3fb5fda73 100644 --- a/src/modules/m_sslmodes.cpp +++ b/src/modules/m_sslmodes.cpp @@ -210,7 +210,7 @@ public: if (msgtarget.type != MessageTarget::TYPE_USER) return MOD_RES_PASSTHRU; - User* target = msgtarget.Get(); + auto* target = msgtarget.Get(); /* If one or more of the parties involved is a services user, we won't stop it. */ if (user->server->IsService() || target->server->IsService()) diff --git a/src/modules/m_stripcolor.cpp b/src/modules/m_stripcolor.cpp index af692cf11..b09f698e3 100644 --- a/src/modules/m_stripcolor.cpp +++ b/src/modules/m_stripcolor.cpp @@ -58,13 +58,13 @@ public: { case MessageTarget::TYPE_USER: { - User* t = target.Get(); + const auto* t = target.Get(); active = t->IsModeSet(usc); break; } case MessageTarget::TYPE_CHANNEL: { - Channel* t = target.Get(); + auto* t = target.Get(); ModResult res = exemptionprov.Check(user, t, "stripcolor"); if (res == MOD_RES_ALLOW) -- cgit v1.3.1-10-gc9f91