From 7628a7329db978e0ab8bf02ad0d480216476d59a Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Wed, 10 Apr 2024 23:37:47 +0300 Subject: [PATCH] Add EOL display and configurable option to Operating System and Environment page --- webmin/change_os.cgi | 12 ++++++++++++ webmin/edit_os.cgi | 11 +++++++++++ webmin/os-eol-lib.pl | 4 ++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/webmin/change_os.cgi b/webmin/change_os.cgi index f18a41ea2..fda101894 100755 --- a/webmin/change_os.cgi +++ b/webmin/change_os.cgi @@ -28,6 +28,18 @@ elsif ($in{'type'} ne $gconfig{'real_os_type'} || $in{'iversion'} || &error($text{'os_eiversion'}); $gconfig{'os_version'} = $in{'iversion'}; } +# EOL data +if (defined($in{'os_eol_before'}) && + $in{'os_eol_before'} ne $gconfig{'os_eol_before'}) { + $in{'os_eol_before'} =~ /^\d+$/ || &error($text{'os_eol_ecountdown'}); + $gconfig{'os_eol_before'} = $in{'os_eol_before'}; + # Invalidate EOL cache + foreach my $key ('os_eol_none', 'os_eol_expired', + 'os_eol_expiring', 'os_eol_last') { + delete($gconfig{$key}); + } + } +# Path $gconfig{'path'} = join($path_separator, split(/[\r\n]+/, $in{'path'})); $gconfig{'syspath'} = !$in{'syspath'}; if ($gconfig{'ld_env'}) { diff --git a/webmin/edit_os.cgi b/webmin/edit_os.cgi index c0dc10f58..43d0adf5f 100755 --- a/webmin/edit_os.cgi +++ b/webmin/edit_os.cgi @@ -35,6 +35,17 @@ if ($osinfo{'real_os_type'}) { $osinfo{'os_version'} ne $gconfig{'os_version'} ? "
".&ui_checkbox("update", 1, $text{'os_update'}) : ""), undef, [ "valign=middle","valign=middle" ]); + # Before EOL message is shown (months) + if ($gconfig{'os_eol'}) { + print &ui_table_row($text{'os_eol_type1'}, + "$text{'os_eol_until'} $gconfig{'os_eol'}"); + if ($gconfig{'os_ext_eol'}) { + print &ui_table_row($text{'os_eol_type2'}, + "$text{'os_eol_until'} $gconfig{'os_ext_eol'}"); + } + print &ui_table_row($text{'os_eol'}, + &ui_textbox("os_eol_before", $gconfig{'os_eol_before'} // 3, 10)." $text{'os_eol_countdown'}"); + } } else { print &ui_table_row($text{'os_detect'}, diff --git a/webmin/os-eol-lib.pl b/webmin/os-eol-lib.pl index 35acc5df6..d626ec5ba 100755 --- a/webmin/os-eol-lib.pl +++ b/webmin/os-eol-lib.pl @@ -156,8 +156,8 @@ else { my $expired = $eol_data->{'_eol_timestamp'} < time(); $eol_data->{'_expired'} = $text{'eol_reached'} if ($expired); -# Is expiring (in 6 months by default, unless configured otherwise) -my $os_eol_before = $gconfig{'os_eol_before'} // 6; +# Is expiring (in 3 months by default, unless configured otherwise) +my $os_eol_before = $gconfig{'os_eol_before'} // 3; if (!$expired && $os_eol_before) { my $expiring = $eol_data->{'_eol_timestamp'} < time() + 60*60*24*30*$os_eol_before ? 1 : 0;