From 7c847699971d5a848f6b738cf82fdd79169dda25 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 19 Apr 2024 14:14:10 +0100 Subject: [PATCH] [Minor] Support UTF8 in Received flags Issue: #4919 --- src/libmime/received.cxx | 19 ++++++++++++++++--- src/libmime/received.hxx | 7 ++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/libmime/received.cxx b/src/libmime/received.cxx index ab0a65a69..76b210a88 100644 --- a/src/libmime/received.cxx +++ b/src/libmime/received.cxx @@ -1,11 +1,11 @@ -/*- - * Copyright 2021 Vsevolod Stakhov +/* + * Copyright 2024 Vsevolod Stakhov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -616,13 +616,25 @@ received_header_parse(received_header_chain &chain, rspamd_mempool_t *pool, static constexpr const auto protos_map = frozen::make_unordered_map({{"smtp", received_flags::SMTP}, {"esmtp", received_flags::ESMTP}, + {"utf8esmtp", received_flags::ESMTP | + received_flags::UTF8}, {"esmtpa", received_flags::ESMTPA | received_flags::AUTHENTICATED}, + {"utf8esmtpa", received_flags::ESMTPA | + received_flags::AUTHENTICATED | + received_flags::UTF8}, {"esmtpsa", received_flags::ESMTPSA | received_flags::SSL | received_flags::AUTHENTICATED}, + {"utf8esmtpsa", received_flags::ESMTPSA | + received_flags::SSL | + received_flags::AUTHENTICATED | + received_flags::UTF8}, {"esmtps", received_flags::ESMTPS | received_flags::SSL}, + {"utf8esmtps", received_flags::ESMTPS | + received_flags::SSL | + received_flags::UTF8}, {"lmtp", received_flags::LMTP}, {"imap", received_flags::IMAP}, {"imaps", received_flags::IMAP | @@ -800,6 +812,7 @@ received_export_to_lua(received_header_chain *chain, lua_State *L) -> bool push_flag(rh, received_flags::ARTIFICIAL, "artificial"); push_flag(rh, received_flags::AUTHENTICATED, "authenticated"); push_flag(rh, received_flags::SSL, "ssl"); + push_flag(rh, received_flags::UTF8, "utf8"); lua_setfield(L, -2, "flags"); auto push_nullable_string = [L](const mime_string &st, const char *field) { diff --git a/src/libmime/received.hxx b/src/libmime/received.hxx index 4f423f1a3..5e2b1bfb9 100644 --- a/src/libmime/received.hxx +++ b/src/libmime/received.hxx @@ -1,11 +1,11 @@ -/*- - * Copyright 2021 Vsevolod Stakhov +/* + * Copyright 2024 Vsevolod Stakhov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -58,6 +58,7 @@ enum class received_flags { ARTIFICIAL = (1u << 11u), SSL = (1u << 12u), AUTHENTICATED = (1u << 13u), + UTF8 = 1u << 14u, }; constexpr received_flags operator|(received_flags lhs, received_flags rhs) -- 2.39.5