From 042e7de2f77ed87bc8879f17c86c3ce76ba345f4 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Tue, 4 Apr 2023 21:52:01 -0700 Subject: [PATCH] Add support for editing header_checks and mime_header_checks separately https://github.com/webmin/webmin/issues/1880 --- postfix/header.cgi | 21 +++++++++++++++------ postfix/lang/en | 5 ++++- postfix/postfix-lib.pl | 24 ++++++++++++++++++++++++ postfix/save_opts_header.cgi | 9 +++++++-- 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/postfix/header.cgi b/postfix/header.cgi index 88f89d6c1..73e7a5d46 100755 --- a/postfix/header.cgi +++ b/postfix/header.cgi @@ -20,21 +20,30 @@ print &ui_table_start($text{'header_title'}, "width=100%", 2); &option_mapfield("header_checks", 60); +&option_mapfield("mime_header_checks", 60); + print &ui_table_end(); print &ui_form_end([ [ undef, $text{'opts_save'} ] ]); # Header map contents print &ui_hr(); -if (&get_current_value("header_checks") eq "") -{ - print $text{'no_map'},"

\n"; -} -else -{ +if (&get_real_value("header_checks") eq "") { + print $text{'opts_header_checks_no_map'},"

\n"; +} else { &generate_map_edit("header_checks", $text{'map_click'}." ". &hlink($text{'help_map_format'}, "header"), 1, $text{'header_name'}, $text{'header_value'}); } +# MIME header map contents +print &ui_hr(); +if (&get_real_value("mime_header_checks") eq "") { + print $text{'opts_mime_header_checks_no_map'},"

\n"; +} else { + &generate_map_edit("mime_header_checks", $text{'map_click'}." ". + &hlink($text{'help_map_format'}, "header"), 1, + $text{'header_name'}, $text{'header_value'}); +} + &ui_print_footer("", $text{'index_return'}); diff --git a/postfix/lang/en b/postfix/lang/en index abb8f8089..7d6c2c81f 100644 --- a/postfix/lang/en +++ b/postfix/lang/en @@ -639,7 +639,10 @@ searchq_none=No queued messages found. header_title=Header Checks header_ecannot=You are not allowed to edit header checks header_eregexp=The header checks map must be in the format regexp:filename -opts_header_checks=MIME header checking tables +opts_header_checks=Header checking tables +opts_mime_header_checks=MIME header checking tables +opts_header_checks_no_map=(No header checking map is currently defined. Define a map first, then you can edit it) +opts_mime_header_checks_no_map=(No MIME header checking map is currently defined. Define a map first, then you can edit it) header_name=Regular expression header_value=Action for matches header_discard=Discard (with log message..) diff --git a/postfix/postfix-lib.pl b/postfix/postfix-lib.pl index afc72f50d..30e9b148a 100755 --- a/postfix/postfix-lib.pl +++ b/postfix/postfix-lib.pl @@ -694,6 +694,12 @@ sub regenerate_header_table ®enerate_any_table("header_checks"); } +# regenerate_mime_header_table() +sub regenerate_mime_header_table +{ + ®enerate_any_table("mime_header_checks"); +} + # regenerate_body_table() sub regenerate_body_table { @@ -1617,6 +1623,24 @@ if ($_[1]->{'value'}) { return $rv; } +# Functions for editing the mime_header_checks map nicely +sub edit_name_mime_header_checks +{ +return &edit_name_header_checks(@_); +} +sub parse_name_mime_header_checks +{ +return &parse_name_header_checks(@_); +} +sub edit_value_mime_header_checks +{ +return &edit_value_header_checks(@_); +} +sub parse_value_mime_header_checks +{ +return &parse_value_header_checks(@_); +} + # Functions for editing the body_checks map (same as header_checks) sub edit_name_body_checks { diff --git a/postfix/save_opts_header.cgi b/postfix/save_opts_header.cgi index ed52dc318..b3551a163 100755 --- a/postfix/save_opts_header.cgi +++ b/postfix/save_opts_header.cgi @@ -19,15 +19,20 @@ $access{'header'} || &error($text{'header_ecannot'}); &lock_postfix_files(); &before_save(); -$in{'header_checks'} =~ /^(regexp|pcre):\/\S+$/ || +$in{'header_checks_def'} || + $in{'header_checks'} =~ /^(regexp|pcre):\/\S+$/ || + &error($text{'header_eregexp'}); +$in{'mime_header_checks_def'} || + $in{'mime_header_checks'} =~ /^(regexp|pcre):\/\S+$/ || &error($text{'header_eregexp'}); &save_options(\%in); &ensure_map("header_checks"); +&ensure_map("mime_header_checks"); &after_save(); &unlock_postfix_files(); - ®enerate_header_table(); +®enerate_mime_header_table(); $err = &reload_postfix(); &error($err) if ($err);