From 6f4f85d33c6ea41ba2956cbc4b75bd681b1c26d0 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Sun, 24 May 2026 13:08:58 -0700 Subject: [PATCH] Add UI option to control when update email is sent https://github.com/webmin/webmin/issues/2726 --- package-updates/index.cgi | 7 +++++++ package-updates/lang/en | 4 ++++ package-updates/save_sched.cgi | 1 + package-updates/update.pl | 6 +++++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package-updates/index.cgi b/package-updates/index.cgi index 00079060e..8df9e0eb5 100755 --- a/package-updates/index.cgi +++ b/package-updates/index.cgi @@ -220,6 +220,13 @@ else { } print &ui_table_row($text{'index_email'}, $efield); +# When to send email +print &ui_table_row($text{'index_ewhen'}, + &ui_radio("when", int($config{'sched_when'}), + [ [ 0, $text{'index_ewhen0'} ], + [ 1, $text{'index_ewhen1'} ], + [ 2, $text{'index_ewhen2'} ] ])); + # Install or just notify? $action_ui = &ui_select("action", int($config{'sched_action'}), [ [ -1, $text{'index_action-1'} ], diff --git a/package-updates/lang/en b/package-updates/lang/en index f04b2439a..ef0ebeae1 100644 --- a/package-updates/lang/en +++ b/package-updates/lang/en @@ -19,6 +19,10 @@ index_schedd=day index_schedw=week index_email=Email updates report to index_email_def=Webmin default ($1) +index_ewhen=Send email when +index_ewhen0=Any update is installed +index_ewhen1=Any update failed +index_ewhen2=Never (but still install updates) index_action=Action when update needed index_action-1=Just notify for security updates index_action0=Just notify for any updates diff --git a/package-updates/save_sched.cgi b/package-updates/save_sched.cgi index 45cf7c8de..1ad97dc12 100755 --- a/package-updates/save_sched.cgi +++ b/package-updates/save_sched.cgi @@ -6,6 +6,7 @@ require './package-updates-lib.pl'; &lock_file($module_config_file); $config{'sched_email'} = $in{'email_def'} ? '*' : $in{'email'}; +$config{'sched_when'} = $in{'when'}; $config{'sched_action'} = $in{'action'}; &save_module_config(); &unlock_file($module_config_file); diff --git a/package-updates/update.pl b/package-updates/update.pl index 3ea498543..7cc4e6a2d 100755 --- a/package-updates/update.pl +++ b/package-updates/update.pl @@ -33,6 +33,7 @@ else { } &start_update_progress([ map { $_->{'name'} } @todo ]); $icount = 0; +$fcount = 0; foreach $t (@todo) { next if ($already{$t->{'update'}}); my $umsg = $t->{'security'} ? "security update" : "update"; @@ -57,6 +58,7 @@ foreach $t (@todo) { $body .= "However, this $umsg could not be installed! ". "Try the update manually\nusing the Package ". "Updates module.\n\n"; + $fcount++; } foreach $p (@$done) { $already{$p}++; @@ -89,7 +91,9 @@ if ($tellcount) { # Email the admin $emailto = $config{'sched_email'} eq '*' ? $gconfig{'webmin_email_to'} : $config{'sched_email'}; -if ($emailto && $body) { +if ($emailto && $body && + ($config{'sched_when'} == 0 || + $config{'sched_when'} == 1 && $fcount)) { &foreign_require("mailboxes", "mailboxes-lib.pl"); my $from = &mailboxes::get_from_address(); my $mail = { 'headers' =>