Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
webmin /
webmin /
Delete
Unzip
Name
Size
Permission
Date
Action
help
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
images
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
lang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
subdir
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
CHANGELOG
12.02
KB
-rw-r--r--
2026-07-17 21:17
acme_tiny.py
11.53
KB
-rwxr-xr-x
2026-07-17 21:17
adminupgrade
299
B
-rw-r--r--
2026-07-17 21:17
backup_config.pl
1.97
KB
-rwxr-xr-x
2026-07-17 21:17
bootup.cgi
1.04
KB
-rwxr-xr-x
2026-07-17 21:22
cache.cgi
1.47
KB
-rwxr-xr-x
2026-07-17 21:22
cgi_args.pl
159
B
-rwxr-xr-x
2026-07-17 21:17
change_access.cgi
1.93
KB
-rwxr-xr-x
2026-07-17 21:22
change_advanced.cgi
7.02
KB
-rwxr-xr-x
2026-07-17 21:22
change_anon.cgi
712
B
-rwxr-xr-x
2026-07-17 21:22
change_bind.cgi
5.08
KB
-rwxr-xr-x
2026-07-17 21:22
change_ca.cgi
674
B
-rwxr-xr-x
2026-07-17 21:22
change_debug.cgi
1.38
KB
-rwxr-xr-x
2026-07-17 21:22
change_lang.cgi
558
B
-rwxr-xr-x
2026-07-17 21:22
change_lock.cgi
554
B
-rwxr-xr-x
2026-07-17 21:22
change_log.cgi
2.42
KB
-rwxr-xr-x
2026-07-17 21:22
change_mobile.cgi
940
B
-rwxr-xr-x
2026-07-17 21:22
change_os.cgi
2.21
KB
-rwxr-xr-x
2026-07-17 21:22
change_osdn.cgi
1.54
KB
-rwxr-xr-x
2026-07-17 21:22
change_overlay.cgi
1.17
KB
-rwxr-xr-x
2026-07-17 21:22
change_proxy.cgi
1.09
KB
-rwxr-xr-x
2026-07-17 21:22
change_referers.cgi
633
B
-rwxr-xr-x
2026-07-17 21:22
change_session.cgi
5.88
KB
-rwxr-xr-x
2026-07-17 21:22
change_ssl.cgi
3.08
KB
-rwxr-xr-x
2026-07-17 21:22
change_startpage.cgi
687
B
-rwxr-xr-x
2026-07-17 21:22
change_status.cgi
1.08
KB
-rwxr-xr-x
2026-07-17 21:22
change_theme.cgi
1.17
KB
-rwxr-xr-x
2026-07-17 21:22
change_twofactor.cgi
1.48
KB
-rwxr-xr-x
2026-07-17 21:22
change_ui.cgi
1.61
KB
-rwxr-xr-x
2026-07-17 21:22
change_web.cgi
2.47
KB
-rwxr-xr-x
2026-07-17 21:22
clear_blocked.cgi
230
B
-rwxr-xr-x
2026-07-17 21:22
clear_cache.cgi
205
B
-rwxr-xr-x
2026-07-17 21:22
clone_mod.cgi
2.15
KB
-rwxr-xr-x
2026-07-17 21:22
config
155
B
-rw-r--r--
2026-07-17 21:17
config.info
940
B
-rw-r--r--
2026-07-17 21:17
config.info.ar
406
B
-rw-r--r--
2026-07-17 21:17
config.info.ca
388
B
-rw-r--r--
2026-07-17 21:17
config.info.cs
225
B
-rw-r--r--
2026-07-17 21:17
config.info.de
351
B
-rw-r--r--
2026-07-17 21:17
config.info.es
221
B
-rw-r--r--
2026-07-17 21:17
config.info.fa
293
B
-rw-r--r--
2026-07-17 21:17
config.info.fr
554
B
-rw-r--r--
2026-07-17 21:17
config.info.hr
0
B
-rw-r--r--
2026-07-17 21:17
config.info.hu
0
B
-rw-r--r--
2026-07-17 21:17
config.info.it
237
B
-rw-r--r--
2026-07-17 21:17
config.info.ja
514
B
-rw-r--r--
2026-07-17 21:17
config.info.ko
198
B
-rw-r--r--
2026-07-17 21:17
config.info.ms
278
B
-rw-r--r--
2026-07-17 21:17
config.info.nl
291
B
-rw-r--r--
2026-07-17 21:17
config.info.no
275
B
-rw-r--r--
2026-07-17 21:17
config.info.pl
276
B
-rw-r--r--
2026-07-17 21:17
config.info.pt_BR
291
B
-rw-r--r--
2026-07-17 21:17
config.info.ru
483
B
-rw-r--r--
2026-07-17 21:17
config.info.sk
124
B
-rw-r--r--
2026-07-17 21:17
config.info.sv
194
B
-rw-r--r--
2026-07-17 21:17
config.info.tr
147
B
-rw-r--r--
2026-07-17 21:17
cpan_modules.pl
229
B
-rwxr-xr-x
2026-07-17 21:17
defaultacl
17
B
-rw-r--r--
2026-07-17 21:17
delete_cache.cgi
471
B
-rwxr-xr-x
2026-07-17 21:22
delete_mod.cgi
2.24
KB
-rwxr-xr-x
2026-07-17 21:22
delete_webmincron.cgi
1.51
KB
-rwxr-xr-x
2026-07-17 21:22
developers-key.asc
3.07
KB
-rw-r--r--
2026-07-17 21:17
download_cert.cgi
532
B
-rwxr-xr-x
2026-07-17 21:22
edit_access.cgi
1.88
KB
-rwxr-xr-x
2026-07-17 21:22
edit_advanced.cgi
4.24
KB
-rwxr-xr-x
2026-07-17 21:22
edit_anon.cgi
812
B
-rwxr-xr-x
2026-07-17 21:22
edit_assignment.cgi
1.12
KB
-rwxr-xr-x
2026-07-17 21:22
edit_bind.cgi
3.54
KB
-rwxr-xr-x
2026-07-17 21:22
edit_blocked.cgi
944
B
-rwxr-xr-x
2026-07-17 21:22
edit_ca.cgi
2.82
KB
-rwxr-xr-x
2026-07-17 21:22
edit_categories.cgi
1.69
KB
-rwxr-xr-x
2026-07-17 21:22
edit_debug.cgi
2.05
KB
-rwxr-xr-x
2026-07-17 21:22
edit_descs.cgi
1.49
KB
-rwxr-xr-x
2026-07-17 21:22
edit_ipkey.cgi
1.7
KB
-rwxr-xr-x
2026-07-17 21:22
edit_lang.cgi
1.83
KB
-rwxr-xr-x
2026-07-17 21:22
edit_lock.cgi
2.13
KB
-rwxr-xr-x
2026-07-17 21:22
edit_log.cgi
3.16
KB
-rwxr-xr-x
2026-07-17 21:22
edit_mobile.cgi
1.26
KB
-rwxr-xr-x
2026-07-17 21:22
edit_mods.cgi
4.45
KB
-rwxr-xr-x
2026-07-17 21:22
edit_os.cgi
3.17
KB
-rwxr-xr-x
2026-07-17 21:22
edit_proxy.cgi
3.7
KB
-rwxr-xr-x
2026-07-17 21:22
edit_referers.cgi
899
B
-rwxr-xr-x
2026-07-17 21:22
edit_sendmail.cgi
3.68
KB
-rwxr-xr-x
2026-07-17 21:22
edit_session.cgi
6.23
KB
-rwxr-xr-x
2026-07-17 21:22
edit_ssl.cgi
13.69
KB
-rwxr-xr-x
2026-07-17 21:22
edit_startpage.cgi
1.48
KB
-rwxr-xr-x
2026-07-17 21:22
edit_status.cgi
1.26
KB
-rwxr-xr-x
2026-07-17 21:22
edit_themes.cgi
4.15
KB
-rwxr-xr-x
2026-07-17 21:22
edit_twofactor.cgi
1.5
KB
-rwxr-xr-x
2026-07-17 21:22
edit_ui.cgi
2.51
KB
-rwxr-xr-x
2026-07-17 21:22
edit_upgrade.cgi
4.39
KB
-rwxr-xr-x
2026-07-17 21:22
edit_web.cgi
2.92
KB
-rwxr-xr-x
2026-07-17 21:22
edit_webmincron.cgi
1.35
KB
-rwxr-xr-x
2026-07-17 21:22
export_mod.cgi
1.23
KB
-rwxr-xr-x
2026-07-17 21:22
feedback_files.pl
126
B
-rwxr-xr-x
2026-07-17 21:17
fix_os.cgi
228
B
-rwxr-xr-x
2026-07-17 21:22
fix_repo.cgi
1.87
KB
-rwxr-xr-x
2026-07-17 21:22
gnupg-lib.pl
14.82
KB
-rwxr-xr-x
2026-07-17 21:17
hide.cgi
326
B
-rwxr-xr-x
2026-07-17 21:22
index.cgi
4.41
KB
-rwxr-xr-x
2026-07-17 21:22
install_mod.cgi
3.11
KB
-rwxr-xr-x
2026-07-17 21:22
install_theme.cgi
2.29
KB
-rwxr-xr-x
2026-07-17 21:22
jcameron-key.asc
1.29
KB
-rw-r--r--
2026-07-17 21:17
kill_lock.cgi
1.57
KB
-rwxr-xr-x
2026-07-17 21:22
letsencrypt-cleanup.pl
1.94
KB
-rwxr-xr-x
2026-07-17 21:22
letsencrypt-dns.pl
2.49
KB
-rwxr-xr-x
2026-07-17 21:22
letsencrypt-lib.pl
19.62
KB
-rwxr-xr-x
2026-07-17 21:17
letsencrypt.cgi
8.25
KB
-rwxr-xr-x
2026-07-17 21:22
log_parser.pl
1.23
KB
-rwxr-xr-x
2026-07-17 21:17
module.info
195
B
-rw-r--r--
2026-07-17 21:17
module.info.ar
185
B
-rw-r--r--
2026-07-17 21:17
module.info.ar.auto
22
B
-rw-r--r--
2026-07-17 21:17
module.info.bg
0
B
-rw-r--r--
2026-07-17 21:17
module.info.bg.auto
218
B
-rw-r--r--
2026-07-17 21:17
module.info.ca
134
B
-rw-r--r--
2026-07-17 21:17
module.info.ca.auto
15
B
-rw-r--r--
2026-07-17 21:17
module.info.cs
28
B
-rw-r--r--
2026-07-17 21:17
module.info.cs.auto
128
B
-rw-r--r--
2026-07-17 21:17
module.info.da
0
B
-rw-r--r--
2026-07-17 21:17
module.info.da.auto
142
B
-rw-r--r--
2026-07-17 21:17
module.info.de
126
B
-rw-r--r--
2026-07-17 21:17
module.info.de.auto
15
B
-rw-r--r--
2026-07-17 21:17
module.info.el
0
B
-rw-r--r--
2026-07-17 21:17
module.info.el.auto
262
B
-rw-r--r--
2026-07-17 21:17
module.info.es
33
B
-rw-r--r--
2026-07-17 21:17
module.info.es.auto
109
B
-rw-r--r--
2026-07-17 21:17
module.info.eu
0
B
-rw-r--r--
2026-07-17 21:17
module.info.eu.auto
158
B
-rw-r--r--
2026-07-17 21:17
module.info.fa
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fa.auto
202
B
-rw-r--r--
2026-07-17 21:17
module.info.fi
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fi.auto
141
B
-rw-r--r--
2026-07-17 21:17
module.info.fr
32
B
-rw-r--r--
2026-07-17 21:17
module.info.fr.auto
129
B
-rw-r--r--
2026-07-17 21:17
module.info.hr
0
B
-rw-r--r--
2026-07-17 21:17
module.info.hr.auto
149
B
-rw-r--r--
2026-07-17 21:17
module.info.hu
30
B
-rw-r--r--
2026-07-17 21:17
module.info.hu.auto
148
B
-rw-r--r--
2026-07-17 21:17
module.info.it
33
B
-rw-r--r--
2026-07-17 21:17
module.info.it.auto
107
B
-rw-r--r--
2026-07-17 21:17
module.info.ja
180
B
-rw-r--r--
2026-07-17 21:17
module.info.ko
22
B
-rw-r--r--
2026-07-17 21:17
module.info.ko.auto
129
B
-rw-r--r--
2026-07-17 21:17
module.info.ms
119
B
-rw-r--r--
2026-07-17 21:17
module.info.ms.auto
15
B
-rw-r--r--
2026-07-17 21:17
module.info.nl
28
B
-rw-r--r--
2026-07-17 21:17
module.info.nl.auto
117
B
-rw-r--r--
2026-07-17 21:17
module.info.no
29
B
-rw-r--r--
2026-07-17 21:17
module.info.no.auto
117
B
-rw-r--r--
2026-07-17 21:17
module.info.pl
155
B
-rw-r--r--
2026-07-17 21:17
module.info.pl.auto
15
B
-rw-r--r--
2026-07-17 21:17
module.info.pt
33
B
-rw-r--r--
2026-07-17 21:17
module.info.pt.auto
113
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR
36
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR.auto
119
B
-rw-r--r--
2026-07-17 21:17
module.info.ru
34
B
-rw-r--r--
2026-07-17 21:17
module.info.ru.auto
172
B
-rw-r--r--
2026-07-17 21:17
module.info.sk
30
B
-rw-r--r--
2026-07-17 21:17
module.info.sk.auto
132
B
-rw-r--r--
2026-07-17 21:17
module.info.sv
30
B
-rw-r--r--
2026-07-17 21:17
module.info.sv.auto
114
B
-rw-r--r--
2026-07-17 21:17
module.info.tr
33
B
-rw-r--r--
2026-07-17 21:17
module.info.tr.auto
128
B
-rw-r--r--
2026-07-17 21:17
module.info.uk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.uk.auto
215
B
-rw-r--r--
2026-07-17 21:17
module.info.zh
22
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW
25
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW.auto
115
B
-rw-r--r--
2026-07-17 21:17
newcsr.cgi
800
B
-rwxr-xr-x
2026-07-17 21:22
newkey.cgi
879
B
-rwxr-xr-x
2026-07-17 21:22
os-eol-lib.pl
9.55
KB
-rwxr-xr-x
2026-07-17 21:17
postinstall.pl
2.59
KB
-rwxr-xr-x
2026-07-17 21:17
refresh_modules.cgi
661
B
-rwxr-xr-x
2026-07-17 21:22
restart.cgi
87
B
-rwxr-xr-x
2026-07-17 21:22
save_assignment.cgi
485
B
-rwxr-xr-x
2026-07-17 21:22
save_categories.cgi
986
B
-rwxr-xr-x
2026-07-17 21:22
save_descs.cgi
1006
B
-rwxr-xr-x
2026-07-17 21:22
save_ipkey.cgi
1.31
KB
-rwxr-xr-x
2026-07-17 21:22
save_newmod.cgi
278
B
-rwxr-xr-x
2026-07-17 21:22
save_sendmail.cgi
2.32
KB
-rwxr-xr-x
2026-07-17 21:22
save_webmincron.cgi
1016
B
-rwxr-xr-x
2026-07-17 21:22
savekey.cgi
2.8
KB
-rwxr-xr-x
2026-07-17 21:22
setup_ca.cgi
1.52
KB
-rwxr-xr-x
2026-07-17 21:22
standard_chooser.cgi
1.68
KB
-rwxr-xr-x
2026-07-17 21:22
stop_ca.cgi
1.03
KB
-rwxr-xr-x
2026-07-17 21:22
syslog_logs.pl
633
B
-rwxr-xr-x
2026-07-17 21:17
system_info.pl
5.08
KB
-rw-r--r--
2026-07-17 21:17
test_sendmail.cgi
784
B
-rwxr-xr-x
2026-07-17 21:22
third_chooser.cgi
1.55
KB
-rwxr-xr-x
2026-07-17 21:22
twofactor-funcs-lib.pl
11.24
KB
-rw-r--r--
2026-07-17 21:17
uninstall.pl
236
B
-rwxr-xr-x
2026-07-17 21:17
update.cgi
2.89
KB
-rwxr-xr-x
2026-07-17 21:22
upgrade.cgi
16.95
KB
-rwxr-xr-x
2026-07-17 21:22
view_webmincron.cgi
1.66
KB
-rwxr-xr-x
2026-07-17 21:22
webmin-lib.pl
75.99
KB
-rwxr-xr-x
2026-07-17 21:17
Save
Rename
# os-eol-lib.pl # Functions for managing OS end-of-life data use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; use Time::Local; our (%gconfig, %text, $root_directory, $config_directory); # eol_oses_list() # Returns a list of OSes for which EOL data is available sub eol_oses_list { return ('almalinux', 'amazon-linux', 'centos-stream', 'centos', 'debian', 'fedora', 'freebsd', 'openbsd', 'opensuse', 'oracle-linux', 'rhel', 'rocky-linux', 'ubuntu'); } # eol_get_os() # Returns the current OS or undef if the OS is not supported sub eol_get_os { my $os_type = lc($gconfig{'real_os_type'}); my @eol_oses_list = &eol_oses_list(); my ($os_found) = grep { my $__ = $_; $__ =~ s/-?linux//; $__ =~ s/-/ /; $os_type =~ /$__/ } @eol_oses_list; return $os_found if ($os_found); return undef; } # eol_build_all_os_data() # Fetches the latest EOL data for all supported # OSes and writes it to given file. sub eol_build_all_os_data { my $eol_cache_file = shift; $eol_cache_file ||= "$root_directory/os_eol.json"; my @eol_oses = &eol_oses_list(); my @eol_oses_data; foreach my $os (@eol_oses) { my $fdata = &backquote_command( "curl -sS --request GET " . "--url https://endoflife.date/api/$os.json ". "--header 'Accept: application/json' ". "2>&1 </dev/null"); if ($?) { die("Could not fetch OS EOL data : $?"); } my $fdata_json; eval { $fdata_json = &convert_from_json($fdata); }; if ($@) { die("Could not parse fetched OS EOL data: $@"); } # Add OS $fdata_json = [ map { $_->{'_os'} = $os; $_ } @$fdata_json ]; # Fix (blessed) LTS key $fdata_json = [ map { $_->{'lts'} = $_->{'lts'} ? 1 : 0; $_ } @$fdata_json ]; push(@eol_oses_data, @$fdata_json); } my $eol_oses_data = &convert_to_json(\@eol_oses_data); open(my $fh, '>', $eol_cache_file) or die("Could not open OS EOL data file for writing: $!"); print $fh $eol_oses_data; close($fh) or die("Could not close OS EOL data file: $!"); } # eol_get_os_data() # Returns EOL data for the current OS. # Returns undef if OS is not supported. sub eol_get_os_data { my $os = &eol_get_os(); return undef if (!$os); my $eol_file = shift; $eol_file ||= "$root_directory/os_eol.json"; if (!-r $eol_file) { &error_stderr("Could not read OS EOL data file: $eol_file"); return undef; } my $eol_data = &read_file_contents($eol_file); my $eol_json; eval { $eol_json = &convert_from_json($eol_data, 1); }; if ($@) { &error_stderr("Could not parse OS EOL data: $@"); return undef; } if (ref($eol_json) eq 'ARRAY' && @$eol_json) { my $os_version = $gconfig{'real_os_version'}; # Extract the major and minor versions $os_version =~ m/^(?:stable\/)?(?<major>\d+)(?:\.(?<minor>\d+))?/; $os_version = $+{minor} ? "$+{major}.$+{minor}" : $+{major}; return undef if (!$+{major}); # Minor versions in cycle are allowed only for Ubuntu $os_version = $+{major} if ($os !~ /ubuntu/); my ($eol_json_this_os) = grep { $_->{'_os'} eq $os && $_->{'cycle'} eq $os_version } @$eol_json; return undef if (!$eol_json_this_os); $eol_json_this_os->{'_os_name'} = $gconfig{'real_os_type'}; $eol_json_this_os->{'_os_version'} = $os_version; # If the OS is still in development and EOL date is not set if (!$eol_json_this_os->{'eol'} || $eol_json_this_os->{'eol'} eq '0000-00-00' || $eol_json_this_os->{'eol'} !~ /\d{4}-\d{2}-\d{2}/) { return undef; } # Convert EOL date to a timestamp my ($year, $month, $day) = split('-', $eol_json_this_os->{'eol'}); $eol_json_this_os->{'_eol_timestamp'} = timelocal(0, 0, 0, $day, $month - 1, $year); # Convert EOL extended date to a timestamp if ($eol_json_this_os->{'extendedSupport'} && $eol_json_this_os->{'extendedSupport'} ne '0000-00-00' && $eol_json_this_os->{'extendedSupport'} =~ /\d{4}-\d{2}-\d{2}/) { my ($year, $month, $day) = split('-', $eol_json_this_os->{'extendedSupport'}); $eol_json_this_os->{'_ext_eol_timestamp'} = timelocal(0, 0, 0, $day, $month - 1, $year); } return $eol_json_this_os if ($eol_json_this_os); } return undef; } # eol_populate_dates(&eol_data) # Updates given EOL hash reference with # human readable date and the time ago sub eol_populate_dates { my ($eol_data) = @_; return undef unless ref $eol_data; if (!$eol_data->{'_eol_timestamp'}) { &error_stderr("The provided data is not a valid EOL data hash reference"); return undef; } my $eol_date = &make_date($eol_data->{'_eol_timestamp'}, { }); if (ref($eol_date)) { my $eol_in = sub { my $eol_date = shift; my $ago = $eol_date->{'ago'}; my @ago_units = qw(year month week day hour minute second); foreach my $unit (@ago_units) { if ($ago->{"${unit}s"}) { my $value = abs($ago->{"${unit}s"}); return $value == 1 ? "1 " . $text{"os_eol_${unit}"} : "$value " . $text{"os_eol_${unit}s"}; } } }; $eol_data->{'_eol'} = $eol_date->{'short'}; $eol_data->{'_eol_in'} = $eol_in->($eol_date); if ($eol_data->{'extendedSupport'}) { my $eol_date = &make_date( $eol_data->{'_ext_eol_timestamp'}, { '_' => 1 }); $eol_data->{'_ext_eol'} = $eol_date->{'short'}; $eol_data->{'_ext_eol_in'} = $eol_in->($eol_date); } } else { $eol_data->{'_eol'} = &make_date($eol_data->{'_eol_timestamp'}, 1); if ($eol_data->{'extendedSupport'}) { $eol_data->{'_ext_eol'} = &make_date($eol_data->{'_ext_eol_timestamp'}, 1); } } # Is expired? my $expired = ($eol_data->{'_ext_eol_timestamp'} || $eol_data->{'_eol_timestamp'}) < time(); $eol_data->{'_expired'} = $text{'os_eol_reached'} if ($expired); # 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->{'_ext_eol_timestamp'} || $eol_data->{'_eol_timestamp'}) < time() + 60*60*24*30*$os_eol_before ? 1 : 0; # Set the expiring message if ($expiring) { $eol_data->{'_expiring'} = $eol_data->{'_eol_in'} ? $text{'os_eol_reaching'} . " " . $eol_data->{'_eol_in'} : $text{'os_eol_reaching2'}; } # Set extended support expiring message (if available) if ($eol_data->{'extendedSupport'}) { my $expiring = $eol_data->{'_ext_eol_timestamp'} < time() + 60*60*24*30*$os_eol_before ? 1 : 0; if ($expiring) { $eol_data->{'_ext_expiring'} = $eol_data->{'_ext_eol_in'} ? $text{'os_eol_reaching'} . " " . $eol_data->{'_ext_eol_in'} : $text{'os_eol_reaching2'}; } } } return $eol_data; } # eol_update_cache() # Caches the OS EOL data until the next Webmin update sub eol_update_cache { my $webmin_version = &get_webmin_version(); if ($gconfig{'os_eol_db'} ne $webmin_version) { # Invalidate EOL cache foreach my $key ('os_eol_about', 'os_eol_expired', 'os_eol_expiring') { delete($gconfig{$key}); } # This is the first time we check # EOL data or after Webmin update my $eol_data = &eol_get_os_data(); &eol_populate_dates($eol_data); if (ref($eol_data)) { $gconfig{'os_eol_about'} = 0; if ($eol_data->{'_expired'}) { $gconfig{'os_eol_expired'} = $eol_data->{'_expired'}; $gconfig{'os_eol_about'} = 2; } elsif ($eol_data->{'_expiring'}) { $gconfig{'os_eol_expiring'} = $eol_data->{'_ext_expiring'} || $eol_data->{'_expiring'}; $gconfig{'os_eol_about'} = 1; } $gconfig{'os_eol'} = $eol_data->{'_eol'}; $gconfig{'os_eol_in'} = $eol_data->{'_eol_in'}; $gconfig{'os_ext_eol'} = $eol_data->{'_ext_eol'} if ($eol_data->{'_ext_eol'}); $gconfig{'os_ext_eol_in'} = $eol_data->{'_ext_eol_in'} if ($eol_data->{'_ext_eol_in'}); } # Store EOL db version and don't check it until next Webmin upgrade $gconfig{'os_eol_db'} = $webmin_version; # Store the updated data &lock_file("$config_directory/config"); &write_file("$config_directory/config", \%gconfig); &unlock_file("$config_directory/config"); } } 1;