From 455e8dadb217746be0ea9bb7b57ffa88b1d77ebb Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 23 Apr 2022 09:18:01 +0100 Subject: Respect the invite announcement level when announcing knocks. Closes #1976. --- src/modules/m_knock.cpp | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/modules/m_knock.cpp b/src/modules/m_knock.cpp index e7e55f0e9..135d61611 100644 --- a/src/modules/m_knock.cpp +++ b/src/modules/m_knock.cpp @@ -26,6 +26,7 @@ #include "inspircd.h" +#include "modules/invite.h" enum { @@ -43,8 +44,10 @@ enum */ class CommandKnock : public Command { + private: SimpleChannelModeHandler& noknockmode; ChanModeReference inviteonlymode; + Invite::API inviteapi; public: bool sendnotice; @@ -53,6 +56,7 @@ class CommandKnock : public Command : Command(Creator,"KNOCK", 2, 2) , noknockmode(Noknockmode) , inviteonlymode(Creator, "inviteonly") + , inviteapi(Creator) { syntax = " :"; Penalty = 5; @@ -85,9 +89,33 @@ class CommandKnock : public Command return CMD_FAILURE; } + // Work out who we should send the knock to. + char status; + switch (inviteapi->GetAnnounceState()) + { + case Invite::ANNOUNCE_ALL: + { + status = 0; + break; + } + + case Invite::ANNOUNCE_DYNAMIC: + { + PrefixMode* mh = ServerInstance->Modes.FindNearestPrefixMode(HALFOP_VALUE); + status = mh->GetPrefix() ? mh->GetPrefix() : '@'; + break; + } + + default: + { + status = '@'; + break; + } + } + if (sendnotice) { - c->WriteNotice(InspIRCd::Format("User %s is KNOCKing on %s (%s)", user->nick.c_str(), c->name.c_str(), parameters[1].c_str())); + c->WriteNotice(InspIRCd::Format("User %s is KNOCKing on %s (%s)", user->nick.c_str(), c->name.c_str(), parameters[1].c_str()), status); user->WriteNotice("KNOCKing on " + c->name); } @@ -97,7 +125,7 @@ class CommandKnock : public Command numeric.push(c->name).push(user->GetFullHost()).push("is KNOCKing: " + parameters[1]); ClientProtocol::Messages::Numeric numericmsg(numeric, c->name); - c->Write(ServerInstance->GetRFCEvents().numeric, numericmsg); + c->Write(ServerInstance->GetRFCEvents().numeric, numericmsg, status); user->WriteNumeric(RPL_KNOCKDLVR, c->name, "KNOCKing on channel"); } -- cgit v1.3.1-10-gc9f91 From 4284b7a461bbe4c49cba0a8483cb85fc81750b97 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 24 Apr 2022 17:05:50 +0100 Subject: Allow building with license-incompatible modules if manually enabled. [skip alpine ci] [skip macos ci] [skip ubuntu ci] --- src/modules/extra/m_geo_maxmind.cpp | 2 +- src/modules/extra/m_ssl_openssl.cpp | 4 ++-- win/conanfile.txt | 4 ++-- win/modules/CMakeLists.txt | 3 +++ 4 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/modules/extra/m_geo_maxmind.cpp b/src/modules/extra/m_geo_maxmind.cpp index 86bb7bfca..c8764a367 100644 --- a/src/modules/extra/m_geo_maxmind.cpp +++ b/src/modules/extra/m_geo_maxmind.cpp @@ -28,7 +28,7 @@ /// $PackageInfo: require_system("ubuntu" "16.04") libmaxminddb-dev pkg-config #ifdef _WIN32 -# pragma comment(lib, "libmaxminddb.lib") +# pragma comment(lib, "maxminddb.lib") #endif #include "inspircd.h" diff --git a/src/modules/extra/m_ssl_openssl.cpp b/src/modules/extra/m_ssl_openssl.cpp index 58e9e7514..3bbffebcf 100644 --- a/src/modules/extra/m_ssl_openssl.cpp +++ b/src/modules/extra/m_ssl_openssl.cpp @@ -77,8 +77,8 @@ #endif #ifdef _WIN32 -# pragma comment(lib, "ssleay32.lib") -# pragma comment(lib, "libeay32.lib") +# pragma comment(lib, "libcrypto.lib") +# pragma comment(lib, "libssl.lib") #endif // Compatibility layer to allow OpenSSL 1.0 to use the 1.1 API. diff --git a/win/conanfile.txt b/win/conanfile.txt index 9d7c34c34..46147dba9 100644 --- a/win/conanfile.txt +++ b/win/conanfile.txt @@ -1,4 +1,4 @@ -# Last updated: 2022-04-05 +# Last updated: 2022-04-24 # # Modules we can't legally ship: geo_maxmind, ssl_mbedtls, ssl_openssl # Modules which don't apply to Windows: regex_posix, sslrehashsignal @@ -10,7 +10,7 @@ argon2/20190702 libmysqlclient/8.0.25 libpq/14.2 # mbedtls/3.1.0 -# openssl/3.0.2 +# openssl/1.1.1n # unable to upgrade yet because of dependency issues pcre/8.45 re2/20220201 sqlite3/3.38.1 diff --git a/win/modules/CMakeLists.txt b/win/modules/CMakeLists.txt index 2a8e7d219..c9c5228da 100644 --- a/win/modules/CMakeLists.txt +++ b/win/modules/CMakeLists.txt @@ -15,10 +15,13 @@ if(EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake") endfunction() enable_extra("argon2" "ARGON2") + enable_extra("geo_maxmind" "LIBMAXMINDDB") enable_extra("mysql" "LIBMYSQLCLIENT") enable_extra("pgsql" "LIBPQ") enable_extra("regex_pcre" "PCRE") enable_extra("regex_re2" "RE2") + enable_extra("ssl_mbedtls" "MBEDTLS") + enable_extra("ssl_openssl" "OPENSSL") enable_extra("sqlite3" "SQLITE3") link_directories("${CMAKE_BINARY_DIR}/extradll" "${CMAKE_BINARY_DIR}/extralib") -- cgit v1.3.1-10-gc9f91 From cf3be77fbf0e1f3764219f2d994d839f93f282c3 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 27 Feb 2021 18:37:00 +0000 Subject: Implement support for the IRCv3 bot tag. --- src/modules/m_botmode.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/modules/m_botmode.cpp b/src/modules/m_botmode.cpp index 1ef6663f9..5f455270c 100644 --- a/src/modules/m_botmode.cpp +++ b/src/modules/m_botmode.cpp @@ -45,8 +45,12 @@ class BotTag : public ClientProtocol::MessageTagProvider void OnPopulateTags(ClientProtocol::Message& msg) CXX11_OVERRIDE { User* const user = msg.GetSourceUser(); - if (user && user->IsModeSet(botmode)) - msg.AddTag("inspircd.org/bot", this, ""); + if (!user || !user->IsModeSet(botmode)) + return; + + // TODO: remove inspircd.org/bot in v4. + msg.AddTag("bot", this, ""); + msg.AddTag("inspircd.org/bot", this, ""); } bool ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) CXX11_OVERRIDE -- cgit v1.3.1-10-gc9f91