Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EOL API #2117

Merged
merged 24 commits into from
Apr 13, 2024
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
13e343e
Add EOL API 1/2
iliajie Apr 9, 2024
f24a34f
Update map
iliajie Apr 9, 2024
4202fa5
Add EOL API 2/2
iliajie Apr 9, 2024
ff5937b
Fix timeout
iliajie Apr 10, 2024
550a263
Fix to only write empty file if doesn't exist
iliajie Apr 10, 2024
c6cb639
Fix to cache it for 1 month
iliajie Apr 10, 2024
4102b5e
Fix how EOL data is fetched and stored
iliajie Apr 10, 2024
ec34a26
Fix to generate `os_eol.json` during build time
iliajie Apr 10, 2024
b53333e
Add actual EOL details ; fix bug
iliajie Apr 10, 2024
b43e75e
Add caching support for speed and efficiency
iliajie Apr 10, 2024
613c568
Add EOL message to the dashboard
iliajie Apr 10, 2024
7628a73
Add EOL display and configurable option to Operating System and Envir…
iliajie Apr 10, 2024
5cb91ab
Add language strings
iliajie Apr 10, 2024
fdf1c40
Update language keys for consistency
iliajie Apr 10, 2024
fae806f
Fix to drop useless option
iliajie Apr 10, 2024
46358dc
Update translations
iliajie Apr 10, 2024
db674f7
Fix to call `die` if EOL data cannot be fetched in build time
iliajie Apr 10, 2024
376eb2c
Fix textbox width
iliajie Apr 11, 2024
d446c7d
Delete `os-eol.map` file
iliajie Apr 11, 2024
0b21cbd
Fix to simplify caching logic to only check for EOL data after Webmin…
iliajie Apr 11, 2024
8621cf8
Fix to always prioritize extended support (actual EOL in Debian/Ubuntu)
iliajie Apr 11, 2024
e1dafea
Fix not to flood logs with pointless warning
iliajie Apr 11, 2024
fb2ceb9
Fix to use `get_webmin_version` instead
iliajie Apr 11, 2024
b2ef544
Fix comment
iliajie Apr 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 15 additions & 2 deletions makedist.pl
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#!/usr/local/bin/perl
# Builds a tar.gz package of a specified Webmin version

use Cwd 'abs_path';
use File::Basename;
$root_directory = dirname(abs_path($0));

if ($0 =~ /^(.*)\//) {
chdir($1);
}
Expand Down Expand Up @@ -60,7 +64,7 @@
"webmin-search-lib.pl", "WebminCore.pm",
"record-login.pl", "record-logout.pl", "record-failed.pl",
"robots.txt", "unauthenticated", "bin", "html-editor-lib.pl",
"switch_theme.cgi",
"switch_theme.cgi", "os_eol.json",
);
if ($min) {
# Only those required by others
Expand All @@ -84,8 +88,17 @@
@mlist = @mlist_excluded;
}
}
@dirlist = ( "vendor_perl" );

# Build EOL data
jcameron marked this conversation as resolved.
Show resolved Hide resolved
if (-r "$root_directory/webmin/os-eol-lib.pl") {
print "Building OS EOL data\n";
do "$root_directory/web-lib-funcs.pl";
do "$root_directory/webmin/os-eol-lib.pl";
&eol_build_all_os_data("$root_directory/os_eol.json");
jcameron marked this conversation as resolved.
Show resolved Hide resolved
}

# Prepare dist files
@dirlist = ( "vendor_perl" );
$dir = "webmin$product_suff-$vers";
if (!$release || !-d "$tardir/$dir") {
# Copy files into the directory for tarring up, unless this is a minor
Expand Down
7 changes: 5 additions & 2 deletions system-status/system_info.pl
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,16 @@ sub list_system_info
push(@table, { 'desc' => $text{'right_host'},
'value' => &get_system_hostname().$ip });

# Operating system
# Operating system and EOL
&foreign_require("webmin");
&webmin::eol_update_cache();
my $eol = $gconfig{'os_eol_expired'} || $gconfig{'os_eol_expiring'};
my $os = &html_escape($gconfig{'os_version'} eq '*' ?
$gconfig{'real_os_type'} :
$gconfig{'real_os_type'}.' '.
$gconfig{'real_os_version'});
push(@table, { 'desc' => $text{'right_os'},
'value' => $os
'value' => $os . ($eol ? " ($eol)" : "")
});

# Webmin version
Expand Down
12 changes: 12 additions & 0 deletions webmin/change_os.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -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'}) {
Expand Down
11 changes: 11 additions & 0 deletions webmin/edit_os.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,17 @@ if ($osinfo{'real_os_type'}) {
$osinfo{'os_version'} ne $gconfig{'os_version'} ?
"<br>".&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)."&nbsp;$text{'os_eol_countdown'}");
}
}
else {
print &ui_table_row($text{'os_detect'},
Expand Down
37 changes: 32 additions & 5 deletions webmin/lang/af.auto
Original file line number Diff line number Diff line change
Expand Up @@ -420,11 +420,12 @@ ssl_letserr2=Kyk alternatiewelik na die <a href='$1'>module-opstelling</a> om se
ssl_letsdesc2=Hierdie bladsy kan gebruik word om 'n nuwe sertifikaat aan te vra, wat die ander wat tans in Webmin opgestel is, sal oorskryf. Die Let’s Encrypt-diens vereis egter dat u eienaarskap van die sertifikaatdomein gevalideer word deur seker te maak dat hierdie stelsel die webwerf vir die domein huisves. Dit word gedoen deur 'n klein tydelike lêer in die dokumentgids van die webwerf te plaas.
ssl_letsheader=Opsies vir 'n nuwe SSL-sertifikaat
ssl_letsdoms=Gasheername vir sertifikaat
ssl_webroot=Webwerf-wortelgids vir die valideringslêer
ssl_webroot0=Apache-virtuele gasheer wat ooreenstem met die gasheernaam
ssl_webroot1='N Ander Apache-virtuele gasheer
ssl_webroot2=Ander gids
ssl_webroot3=Gebruik DNS-domeine vir validering
ssl_letsmode=Kom ons enkripteer valideringsmetode
ssl_letsmode0=Apache virtuele gasheer wat ooreenstem met gasheernaam
ssl_letsmode1=Geselekteerde Apache virtuele gasheer
ssl_letsmode2=Ander webbediener dokumentgids
ssl_letsmode3=DNS-bekragtiging met BIND
ssl_letsmode4=Certbot ingeboude webbediener
ssl_letsok=Versoek sertifikaat
ssl_letsonly=Net die hernuwing opdateer
ssl_usewebmin=Nuwe sleutel en sertifikaat na Webmin kopieer?
Expand Down Expand Up @@ -1209,6 +1210,7 @@ letsencrypt_ecert=Die verwagte sertifikaatlêer $1 is nie gevind nie
letsencrypt_ekey=Die privaat sleutel lêer $1 is nie gevind nie
letsencrypt_doing=Versoek 'n nuwe sertifikaat vir $1 met behulp van die webwerfgids $2 ..
letsencrypt_doingdns=Versoek 'n nuwe sertifikaat vir $1 met behulp van DNS-validering.
letsencrypt_doingcertbot=Versoek tans 'n nuwe sertifikaat vir $1, met behulp van die Certbot-webbediener ..
letsencrypt_failed=.. versoek misluk : $1
letsencrypt_done=.. versoek slaag!
letsencrypt_show=Die nuwe sertifikaat en private sleutel is op die volgende lêers geskryf :
Expand All @@ -1225,6 +1227,31 @@ letsencrypt_ecsr=CSR was gegenereer : $1
letsencrypt_ekeygen=Kon nie die privaat sleutel genereer nie : $1
letsencrypt_enative=Die inheemse Let's Encrypt-kliënt (certbot) is voorheen op hierdie stelsel gebruik en moet gebruik word vir alle toekomstige sertifikaatversoeke
letsencrypt_eacmedns=Slegs die amptelike Let's Encrypt-kliënt ondersteun DNS-gebaseerde validering
letsencrypt_eacmecertbot=Slegs die amptelike Let's Encrypt-kliënt ondersteun Certbot-validering

announce_hide=Verberg hierdie aankondiging
alert_hide=Versteek waarskuwing

os_eol=OS EOL aftelkennisgewing
os_eol_countdown=maande tevore
os_eol_ecountdown=Maand voor aftelling moet 'n heelgetal wees
os_eol_until=Tot
os_eol_type1=OS instandhouding en sekuriteit ondersteuning
os_eol_type2=OS uitgebreide sekuriteit instandhouding
os_eol_years=jare
os_eol_year=jaar
os_eol_months=maande
os_eol_month=maand
os_eol_weeks=weke
os_eol_week=week
os_eol_days=dae
os_eol_day=dag
os_eol_hours=ure
os_eol_hour=uur
os_eol_minutes=minute
os_eol_minute=minuut
os_eol_seconds=sekondes
os_eol_second=tweede
os_eol_reached=EOL bereik
os_eol_reaching=EOL in
os_eol_reaching2=EOL op hande
37 changes: 32 additions & 5 deletions webmin/lang/ar.auto
Original file line number Diff line number Diff line change
Expand Up @@ -327,11 +327,12 @@ ssl_letserr2=Alternately, check the <a href='$1'>module configuration</a> page t
ssl_letsdesc2=يمكن استخدام هذه الصفحة لطلب شهادة جديدة ، والتي ستقوم بالكتابة فوق أي أخرى تم تكوينها حاليًا في Webmin. ومع ذلك ، تتطلب خدمة Let's Encrypt التحقق من ملكيتك لمجال الشهادة بالتحقق من أن هذا النظام يستضيف موقع الويب الخاص بالنطاق. يتم ذلك عن طريق وضع ملف مؤقت صغير في دليل مستندات موقع الويب.
ssl_letsheader=خيارات لشهادة SSL جديدة
ssl_letsdoms=أسماء المضيفين للشهادة
ssl_webroot=دليل جذر الموقع لملف التحقق من الصحة
ssl_webroot0=مضيف مضيف أباتشي الظاهري لاسم المضيف
ssl_webroot1=مضيف افتراضي أباتشي مختلف
ssl_webroot2=دليل آخر
ssl_webroot3=استخدام مجالات DNS للتحقق من الصحة
ssl_letsmode=دعونا تشفير طريقة التحقق من الصحة
ssl_letsmode0=مضيف Apache الظاهري يطابق اسم المضيف
ssl_letsmode1=تم تحديد مضيف افتراضي Apache
ssl_letsmode2=دليل مستندات خادم الويب الآخر
ssl_letsmode3=التحقق من صحة DNS باستخدام BIND
ssl_letsmode4=خادم الويب المدمج في Certbot
ssl_letsok=طلب شهادة
ssl_letsonly=مجرد تحديث التجديد
ssl_usewebmin=نسخ مفتاح جديد وشهادة إلى Webmin؟
Expand Down Expand Up @@ -1090,6 +1091,7 @@ letsencrypt_ecert=Expected certificate file $1 was not found
letsencrypt_ekey=Expected private key file $1 was not found
letsencrypt_doing=Requesting a new certificate for $1, using the website directory $2 ..
letsencrypt_doingdns=Requesting a new certificate for $1, using DNS validation ..
letsencrypt_doingcertbot=طلب شهادة جديدة لـ $1 باستخدام خادم الويب Certbot ..
letsencrypt_failed=.. request failed : $1
letsencrypt_done=.. طلب نجح!
letsencrypt_show=تمت كتابة الشهادة الجديدة والمفتاح الخاص على الملفات التالية :
Expand All @@ -1106,6 +1108,31 @@ letsencrypt_ecsr=Failed to generate CSR : $1
letsencrypt_ekeygen=Failed to generate private key : $1
letsencrypt_enative=تم استخدام عميل Let's Encrypt الأصلي (certbot) مسبقًا على هذا النظام ، ويجب استخدامه لجميع طلبات الشهادات المستقبلية
letsencrypt_eacmedns=يدعم العميل Let's Encrypt فقط التحقق القائم على DNS
letsencrypt_eacmecertbot=فقط عميل Let's Encrypt الرسمي هو الذي يدعم التحقق من صحة Certbot

announce_hide=إخفاء هذا الإعلان
alert_hide=إخفاء التنبيه

os_eol=إشعار العد التنازلي لنظام التشغيل EOL
os_eol_countdown=قبل أشهر
os_eol_ecountdown=يجب أن يكون الشهر قبل العد التنازلي عددًا صحيحًا
os_eol_until=حتى
os_eol_type1=صيانة نظام التشغيل والدعم الأمني
os_eol_type2=صيانة أمنية موسعة لنظام التشغيل
os_eol_years=سنين
os_eol_year=سنة
os_eol_months=شهور
os_eol_month=شهر
os_eol_weeks=أسابيع
os_eol_week=أسبوع
os_eol_days=أيام
os_eol_day=يوم
os_eol_hours=ساعات
os_eol_hour=ساعة
os_eol_minutes=دقائق
os_eol_minute=دقيقة
os_eol_seconds=ثواني
os_eol_second=ثانية
os_eol_reached=وصلت موسوعة الحياة
os_eol_reaching=موسوعة الحياة في
os_eol_reaching2=EOL وشيكة
37 changes: 32 additions & 5 deletions webmin/lang/be.auto
Original file line number Diff line number Diff line change
Expand Up @@ -420,11 +420,12 @@ ssl_letserr2=Акрамя таго, праверце старонку канфі
ssl_letsdesc2=Гэтая старонка можа выкарыстоўвацца для запыту новага сертыфіката, які будзе замяніць любы іншы, які ў цяперашні час настроены ў Webmin. Аднак паслуга Let’s Encrypt патрабуе, каб ваша права ўласнасці на дамен сертыфіката правяралася, правяраючы, ці ў гэтай сістэме размешчаны вэб-сайт дамена. Гэта робіцца, змесціўшы невялікі часовы файл у каталог дакументаў вэб-сайта.
ssl_letsheader=Параметры для новага сертыфіката SSL
ssl_letsdoms=Імёны хосты для сертыфіката
ssl_webroot=Каранёвы каталог сайта для файла праверкі
ssl_webroot0=Віртуальны хаст Apache, які адпавядае імя хаста
ssl_webroot1=Іншы віртуальны хост Apache
ssl_webroot2=Іншы каталог
ssl_webroot3=Выкарыстоўвайце дамены DNS для праверкі
ssl_letsmode=Метад праверкі Let's Encrypt
ssl_letsmode0=Віртуальны хост Apache, які адпавядае імені хаста
ssl_letsmode1=Выбраны віртуальны хост Apache
ssl_letsmode2=Іншы каталог дакументаў вэб-сервера
ssl_letsmode3=Праверка DNS з дапамогай BIND
ssl_letsmode4=Убудаваны вэб-сервер Certbot
ssl_letsok=Запыт сертыфіката
ssl_letsonly=Проста абнавіце абнаўленне
ssl_usewebmin=Скапіраваць новы ключ і сертыфікат на Webmin?
Expand Down Expand Up @@ -1209,6 +1210,7 @@ letsencrypt_ecert=Чаканы файл сертыфіката $1 не зной
letsencrypt_ekey=Чаканы файл прыватнага ключа $1 не знойдзены
letsencrypt_doing=Запыт новага сертыфіката для $1, выкарыстоўваючы каталог сайта $2.
letsencrypt_doingdns=Запыт новага сертыфіката для $1, з выкарыстаннем праверкі DNS.
letsencrypt_doingcertbot=Запыт новага сертыфіката для $1 з дапамогай вэб-сервера Certbot ..
letsencrypt_failed=.. запыт не атрымаўся : $1
letsencrypt_done=.. Запыт атрымаўся!
letsencrypt_show=Новы сертыфікат і закрыты ключ былі запісаны ў наступныя файлы :
Expand All @@ -1225,6 +1227,31 @@ letsencrypt_ecsr=Не атрымалася згенераваць CSR : $1
letsencrypt_ekeygen=Не атрымалася згенераваць прыватны ключ : $1
letsencrypt_enative=Родны кліент Let's Encrypt (certbot) раней выкарыстоўваўся ў гэтай сістэме і павінен выкарыстоўвацца для ўсіх будучых запытаў сертыфікатаў
letsencrypt_eacmedns=Толькі афіцыйны кліент Let's Encrypt падтрымлівае праверку на аснове DNS
letsencrypt_eacmecertbot=Толькі афіцыйны кліент Let's Encrypt падтрымлівае праверку Certbot

announce_hide=Схавайце гэтую аб'яву
alert_hide=Схаваць апавяшчэнне

os_eol=Апавяшчэнне зваротнага адліку АС EOL
os_eol_countdown=месяцаў таму
os_eol_ecountdown=Месяц перад зваротным адлікам павінен быць цэлым лікам
os_eol_until=Пакуль
os_eol_type1=Абслугоўванне АС і падтрымка бяспекі
os_eol_type2=Пашыранае абслугоўванне бяспекі АС
os_eol_years=гадоў
os_eol_year=год
os_eol_months=месяцаў
os_eol_month=месяц
os_eol_weeks=тыдняў
os_eol_week=тыдзень
os_eol_days=дзён
os_eol_day=дзень
os_eol_hours=гадзіны
os_eol_hour=гадзіну
os_eol_minutes=хвілін
os_eol_minute=хвіліна
os_eol_seconds=секунд
os_eol_second=другі
os_eol_reached=EOL дасягнуты
os_eol_reaching=EOL ў
os_eol_reaching2=EOL непазбежны
37 changes: 32 additions & 5 deletions webmin/lang/bg.auto
Original file line number Diff line number Diff line change
Expand Up @@ -420,11 +420,12 @@ ssl_letserr2=Алтернативно, проверете страницата
ssl_letsdesc2=Тази страница може да се използва за заявяване на нов сертификат, който ще презапише всички останали понастоящем конфигурирани в Webmin. Услугата Let's Encrypt обаче изисква вашата собственост върху домейна на сертификат да бъде потвърдена, като проверите дали тази система хоства уебсайта за домейна. Това става, като се постави малък временен файл в директорията с документи на уебсайта.
ssl_letsheader=Опции за нов SSL сертификат
ssl_letsdoms=Имена на хостове за сертификат
ssl_webroot=Коренна директория на уебсайта за файл за проверка
ssl_webroot0=Apache виртуален хост, съвпадащ с име на хост
ssl_webroot1=Различен виртуален хост на Apache
ssl_webroot2=Друга директория
ssl_webroot3=Използвайте DNS домейни за проверка
ssl_letsmode=Let's Encrypt метод за валидиране
ssl_letsmode0=Apache виртуален хост, съответстващ на име на хост
ssl_letsmode1=Избран виртуален хост Apache
ssl_letsmode2=Друга директория с документи на уеб сървъра
ssl_letsmode3=DNS валидиране с помощта на BIND
ssl_letsmode4=Certbot вграден уеб сървър
ssl_letsok=Поискайте сертификат
ssl_letsonly=Просто актуализирайте подновяването
ssl_usewebmin=Копиране на нов ключ и сертификат в Webmin?
Expand Down Expand Up @@ -1209,6 +1210,7 @@ letsencrypt_ecert=Очакван файл на сертификата $1 не б
letsencrypt_ekey=Очакван файл с частен ключ $1 не бе намерен
letsencrypt_doing=Изискване на нов сертификат за $1, използвайки директорията на уебсайта $2.
letsencrypt_doingdns=Изискване на нов сертификат за $1, като се използва проверка на DNS ..
letsencrypt_doingcertbot=Заявка за нов сертификат за $1 с помощта на уеб сървъра Certbot ..
letsencrypt_failed=.. заявката не бе успешна : $1
letsencrypt_done=.. заявката бе успешна!
letsencrypt_show=Новият сертификат и частният ключ бяха записани в следните файлове :
Expand All @@ -1225,6 +1227,31 @@ letsencrypt_ecsr=Неуспешно генериране на CSR : $1
letsencrypt_ekeygen=Неуспешно генериране на частен ключ : $1
letsencrypt_enative=Нативният клиент Let's Encrypt (certbot) беше използван преди това в тази система и трябва да се използва за всички бъдещи заявки за сертификати
letsencrypt_eacmedns=Само официалният клиент Let's Encrypt поддържа валидиране на DNS
letsencrypt_eacmecertbot=Само официалният клиент на Let's Encrypt поддържа проверка на Certbot

announce_hide=Скриване на това съобщение
alert_hide=Скриване на предупреждение

os_eol=OS EOL известие за обратно отброяване
os_eol_countdown=месеци преди това
os_eol_ecountdown=Месецът преди обратното броене трябва да е цяло число
os_eol_until=До
os_eol_type1=Поддръжка на ОС и поддръжка на сигурността
os_eol_type2=Разширена поддръжка на сигурността на ОС
os_eol_years=години
os_eol_year=година
os_eol_months=месеца
os_eol_month=месец
os_eol_weeks=седмици
os_eol_week=седмица
os_eol_days=дни
os_eol_day=ден
os_eol_hours=часа
os_eol_hour=час
os_eol_minutes=минути
os_eol_minute=минута
os_eol_seconds=секунди
os_eol_second=второ
os_eol_reached=EOL достигнат
os_eol_reaching=EOL в
os_eol_reaching2=EOL предстоящо
5 changes: 0 additions & 5 deletions webmin/lang/ca
Original file line number Diff line number Diff line change
Expand Up @@ -395,11 +395,6 @@ ssl_letserr=Desgraciadament, no es pot utilitzar Let's Encrypt al teu sistema: $
ssl_letserr2=Comprova la pàgina de <a href='$1'>configuració del mòdul</a> per assegurar que estàs utilitzant el camí correcte de l'ordre <tt>letsencrypt</tt> o <tt>letsencrypt-auto</tt>.
ssl_letsdesc2=Aquesta pàgina es pot utilitzar per a demanar un nou certificat, que sobreescriurà qualsevol altre que estigui actualment configurat a Webmin. No obstant, el servei Let's Encrypt demana que la propietat del domini certificat sigui validada comprovant que aquests sistema allotja el lloc web del domini. Això es fa posant un petit fitxer temporal al directori de documents del lloc web.
ssl_letsheader=Opcions del nou certificat SSL
ssl_webroot=Directori arrel del lloc web per al fitxer de validació
ssl_webroot0=Host virtual Apache que coincideix amb el nom de host
ssl_webroot1=Un host virtual Apache diferent
ssl_webroot2=Un altre directori
ssl_webroot3=Utilitza dominis DNS per a la validació
ssl_letsok=Demana el Certifica
ssl_letsonly=Només Actualitza la Renovació
ssl_usewebmin=Copia la nova clau i el nou certificat a Webmin
Expand Down