Merge branch 'master' of github.com:webmin/webmin

This commit is contained in:
Jamie Cameron
2025-05-25 19:53:22 -07:00
37 changed files with 97 additions and 59 deletions

View File

@@ -1,10 +1,18 @@
## Changelog
#### 2.400 (May 24, 2025)
* Added built-in support for forgotten password recovery
* Fixed bugs with IPv6 interface creation on systems using Network Manager
* Improved security of single-use login links
* Added support for SSL certificates and DNS over TLS in the BIND module
#### 2.400 (May 25, 2025)
* Add built-in support for forgotten password recovery
* Add support for SSL certificates and DNS over TLS in the BIND module
* Add support to configure listen for any type of address in Dovecot module
* Add display of the PHP binary and its version in the PHP Configuration module
* Add TOML as editable format in the File Manager module
* Add support for template variables in help pages
* Improve security of single-use login links
* Fix Linux systems to show human-readable timestamps in the System Logs module
* Fix to prefer JSON::XS over JSON::PP if available for better performance
* Fix bugs with IPv6 interface creation on systems using Network Manager
* Fix to address the security issue in the System Documentation module
#### 2.303 (March 14, 2025)
* Fix permissions error when attempting to open a temp file for writing

View File

@@ -31,6 +31,7 @@ foreach my $name (@d) {
if (!$in{'confirm'}) {
# Find the packages first
print "<center>\n";
print &ui_form_start("delete_pkgs.cgi");
foreach my $d (@d) {
print &ui_hidden("d", $d);
@@ -42,6 +43,7 @@ if (!$in{'confirm'}) {
print &text('dpkgs_rusure',
join(" ", map { "<tt>$_</tt>" } @alldel)),"<p>\n";
print &ui_form_end([ [ 'confirm', $text{'pkgs_delete'} ] ]);
print "</center>\n";
}
else {
# Actually do the deletion

View File

@@ -3,22 +3,35 @@
require './phpini-lib.pl';
# Get install button
my $install_button = &show_php_install_button();
# Do we have PHP installed?
my @pkgs = &list_php_base_packages();
if (!@pkgs && $install_button) {
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
&ui_print_endpage($text{'pkgs_none2'}."<br>".$install_button);
}
# Get editable files
@files = &list_php_configs();
if (!@files) {
# User doesn't have access to any
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
&ui_print_endpage($text{'index_eaccess'});
&ui_print_endpage($text{'index_eaccess'}."<br>".
$install_button);
}
@files = grep { -r $_->[0] } @files;
if (!@files) {
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
if ($access{'noconfig'}) {
&ui_print_endpage($text{'index_efiles'});
&ui_print_endpage($text{'index_efiles'}."<br>".
$install_button);
}
else {
&ui_print_endpage(&text('index_efiles2',
"../config.cgi?$module_name"));
"../config.cgi?$module_name")."<br>".
$install_button);
}
}
@@ -37,7 +50,7 @@ else {
100, 0, \@tds);
foreach $f (@files) {
local @acts = ( "<a href='list_ini.cgi?file=".
&urlize($f->[0])."'>$text{'index_edit'}</a>" );
&urlize($f->[0])."'>$text{'index_medit'}</a>" );
if ($access{'manual'}) {
push(@acts, "<a href='edit_manual.cgi?file=".
&urlize($f->[0])."'>$text{'index_manual'}</a>");
@@ -57,20 +70,29 @@ else {
print "$text{'index_anyfile'}&nbsp; \n";
print &ui_textbox("file", undef, 40)." ".
&file_chooser_button("file")." ".
&ui_submit($text{'index_edit'})."\n";
&ui_submit($text{'index_medit'})."\n";
print &ui_form_end();
}
# Show button to install PHP versions
if ($access{'global'} && &foreign_available("software")) {
print &ui_hr();
print &ui_buttons_start();
print &ui_buttons_row("list_pkgs.cgi",
$text{'index_pkgs'},
$text{'index_pkgsdesc'});
print &ui_buttons_end();
}
print &show_php_install_button();
&ui_print_footer("/", $text{'index'});
}
# Print PHP install button if available
# Returns a button to install new PHP versions
sub show_php_install_button
{
&load_theme_library();
my $rv = '';
if ($access{'global'} && &foreign_available("software")) {
$rv .= &ui_hr();
$rv .= &ui_buttons_start();
$rv .= &ui_buttons_row("list_pkgs.cgi",
$text{'index_pkgs'},
$text{'index_pkgsdesc'});
$rv .= &ui_buttons_end();
}
return $rv;
}

View File

@@ -5,7 +5,7 @@ index_efiles2=لم يتم العثور على ملفات تهيئة PHP. اضب
index_file=ملف الضبط
index_desc=هدف
index_actions=أجراءات
index_edit=يدير
index_medit=يدير
index_manual=تحرير يدوي
index_anyfile=تعديل ملف تكوين PHP الآخر
index_return=ملفات التكوين

View File

@@ -5,7 +5,7 @@ index_efiles2=Не бяха намерени конфигурационни фа
index_file=Конфигурационен файл
index_desc=Предназначение
index_actions=мерки
index_edit=управлявам
index_medit=управлявам
index_manual=Редактирайте ръчно
index_anyfile=Редактирайте друг PHP конфигурационен файл
index_return=конфигурационни файлове

View File

@@ -5,7 +5,7 @@ index_efiles2=No s'ha trobat cap fitxer de configuració de PHP. Ajusta la <a hr
index_file=Fitxer de configuració
index_desc=Propòsit
index_actions=Accions
index_edit=Gestiona
index_medit=Gestiona
index_manual=Edita Manualment
index_return=als fitxers de configuració

View File

@@ -5,7 +5,7 @@ index_efiles2=Nebyly nalezeny žádné PHP konfigurační soubory. Opravte <a hr
index_file=Konfigurační soubor
index_desc=Účel
index_actions=Akce
index_edit=Spravovat
index_medit=Spravovat
index_manual=Upravit ručně
index_return=konfigurační soubory

View File

@@ -5,7 +5,7 @@ index_efiles2=Ingen PHP-konfigurationsfiler blev fundet. Juster <a href='$1'>mod
index_file=Konfigurationsfil
index_desc=Formål
index_actions=Handlinger
index_edit=Styre
index_medit=Styre
index_manual=Rediger manuelt
index_anyfile=Rediger anden PHP-konfigurationsfil
index_return=konfigurationsfiler

View File

@@ -5,7 +5,7 @@ index_efiles2=Es wurden keine PHP-Konfigurationsdateien gefunden. Passen Sie die
index_file=Konfigurationsdatei
index_desc=Verwendungszweck
index_actions=Aktionen
index_edit=Verwalten
index_medit=Verwalten
index_manual=Manuell bearbeiten
index_anyfile=Andere PHP-Konfigurationsdatei bearbeiten
index_return=Konfigurationsdateien
@@ -230,7 +230,7 @@ pkgs_ecannot=Sie haben keine Berechtigung, PHP-Pakete zu verwalten!
pkgs_ecannot2=Softwarepakete können auf diesem System nicht verwaltet werden
pkgs_nousers=Keine Domains
pkgs_ucount=$1 Domains
pkgs_newver=Zu installierendes PHP-Paket:
pkgs_newver=Zu installierendes PHP-Paket
pkgs_install=Jetzt installieren
pkgs_return=PHP-Pakete

View File

@@ -5,7 +5,7 @@ index_efiles2=Δεν βρέθηκαν αρχεία ρυθμίσεων PHP. Ρυ
index_file=Αρχείο ρυθμίσεων
index_desc=Σκοπός
index_actions=Ενέργειες
index_edit=Διαχειρίζονται
index_medit=Διαχειρίζονται
index_manual=Επεξεργασία Μη αυτόματα
index_anyfile=Επεξεργαστείτε άλλο αρχείο διαμόρφωσης PHP
index_return=αρχεία διαμόρφωσης

View File

@@ -5,7 +5,7 @@ index_efiles2=No PHP configuration files were found. Adjust the <a href='$1'>mod
index_file=Configuration file
index_desc=Purpose
index_actions=Actions
index_edit=Manage
index_medit=Manage
index_manual=Edit Manually
index_anyfile=Edit other PHP configuration file
index_return=configuration files
@@ -226,11 +226,12 @@ pkgs_shortver=Short version
pkgs_users=Used by
pkgs_delete=Delete Selected Packages
pkgs_none=No PHP packages were found on your system!
pkgs_none2=No PHP versions were found on your system. Click the button below to install one, if available in your software package repository.
pkgs_ecannot=You are not allowed to manage PHP packages!
pkgs_ecannot2=Software packages cannot be managed on this system
pkgs_nousers=No domains
pkgs_ucount=$1 domains
pkgs_newver=PHP package to install:
pkgs_newver=PHP package to install
pkgs_install=Install Now
pkgs_return=PHP packages

View File

@@ -5,7 +5,7 @@ index_efiles2=No se encontraron archivos de configuración de PHP. Ajuste la <a
index_file=Archivo de configuración
index_desc=Propósito
index_actions=Comportamiento
index_edit=Gestionar
index_medit=Gestionar
index_manual=Editar manualmente
index_anyfile=Editar otro archivo de configuración de PHP
index_return=Archivos de configuración

View File

@@ -5,7 +5,7 @@ index_efiles2=Ez da PHP konfigurazio fitxategirik aurkitu. Egokatu <a href='$1'>
index_file=Konfigurazio fitxategia
index_desc=helburua
index_actions=Ekintzak
index_edit=kudeatu
index_medit=kudeatu
index_manual=Editatu eskuz
index_anyfile=Editatu beste PHP konfigurazio fitxategia
index_return=konfigurazio fitxategiak

View File

@@ -5,7 +5,7 @@ index_efiles2=هیچ پرونده پیکربندی PHP یافت نشد. تنظی
index_file=فایل پیکربندی
index_desc=هدف
index_actions=اقدامات
index_edit=مدیریت کنید
index_medit=مدیریت کنید
index_manual=ویرایش دستی
index_anyfile=سایر فایل های پیکربندی PHP را ویرایش کنید
index_return=پرونده های پیکربندی

View File

@@ -5,7 +5,7 @@ index_efiles2=PHP-määritystiedostoja ei löytynyt. Säädä <a href='$1'>moduu
index_file=Asetustiedosto
index_desc=Tarkoitus
index_actions=Toiminnot
index_edit=hoitaa
index_medit=hoitaa
index_manual=Muokkaa manuaalisesti
index_anyfile=Muokkaa muuta PHP-asetustiedostoa
index_return=kokoonpanotiedostot

View File

@@ -5,7 +5,7 @@ index_efiles2=Aucun fichier de configuration PHP n'a été trouvé. Ajustez la <
index_file=Fichier de configuration
index_desc=Objectif
index_actions=Actions
index_edit=Gérer
index_medit=Gérer
index_manual=Modifier manuellement
index_return=fichiers de configuration

View File

@@ -5,7 +5,7 @@ index_efiles2=Nisu pronađene PHP konfiguracijske datoteke. Podesite konfiguraci
index_file=Konfiguracijska datoteka
index_desc=Svrha
index_actions=akcije
index_edit=Upravljati
index_medit=Upravljati
index_manual=Ručno uređivanje
index_anyfile=Uredite drugu PHP konfiguracijsku datoteku
index_return=konfiguracijske datoteke

View File

@@ -2,7 +2,7 @@ index_title=PHP konfiguráció
index_file=Konfigurációs fájl
index_desc=Cél
index_actions=Művelet
index_edit=Beállítás
index_medit=Beállítás
index_manual=Kézi szerkesztés
index_return=Konfigurációs fájlok

View File

@@ -5,7 +5,7 @@ index_efiles2=Non è stato trovato alcun file di configurazione di PHP. Modifica
index_file=File di configurazione
index_desc=Tipologia
index_actions=Azioni
index_edit=Modifica
index_medit=Modifica
index_manual=Modifica manualmente
index_return=file di configurazione

View File

@@ -5,7 +5,7 @@ index_efiles2=PHP構成ファイルが見つかりませんでした。 <a href=
index_file=構成ファイル
index_desc=目的
index_actions=行動
index_edit=管理する
index_medit=管理する
index_manual=手動で編集
index_anyfile=他のPHP設定ファイルを編集する
index_return=構成ファイル

View File

@@ -5,7 +5,7 @@ index_efiles2=PHP 설정 파일을 찾을 수 없습니다. <a href='$1'>모듈
index_file=설정 파일
index_desc=사용처
index_actions=작동
index_edit=관리
index_medit=관리
index_manual=수동 편집
index_return=설정 파일

View File

@@ -5,7 +5,7 @@ index_efiles2=Tiada fail konfigurasi PHP ditemui. Laraskan <a href='$1'>konfigur
index_file=Fail konfigurasi
index_desc=Tujuan
index_actions=Tindakan
index_edit=Mengurus
index_medit=Mengurus
index_manual=Edit secara manual
index_anyfile=Edit fail konfigurasi PHP lain
index_return=fail konfigurasi

View File

@@ -5,7 +5,7 @@ index_efiles2=Geen PHP configuratie files zijn gevonden. Verander de <a href='$1
index_file=Configuratie file
index_desc=Doel
index_actions=Acties
index_edit=Beheer
index_medit=Beheer
index_manual=Bewerk Handmatig
index_return=configuratie files

View File

@@ -5,7 +5,7 @@ index_efiles2=Fant ingen PHP konfigurasjonsfiler. Juster <a href='$1'>modulkonfi
index_file=Konfigurasjonsfil
index_desc=Hensikt
index_actions=Handlinger
index_edit=Vedlikehold
index_medit=Vedlikehold
index_manual=Rediger manuelt
index_return=konfigurasjonsfiler

View File

@@ -5,7 +5,7 @@ index_efiles2=Nie znaleziono plików konfiguracji PHP. Ustaw poprawne ścieżki
index_file=Plik konfiguracyjny
index_desc=Przeznaczenie
index_actions=Działania
index_edit=Zarządzaj
index_medit=Zarządzaj
index_manual=Edytuj ręcznie
index_return=plików konfiguracyjnych

View File

@@ -5,7 +5,7 @@ index_efiles2=Nenhum arquivo de configuração PHP foi encontrado. Ajuste a <a h
index_file=Arquivo de configuração
index_desc=Objetivo
index_actions=Ações
index_edit=Gerir
index_medit=Gerir
index_manual=Editar manualmente
index_anyfile=Editar outro arquivo de configuração PHP
index_return=arquivos de configuração

View File

@@ -5,7 +5,7 @@ index_efiles2=Nenhum arquivo de configuração PHP foi encontrado. Ajuste a <a h
index_file=Arquivo de configuração
index_desc=Objetivo
index_actions=Ações
index_edit=Gerir
index_medit=Gerir
index_manual=Editar manualmente
index_anyfile=Editar outro arquivo de configuração PHP
index_return=arquivos de configuração

View File

@@ -5,7 +5,7 @@ index_efiles2=Не найдены файлы конфигурации PHP. Из
index_file=Конфигурационный файл
index_desc=Цель
index_actions=Действия
index_edit=Управление
index_medit=Управление
index_manual=Редактировать Вручную
index_return=конфигурационные файлы

View File

@@ -5,7 +5,7 @@ index_efiles2=Neboli nájdené žiadne konfiguračné súbory PHP. Upravte <a hr
index_file=Konfiguračný súbor
index_desc=účel
index_actions=Akcia
index_edit=Spravovať
index_medit=Spravovať
index_manual=Upraviť ručne
index_anyfile=Upravte iný konfiguračný súbor PHP
index_return=konfiguračné súbory

View File

@@ -5,7 +5,7 @@ index_efiles2=Inga PHP-konfigurationsfiler hittades. Justera <a href='$1'>modulk
index_file=Konfigurationsfil
index_desc=Ändamål
index_actions=Handlingar
index_edit=Klara av
index_medit=Klara av
index_manual=Redigera manuellt
index_anyfile=Redigera annan PHP-konfigurationsfil
index_return=konfigurationsfiler

View File

@@ -5,7 +5,7 @@ index_efiles2=PHP yapılandırma dosyası bulunamadı. Genel PHP yapılandırma
index_file=Yapılandırma dosyası
index_desc=amaç
index_actions=Hareketler
index_edit=yönetme
index_medit=yönetme
index_manual=Manuel Olarak Düzenle
index_anyfile=Diğer PHP yapılandırma dosyasını düzenle
index_return=yapılandırma dosyaları

View File

@@ -5,7 +5,7 @@ index_efiles2=Файлів конфігурації PHP не знайдено.
index_file=Файл конфігурації
index_desc=Призначення
index_actions=Дії
index_edit=Управління
index_medit=Управління
index_manual=Редагувати вручну
index_anyfile=Відредагуйте інший файл конфігурації PHP
index_return=файли конфігурації

View File

@@ -5,7 +5,7 @@ index_efiles2=找不到PHP配置文件。调整<a href='$1'>模块配置</a>
index_file=配置文件
index_desc=目的
index_actions=动作
index_edit=管理
index_medit=管理
index_manual=手动编辑
index_anyfile=编辑其他 PHP 配置文件
index_return=配置文件

View File

@@ -5,7 +5,7 @@ index_efiles2=找不到PHP配置文件。調整<a href='$1'>模塊配置</a>
index_file=配置文件
index_desc=目的
index_actions=動作
index_edit=管理
index_medit=管理
index_manual=手動編輯
index_anyfile=編輯其他 PHP 設定檔
index_return=配置文件

View File

@@ -25,11 +25,15 @@ if (@pkgs) {
my $users;
if ($vmap) {
my $ulist = $vmap->{$pkg->{'shortver'}};
my $details =
&ui_details({
class => 'inline',
html => 1,
title => &text('pkgs_ucount', scalar(@$ulist)),
content => join("<br>",
map { "<tt>$_->{'dom'}</tt>" } @$ulist)});
$users = !$ulist || !@$ulist ? $text{'pkgs_nousers'} :
@$ulist > 5 ? &text('pkgs_ucount',
scalar(@$ulist)) :
join(", ", map { "<tt>$_->{'dom'}</tt>" }
@$ulist);
$details;
}
print &ui_checked_columns_row([
$pkg->{'name'},
@@ -53,10 +57,10 @@ if (&foreign_installed("package-updates")) {
print &ui_hr();
print &ui_form_start(
&get_webprefix()."/package-updates/update.cgi", "post");
print "<b>$text{'pkgs_newver'}</b>\n";
print "$text{'pkgs_newver'}&nbsp;\n";
print &ui_select("u", undef,
[ map { [ $_->{'name'},
$_->{'name'}." (".$_->{'ver'}.")" ] } @newpkgs ]);
"PHP $_->{'shortver'}" ] } @newpkgs ]);
print &ui_hidden(
"redir", &get_webprefix()."/$module_name/list_pkgs.cgi");
print &ui_hidden("redirdesc", $text{'pkgs_title'});

View File

@@ -1010,7 +1010,8 @@ my ($pkg) = @_;
foreach my $p (&list_all_php_version_packages($pkg)) {
my @info = &software::package_info($p);
next if (!@info);
my $err = &software::delete_package($p, { 'nodeps' => 1 });
my $err = &software::delete_package($p,
{ 'nodeps' => 1, 'depstoo' => 1 });
if ($err) {
return &html_strip($err);
}

View File

@@ -18,7 +18,7 @@ index_restart=Usermin neu starten
index_restartmsg=Klicken Sie auf diese Schaltfläche, um den Usermin-Serverprozess neu zu starten. Dies kann notwendig sein, wenn Sie kürzlich Perl aktualisiert haben.
access_title=IP-Zugangskontrolle
access_desc=Usermin kann so konfiguriert werden, dass der Zugriff nur von bestimmten IP-Adressen erlaubt oder verweigert wird. Hostnamen (wie foo.bar.com) und IP-Netzwerke (wie 10.254.3.0 oder 10.254.1.0/255.255.255.128 oder 10.254.1.0/25 oder 10.254.1.5-10.254.97.127) können ebenfalls eingegeben werden. Der Zugriff auf Usermin sollte auf vertrauenswürdige Adressen beschränkt werden, insbesondere wenn der Dienst über das Internet erreichbar ist. Andernfalls erhält jede:r, der:die das Passwort errät, vollständige Kontrolle über das System.
access_desc=Usermin kann so konfiguriert werden, dass der Zugriff nur von bestimmten IP-Adressen erlaubt oder verweigert wird. Hostnamen (wie foo.bar.com) und IP-Netzwerke (wie 10.254.3.0 oder 10.254.1.0/255.255.255.128 oder 10.254.1.0/25 oder 10.254.1.5-10.254.97.127) können ebenfalls eingegeben werden. Der Zugriff auf Usermin sollte auf vertrauenswürdige Adressen beschränkt werden, insbesondere wenn der Dienst über das Internet erreichbar ist. Andernfalls erhält jeder, der das Passwort errät, vollständige Kontrolle über das System.
bind_title=Ports und Adressen
bind_desc2=Dieses Formular kann verwendet werden, um die Portnummer zu ändern, auf der Usermin lauscht, oder es so zu konfigurieren, dass es nur auf einer einzigen IP-Adresse auf Ihrem System lauscht. Sie können es auch so konfigurieren, dass es Verbindungen auf mehreren Ports akzeptiert oder auf mehreren IP-Adressen lauscht. Hinweis: Ihr Webbrowser fordert Sie möglicherweise auf, sich nach der Änderung des Ports oder der Bindungsadresse erneut anzumelden.