all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pmg-devel] [PATCH pmg-api] ruledb: modfield: properly handle fields spanning multiple lines
@ 2022-11-15 12:40 Stoiko Ivanov
  2022-11-15 14:22 ` Dominik Csapak
  2022-11-15 14:32 ` [pmg-devel] applied: " Thomas Lamprecht
  0 siblings, 2 replies; 3+ messages in thread
From: Stoiko Ivanov @ 2022-11-15 12:40 UTC (permalink / raw)
  To: pmg-devel

this commit fixes aa3a005a5e7e3ad69ed35e9957fa514f73315c72

MIME::Words::encode_mimewords does not deal with multiline headers
(the warning about this being a 'quick and dirty' solution [0]
partially tells as much).

Instead - split the replacement value after variable substition on:
'\r?\n\s*' (to capture multi-line values like __SPAM_INFO__, but also
already folded headers, which are separated by '\r?\n\s+') and do the
substitution for each line seperately.

reported in our community forum:
https://forum.proxmox.com/threads/.118001/

[0] https://metacpan.org/pod/MIME::Words#PUBLIC-INTERFACE

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 src/PMG/RuleDB/ModField.pm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/PMG/RuleDB/ModField.pm b/src/PMG/RuleDB/ModField.pm
index fb15076..4ebb618 100644
--- a/src/PMG/RuleDB/ModField.pm
+++ b/src/PMG/RuleDB/ModField.pm
@@ -98,10 +98,15 @@ sub execute {
     my ($self, $queue, $ruledb, $mod_group, $targets, 
 	$msginfo, $vars, $marks) = @_;
 
-    my $fvalue = PMG::Utils::subst_values ($self->{field_value}, $vars);
+    my $fvalue = '';
+
+    foreach my $line (split('\r?\n\s*',PMG::Utils::subst_values ($self->{field_value}, $vars))) {
+	$fvalue .= "\n" if $fvalue;
+	$fvalue .= encode_mimewords(encode('UTF-8', $line), 'Charset' => 'UTF-8');
+    }
 
     # support for multiline values (i.e. __SPAM_INFO__)
-    $fvalue =~ s/\r?\n/\n\t/sg; # indent content
+    $fvalue =~ s/\n/\n\t/sg; # indent content
     $fvalue =~ s/\n\s*\n//sg;   # remove empty line
     $fvalue =~ s/\n?\s*$//s;    # remove trailing spaces
 
@@ -109,7 +114,7 @@ sub execute {
 
     foreach my $ta (@$subgroups) {
 	my ($tg, $e) = (@$ta[0], @$ta[1]);
-	$e->head->replace($self->{field}, encode_mimewords(encode('UTF-8', $fvalue), "Charset" => "UTF-8"));
+	$e->head->replace($self->{field}, $fvalue);
     }
 }
 
-- 
2.30.2





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-11-15 14:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-15 12:40 [pmg-devel] [PATCH pmg-api] ruledb: modfield: properly handle fields spanning multiple lines Stoiko Ivanov
2022-11-15 14:22 ` Dominik Csapak
2022-11-15 14:32 ` [pmg-devel] applied: " Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal