mirror of
https://github.com/webmin/webmin.git
synced 2026-02-06 07:22:20 +00:00
Compare commits
53 Commits
2.302
...
dev/fix-li
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a67e327627 | ||
|
|
99889c1f30 | ||
|
|
42b8f2c25c | ||
|
|
6905548fa4 | ||
|
|
4ae5ec1694 | ||
|
|
f3a841d2b9 | ||
|
|
2aee714a81 | ||
|
|
16fec003dc | ||
|
|
fdbf960a2c | ||
|
|
e8b2b21bce | ||
|
|
1f07fdb274 | ||
|
|
7b85a75a2b | ||
|
|
2185f2068d | ||
|
|
e60be7133b | ||
|
|
4021b6d8bb | ||
|
|
5a777e9395 | ||
|
|
51e2ebec70 | ||
|
|
afe100d9f0 | ||
|
|
eca9472980 | ||
|
|
62c02d1273 | ||
|
|
d74e7e66c5 | ||
|
|
7250c44648 | ||
|
|
31c7e63407 | ||
|
|
264ecae147 | ||
|
|
6dd8915808 | ||
|
|
48602503cd | ||
|
|
13acaeece7 | ||
|
|
bb787e4e1c | ||
|
|
d4fab15024 | ||
|
|
1cb53ff00a | ||
|
|
8043aabf18 | ||
|
|
3a94ea3788 | ||
|
|
2183088706 | ||
|
|
3736f26a84 | ||
|
|
f2307ae1fa | ||
|
|
45ef8d11c1 | ||
|
|
b17df99700 | ||
|
|
a3f2e64315 | ||
|
|
853bde5e1a | ||
|
|
083f9b09a2 | ||
|
|
81e8fc6c37 | ||
|
|
b9d2910d60 | ||
|
|
574f66c251 | ||
|
|
56a231e78d | ||
|
|
85e7f6c292 | ||
|
|
9fa35cc2c9 | ||
|
|
23cb74fa35 | ||
|
|
e1d87fac1c | ||
|
|
9ba9bfd524 | ||
|
|
6c5c5fa225 | ||
|
|
495a196b2f | ||
|
|
50eb61b89e | ||
|
|
3cb358fe9e |
1
.github/workflows/webmin.dev+webmin.yml
vendored
1
.github/workflows/webmin.dev+webmin.yml
vendored
@@ -7,7 +7,6 @@ on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
- edited
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
## Changelog
|
||||
|
||||
#### 2.303 (March 14, 2025)
|
||||
* Fix permissions error when attempting to open a temp file for writing
|
||||
* Fix Network Configuration module to use `ip` command instead of `ifconfig` on Debian systems
|
||||
* Fix to correctly save IPv6 nameservers in Network Configuration module
|
||||
* Fix to run `man` as `nobody` to prevent section param misuse in System Documentation module
|
||||
* Add support for Sendmail hash files ending with `.cdb`
|
||||
* Update German translations
|
||||
|
||||
#### 2.302 (March 3, 2025)
|
||||
* Add ability to preserve allow/deny IPs in Webmin Configuration module #2427
|
||||
* Add enhancements to module config saving to ensure reliability under all conditions
|
||||
|
||||
@@ -2508,6 +2508,11 @@ if ($changed || !$znc{'version'} ||
|
||||
# Yes .. need to rebuild
|
||||
%znc = ( );
|
||||
my $conf = &get_config();
|
||||
my $gau;
|
||||
my $opts = &find("options", $conf);
|
||||
if ($opts && &find("update", $opts->{'members'})) {
|
||||
$gau = 1;
|
||||
}
|
||||
my @views = &find("view", $conf);
|
||||
my $n = 0;
|
||||
foreach my $v (@views) {
|
||||
@@ -2535,7 +2540,7 @@ if ($changed || !$znc{'version'} ||
|
||||
$file ||= ""; # slaves and other types with no file
|
||||
my $up = &find("update-policy", $z->{'members'});
|
||||
my $au = &find("allow-update", $z->{'members'});
|
||||
my $dynamic = $up || $au ? 1 : 0;
|
||||
my $dynamic = $up || $au || $gau ? 1 : 0;
|
||||
$znc{"zone_".($n++)} = join("\t", $z->{'value'},
|
||||
$z->{'index'}, $type, "*", $dynamic, $file);
|
||||
$files{$z->{'file'}}++;
|
||||
@@ -3174,6 +3179,36 @@ my $out = &backquote_command(
|
||||
return $? ? split(/\r?\n/, $out) : ( );
|
||||
}
|
||||
|
||||
# check_zone_warnings(&zone-name|&zone)
|
||||
# Returns a list of warnings from checking some zone file, if any
|
||||
sub check_zone_warnings
|
||||
{
|
||||
my ($zone) = @_;
|
||||
my ($zonename, $zonefile);
|
||||
if ($zone->{'values'}) {
|
||||
# Zone object
|
||||
$zonename = $zone->{'values'}->[0];
|
||||
my $f = &find("file", $zone->{'members'});
|
||||
$zonefile = $f->{'values'}->[0];
|
||||
}
|
||||
else {
|
||||
# Zone name object
|
||||
$zonename = $zone->{'name'};
|
||||
$zonefile = $zone->{'file'};
|
||||
}
|
||||
my $absfile = &make_chroot(&absolute_path($zonefile));
|
||||
my $out = &backquote_command(
|
||||
$config{'checkzone'}." ".quotemeta($zonename)." ".
|
||||
quotemeta($absfile)." 2>&1 </dev/null");
|
||||
my @rv;
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
if ($l =~ /^\Q$absfile\E:\d+:\s*(.*)/) {
|
||||
push(@rv, $1);
|
||||
}
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
# supports_check_conf()
|
||||
# Returns 1 if BIND configuration checking is supported, 0 if not
|
||||
sub supports_check_conf
|
||||
|
||||
@@ -20,12 +20,22 @@ my $desc = &ip6int_to_net(&arpa_to_ip($zone->{'name'}));
|
||||
|
||||
my $file = &make_chroot(&absolute_path($zone->{'file'}));
|
||||
my @errs = &check_zone_records($zone);
|
||||
my @warns = &check_zone_warnings($zone);
|
||||
if (@errs) {
|
||||
# Show list of errors
|
||||
print "<b>",&text('check_errs', "<tt>$file</tt>"),"</b><p>\n";
|
||||
print "<ul>\n";
|
||||
foreach my $e (@errs) {
|
||||
print "<li>".&html_escape($e)."\n";
|
||||
print "<li>".&html_escape($e)."</li>\n";
|
||||
}
|
||||
print "</ul>\n";
|
||||
}
|
||||
elsif (@warns) {
|
||||
# Just show warnings
|
||||
print "<b>",&text('check_warns', "<tt>$file</tt>"),"</b><p>\n";
|
||||
print "<ul>\n";
|
||||
foreach my $e (@warns) {
|
||||
print "<li>".&html_escape($e)."</li>\n";
|
||||
}
|
||||
print "</ul>\n";
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ if (@errs) {
|
||||
print "<b>",&text('ncheck_errs', "<tt>$file</tt>"),"</b><p>\n";
|
||||
print "<ul>\n";
|
||||
foreach my $e (@errs) {
|
||||
print "<li>".&html_escape($e)."\n";
|
||||
print "<li>".&html_escape($e)."</li>\n";
|
||||
}
|
||||
print "</ul>\n";
|
||||
}
|
||||
|
||||
@@ -26,6 +26,10 @@ foreach my $z (@zones) {
|
||||
$v eq "." || !&can_edit_zone($z) ||
|
||||
&arpa_to_ip($v) !~ /\Q$in{'search'}\E/i);
|
||||
my $t = $z->{'type'};
|
||||
next if (!$t);
|
||||
$t = "delegation" if ($t eq "delegation-only");
|
||||
$t = "master" if ($t eq "primary");
|
||||
$t = "slave" if ($t eq "secondary");
|
||||
if ($z->{'view'}) {
|
||||
push(@zlinks, "edit_$t.cgi?zone=$z->{'name'}".
|
||||
"&view=$z->{'viewindex'}");
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=إنشاء حتى لو كان السجل موجود بالفعل؟
|
||||
check_title=تحقق السجلات
|
||||
check_ecannot=غير مسموح لك بالتحقق من السجلات
|
||||
check_errs=The following errors were found in the records file $1 ..
|
||||
check_warns=تم العثور على التحذيرات التالية في ملف السجلات $1 ..
|
||||
check_allok=No errors were found in the records file $1.
|
||||
|
||||
ncheck_title=تحقق BIND التكوين
|
||||
|
||||
@@ -59,6 +59,8 @@ log_delete_recs2=Изтрити $1 записи в зона $2
|
||||
massdelete_vwarn=Някои зони са свързани с домейна Virtualmin $1 и затова не трябва да се изтриват тук!
|
||||
massdelete_vwarn2=Някои зони са свързани с домейна Virtualmin $1 и $2 други и затова не трябва да се изтриват тук!
|
||||
|
||||
check_warns=Следните предупреждения бяха намерени във файла със записи $1 ..
|
||||
|
||||
zonekey_algorithm=DNSSEC алгоритъм : $1
|
||||
zonekey_ds_keytag=Ключов етикет
|
||||
zonekey_ds_alg=Алгоритъм
|
||||
|
||||
@@ -63,6 +63,8 @@ log_delete_recs2=S'han suprimit $1 registres a la zona $2
|
||||
massdelete_vwarn=Algunes zones estan associades al domini Virtualmin $1, per tant, no hauríem de suprimir-les aquí.
|
||||
massdelete_vwarn2=Algunes zones estan associades al domini Virtualmin $1 i $2, per tant, no hauríem de suprimir-les.
|
||||
|
||||
check_warns=S'han trobat els advertiments següents al fitxer de registres $1 ..
|
||||
|
||||
zonekey_algorithm=Algorisme DNSSEC : $1
|
||||
zonekey_ds_keytag=Etiqueta clau
|
||||
zonekey_ds_alg=Algorisme
|
||||
|
||||
@@ -289,6 +289,7 @@ rmass_eclash2=.. záznam se stejným názvem a stejnou hodnotou $1 již existuje
|
||||
check_title=Zkontrolujte záznamy
|
||||
check_ecannot=Není dovoleno kontrolovat záznamy
|
||||
check_errs=V souboru záznamů $1 byly nalezeny následující chyby.
|
||||
check_warns=V souboru záznamů $1 byla nalezena následující varování ..
|
||||
check_allok=V souboru záznamů $1 nebyly nalezeny žádné chyby.
|
||||
|
||||
ncheck_title=Zkontrolujte BIND Config
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Opret, selvom der allerede findes en post?
|
||||
check_title=Tjek poster
|
||||
check_ecannot=Du har ikke tilladelse til at kontrollere poster
|
||||
check_errs=Følgende fejl blev fundet i posteringsfilen $1 ..
|
||||
check_warns=Følgende advarsler blev fundet i postfilen $1 ..
|
||||
check_allok=Der blev ikke fundet nogen fejl i postfilen $1.
|
||||
|
||||
ncheck_title=Kontroller BIND Config
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Erstellen, auch wenn Eintrag bereits existiert?
|
||||
check_title=Einträge prüfen
|
||||
check_ecannot=Sie sind nicht berechtigt, Einträge zu überprüfen.
|
||||
check_errs=Die folgenden Fehler wurden in der Eintragsdatei $1 gefunden ..
|
||||
check_warns=Die folgenden Warnungen wurden in der Eintragsdatei $1 gefunden ..
|
||||
check_allok=Keine Fehler in der Eintragsdatei $1 gefunden.
|
||||
|
||||
ncheck_title=BIND-Konfiguration prüfen
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Δημιουργήστε ακόμα και αν υπάρχει ήδ
|
||||
check_title=Ελέγξτε τις εγγραφές
|
||||
check_ecannot=Δεν επιτρέπεται να ελέγχετε τα αρχεία
|
||||
check_errs=Τα παρακάτω σφάλματα βρέθηκαν στο αρχείο εγγραφών $1 ..
|
||||
check_warns=Οι ακόλουθες προειδοποιήσεις βρέθηκαν στο αρχείο εγγραφών $1 ..
|
||||
check_allok=Δεν βρέθηκαν σφάλματα στο αρχείο εγγραφών $1.
|
||||
|
||||
ncheck_title=Ελέγξτε το BIND Config
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Create even if record already exists?
|
||||
check_title=Check Records
|
||||
check_ecannot=You are not allowed to check records
|
||||
check_errs=The following errors were found in the records file $1 ..
|
||||
check_warns=The following warnings were found in the records file $1 ..
|
||||
check_allok=No errors were found in the records file $1.
|
||||
|
||||
ncheck_title=Check BIND Config
|
||||
|
||||
@@ -489,6 +489,7 @@ rmass_clash=¿Crear incluso si el registro ya existe?
|
||||
check_title=Verificar registros
|
||||
check_ecannot=No tiene permiso para verificar registros
|
||||
check_errs=Se encontraron los siguientes errores en el archivo de registros $1 ..
|
||||
check_warns=Las siguientes advertencias se encontraron en el archivo de registros $1 ..
|
||||
check_allok=No se encontraron errores en el archivo de registros $1.
|
||||
|
||||
ncheck_title=Verifique la configuración de BIND
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Sortu erregistroa dagoeneko badago?
|
||||
check_title=Egiaztatu Erregistroak
|
||||
check_ecannot=Ezin duzu erregistroak egiaztatu
|
||||
check_errs=Ondorengo akatsak aurkitu dira $1 erregistroko fitxategian.
|
||||
check_warns=Honako abisu hauek $1 erregistro fitxategian aurkitu dira ..
|
||||
check_allok=Ez da akatsik aurkitu $1 erregistroko fitxategian.
|
||||
|
||||
ncheck_title=Begiratu BIND Config
|
||||
|
||||
@@ -429,6 +429,7 @@ rmass_clash=حتی اگر سابقه قبلاً وجود داشته باشد ا
|
||||
check_title=سوابق را بررسی کنید
|
||||
check_ecannot=شما مجاز به بررسی سوابق نیستید
|
||||
check_errs=The following errors were found in the records file $1 ..
|
||||
check_warns=اخطارهای زیر در فایل سوابق $1 یافت شد ..
|
||||
check_allok=No errors were found in the records file $1.
|
||||
|
||||
ncheck_title=پیکربندی BIND را بررسی کنید
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Luo vaikka tietue on jo olemassa?
|
||||
check_title=Tarkista tietueet
|
||||
check_ecannot=Et voi tarkistaa tietueita
|
||||
check_errs=Seuraavat virheet löytyivät tietuetiedostosta $1 ..
|
||||
check_warns=Tietuetiedostosta $1.. löytyi seuraavat varoitukset ..
|
||||
check_allok=Tietuetiedostossa $1 ei löytynyt virheitä.
|
||||
|
||||
ncheck_title=Tarkista BIND-kokoonpano
|
||||
|
||||
@@ -44,6 +44,8 @@ value_NAPTR3_P=Action spécifique au protocole
|
||||
|
||||
log_delete_recs2=$1 enregistrements supprimés dans la zone $2
|
||||
|
||||
check_warns=Les avertissements suivants ont été trouvés dans le fichier d'enregistrements $1 ..
|
||||
|
||||
zonekey_algorithm=Algorithme DNSSEC : $1
|
||||
zonekey_ds_keytag=Porte-clés
|
||||
zonekey_ds_alg=Algorithme
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Kreirajte čak i ako zapis već postoji?
|
||||
check_title=Provjerite zapise
|
||||
check_ecannot=Nije vam dopušteno provjeravati zapise
|
||||
check_errs=Sljedeće pogreške pronađene su u datoteci zapisa $1.
|
||||
check_warns=Sljedeća upozorenja pronađena su u datoteci zapisa $1 ..
|
||||
check_allok=U datoteci zapisa $1 nisu pronađene pogreške.
|
||||
|
||||
ncheck_title=Označite BIND Config
|
||||
|
||||
@@ -167,6 +167,8 @@ massdelete_vwarn2=Egyes zónák a (z) $1 és a (z) $2 Virtualmin domainhez vanna
|
||||
|
||||
rmass_esign=.. kész, de az aláírás sikertelen : $1
|
||||
|
||||
check_warns=A következő figyelmeztetések találhatók a(z) $1.. rekordfájlban ..
|
||||
|
||||
dnssec_secs=másodperc
|
||||
|
||||
dnssectools_title=DNSSEC-Tools automatizálás
|
||||
|
||||
@@ -562,6 +562,7 @@ rmass_clash=Crea anche se il record esiste già?
|
||||
check_title=Controlla i record
|
||||
check_ecannot=Non è consentito controllare i record
|
||||
check_errs=I seguenti errori sono stati trovati nel file dei record $1 ..
|
||||
check_warns=Sono stati trovati i seguenti avvisi nel file di record $1 ..
|
||||
check_allok=Nessun errore trovato nel file dei record $1.
|
||||
|
||||
ncheck_title=Controlla la configurazione BIND
|
||||
|
||||
@@ -221,6 +221,7 @@ rmass_name2=(ドメイン名に<tt>@</tt>を入力します)
|
||||
rmass_esign=..完了しましたが、署名に失敗しました:$1
|
||||
rmass_eclash2=..同じ名前と同じ値を持つレコード$1はすでに存在します。
|
||||
|
||||
check_warns=レコード ファイル $1 に次の警告が見つかりました。
|
||||
ncheck_title=BIND Configを確認してください
|
||||
ncheck_ecannot=BIND構成を確認することはできません
|
||||
ncheck_errs=BIND構成ファイル$1または参照ゾーンファイルで次のエラーが見つかりました。
|
||||
|
||||
@@ -747,6 +747,7 @@ rmass_clash=레코드가 이미 존재하더라도 작성 하시겠습니까?
|
||||
check_title=기록 확인
|
||||
check_ecannot=기록을 확인할 수 없습니다
|
||||
check_errs=레코드 파일 $1에서 다음 오류가 발견되었습니다.
|
||||
check_warns=다음 경고가 $1 레코드 파일에서 발견되었습니다 ..
|
||||
check_allok=레코드 파일 $1에서 오류가 발견되지 않았습니다.
|
||||
|
||||
ncheck_title=BIND 구성 확인
|
||||
|
||||
@@ -1171,6 +1171,7 @@ rmass_clash=Buat walaupun rekod sudah wujud?
|
||||
check_title=Semak Rekod
|
||||
check_ecannot=Anda tidak dibenarkan menyemak rekod
|
||||
check_errs=Kesalahan berikut telah dijumpai dalam fail rekod $1 ..
|
||||
check_warns=Amaran berikut ditemui dalam fail rekod $1 ..
|
||||
check_allok=Tiada ralat ditemui dalam fail rekod $1.
|
||||
|
||||
ncheck_title=Semak BIND Config
|
||||
|
||||
@@ -157,6 +157,8 @@ massdelete_vwarn2=Sommige zones zijn geassocieerd met het Virtualmin-domein $1 e
|
||||
|
||||
rmass_esign=.. klaar, maar ondertekenen mislukt : $1
|
||||
|
||||
check_warns=De volgende waarschuwingen zijn gevonden in het recordbestand $1 ..
|
||||
|
||||
dnssec_secs=seconden
|
||||
|
||||
zonekey_publicfile=Bestand met openbare sleutel : $1
|
||||
|
||||
@@ -44,6 +44,8 @@ value_NAPTR3_P=Protokollspesifikk handling
|
||||
|
||||
log_delete_recs2=Slettet $1 poster i sone $2
|
||||
|
||||
check_warns=Følgende advarsler ble funnet i postfilen $1 ..
|
||||
|
||||
zonekey_algorithm=DNSSEC-algoritme : $1
|
||||
zonekey_ds_keytag=Nøkkelbrikke
|
||||
zonekey_ds_alg=Algoritme
|
||||
|
||||
@@ -107,6 +107,8 @@ log_delete_recs2=Usunięto $1 rekordów w strefie $2
|
||||
massdelete_vwarn=Niektóre strefy są powiązane z domeną Virtualmin $1, dlatego nie należy ich tutaj usuwać!
|
||||
massdelete_vwarn2=Niektóre strefy są powiązane z domeną Virtualmin $1 i $2 innymi, dlatego nie należy ich tutaj usuwać!
|
||||
|
||||
check_warns=Znaleziono następujące ostrzeżenia w pliku rekordów $1 ..
|
||||
|
||||
dnssec_secs=sekundy
|
||||
|
||||
dt_zone_zskrolldesc=Wymuś najazd klucza podpisującego strefę
|
||||
|
||||
@@ -839,6 +839,7 @@ rmass_clash=Criar mesmo se o registro já existir?
|
||||
check_title=Verificar registros
|
||||
check_ecannot=Você não tem permissão para verificar registros
|
||||
check_errs=Os seguintes erros foram encontrados no arquivo de registros $1 ..
|
||||
check_warns=Os seguintes avisos foram encontrados no arquivo de registros $1 ..
|
||||
check_allok=Nenhum erro foi encontrado no arquivo de registros $1.
|
||||
|
||||
ncheck_title=Verifique a configuração do BIND
|
||||
|
||||
@@ -197,6 +197,8 @@ rmass_name2=(Digite <tt>@</tt> para o nome do domínio)
|
||||
rmass_esign=.. feito, mas a assinatura falhou : $1
|
||||
rmass_eclash2=.. um registro com o mesmo nome e o mesmo valor $1 já existe.
|
||||
|
||||
check_warns=Os seguintes avisos foram encontrados no arquivo de registros $1 ..
|
||||
|
||||
dnssec_secs=segundos
|
||||
|
||||
dnssectools_title=Automação de Ferramentas DNSSEC
|
||||
|
||||
@@ -589,6 +589,7 @@ rmass_clash=Создать, даже если запись уже существ
|
||||
check_title=Проверьте записи
|
||||
check_ecannot=Вам не разрешено проверять записи
|
||||
check_errs=Следующие ошибки были обнаружены в файле записей $1 ..
|
||||
check_warns=В файле записей $1 были обнаружены следующие предупреждения ..
|
||||
check_allok=В файле записей $1 ошибок не обнаружено.
|
||||
|
||||
ncheck_title=Проверьте BIND Config
|
||||
|
||||
@@ -1173,6 +1173,7 @@ rmass_clash=Vytvoriť, aj keď už záznam existuje?
|
||||
check_title=Skontrolujte záznamy
|
||||
check_ecannot=Nemáte oprávnenie kontrolovať záznamy
|
||||
check_errs=V súbore záznamov $1 sa našli nasledujúce chyby.
|
||||
check_warns=V súbore záznamov $1 sa našli nasledujúce upozornenia ..
|
||||
check_allok=V súbore záznamov $1 sa nenašli žiadne chyby.
|
||||
|
||||
ncheck_title=Skontrolujte BIND Config
|
||||
|
||||
@@ -314,6 +314,7 @@ rmass_clash=Skapa även om posten redan finns?
|
||||
check_title=Kontrollera poster
|
||||
check_ecannot=Du får inte kontrollera poster
|
||||
check_errs=Följande fel hittades i registerfilen $1 ..
|
||||
check_warns=Följande varningar hittades i postfilen $1 ..
|
||||
check_allok=Inga fel hittades i registerfilen $1.
|
||||
|
||||
ncheck_title=Kontrollera BIND Config
|
||||
|
||||
@@ -335,6 +335,7 @@ rmass_clash=Kayıt zaten mevcut olsa bile oluşturulsun mu?
|
||||
check_title=Kayıtları Kontrol Et
|
||||
check_ecannot=Kayıtları kontrol etme izniniz yok
|
||||
check_errs=$1 kayıt dosyasında aşağıdaki hatalar bulundu.
|
||||
check_warns=$1 kayıt dosyasında aşağıdaki uyarılar bulundu ..
|
||||
check_allok=$1 kayıt dosyasında hata bulunamadı.
|
||||
|
||||
ncheck_title=BIND Config'i kontrol edin
|
||||
|
||||
@@ -589,6 +589,7 @@ rmass_clash=Створити, навіть якщо запис уже існує
|
||||
check_title=Перевірте записи
|
||||
check_ecannot=Вам заборонено перевіряти записи
|
||||
check_errs=У файлі записів $1 виявлено такі помилки.
|
||||
check_warns=Наступні попередження знайдено у файлі записів $1 ..
|
||||
check_allok=У файлі записів $1 не виявлено помилок.
|
||||
|
||||
ncheck_title=Перевірте налаштування BIND
|
||||
|
||||
@@ -564,6 +564,7 @@ rmass_clash=即使记录已经存在也创建吗?
|
||||
check_title=检查记录
|
||||
check_ecannot=您无权检查记录
|
||||
check_errs=在记录文件$1中发现以下错误。
|
||||
check_warns=在记录文件 $1 中发现下列警告。
|
||||
check_allok=在记录文件$1中未找到错误。
|
||||
|
||||
ncheck_title=检查BIND配置
|
||||
|
||||
@@ -845,6 +845,7 @@ rmass_clash=即使記錄已經存在也創建嗎?
|
||||
check_title=檢查記錄
|
||||
check_ecannot=您無權檢查記錄
|
||||
check_errs=在記錄文件$1中發現以下錯誤。
|
||||
check_warns=在記錄文件 $1 中發現下列警告。
|
||||
check_allok=在記錄文件$1中未找到錯誤。
|
||||
|
||||
ncheck_title=檢查BIND配置
|
||||
|
||||
@@ -32,21 +32,27 @@ print &ui_table_row($text{'net_ssl_disable'},
|
||||
[ @opts,
|
||||
[ "", &getdef($sslopt, \@opts) ] ]));
|
||||
|
||||
@listens = &find("imap_listen", $conf, 2) ?
|
||||
my @listens = &find("imap_listen", $conf, 2) ?
|
||||
("imap_listen", "pop3_listen", "imaps_listen", "pop3s_listen") :
|
||||
("listen", "ssl_listen");
|
||||
("listen");
|
||||
my $mode;
|
||||
foreach $l (@listens) {
|
||||
$listen = &find_value($l, $conf);
|
||||
$mode = !$listen ? 0 :
|
||||
$listen eq "[::]" ? 1 :
|
||||
$listen eq "*" ? 2 : 3,
|
||||
my $v = &find_value($l, $conf);
|
||||
$mode = !$v ? 0 :
|
||||
# All interfaces, put in any order, e.g. "[::], *" or "*, ::"
|
||||
$v =~ /^\*,\s*(::|\[::\])$/ || $v =~ /^(::|\[::\]),\s*\*$/ ? 1 :
|
||||
# IPv6 only, e.g. "[::]" or "::"
|
||||
$v eq '::' || $v eq '[::]' ? 4 :
|
||||
# IPv4 only, e.g. "*"
|
||||
$v eq "*" ? 2 : 3,
|
||||
print &ui_table_row($text{'net_'.$l},
|
||||
&ui_radio($l."_mode", $mode,
|
||||
[ [ 0, $text{'net_listen0'} ],
|
||||
[ 1, $text{'net_listen1'} ],
|
||||
[ 2, $text{'net_listen2'} ],
|
||||
[ 4, $text{'net_listen4'} ],
|
||||
[ 3, $text{'net_listen3'} ] ])."\n".
|
||||
&ui_textbox($l, $mode == 3 ? $listen : "", 20), 3);
|
||||
&ui_textbox($l, $mode == 3 ? $v : "", 40), 3);
|
||||
}
|
||||
|
||||
print &ui_table_end();
|
||||
|
||||
172
dovecot/lang/de
172
dovecot/lang/de
@@ -1,25 +1,25 @@
|
||||
index_ecmd=Das Dovecot-Serverprogramm $1 wurde auf Ihrem System nicht gefunden. Möglicherweise ist es nicht installiert oder die <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
index_econf=Die Dovecot-Konfigurationsdatei $1 wurde auf Ihrem System nicht gefunden. Möglicherweise ist sie nicht installiert oder die <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
index_ecmd=Das Dovecot-Serverprogramm $1 wurde auf Ihrem System nicht gefunden. Möglicherweise ist es nicht installiert oder die <a href='$2'>Modulkonfiguration</a> ist fehlerhaft.
|
||||
index_econf=Die Dovecot-Konfigurationsdatei $1 wurde auf Ihrem System nicht gefunden. Möglicherweise ist sie nicht installiert oder die <a href='$2'>Modulkonfiguration</a> ist fehlerhaft.
|
||||
index_dovecot=Dovecot
|
||||
index_stop=Dovecot-Server stoppen
|
||||
index_stopdesc=Den laufenden Dovecot IMAP/POP3-Serverprozess herunterfahren. Dies verhindert, dass Benutzer ihre E-Mails herunterladen.
|
||||
index_stopdesc=Beendet den laufenden Dovecot IMAP/POP3-Serverprozess. Dadurch wird verhindert, dass Benutzer:innen ihre E-Mails herunterladen können.
|
||||
index_start=Dovecot-Server starten
|
||||
index_startdesc=Den Dovecot IMAP/POP3-Serverprozess starten, damit Benutzer ihre E-Mails herunterladen können.
|
||||
index_apply=Konfiguration anwenden
|
||||
index_applydesc=Aktivieren Sie die aktuelle Dovecot-Konfiguration, indem Sie den Serverprozess stoppen und neu starten.
|
||||
index_startdesc=Startet den Dovecot IMAP/POP3-Serverprozess, damit Benutzer:innen ihre E-Mails herunterladen können.
|
||||
index_apply=Konfiguration übernehmen
|
||||
index_applydesc=Aktiviert die aktuelle Dovecot-Konfiguration durch Stoppen und erneutes Starten des Serverprozesses.
|
||||
index_boot=Beim Systemstart starten?
|
||||
index_bootdesc=Ändern Sie diese Einstellung, um den Start des Dovecot-Servers beim Systemstart zu aktivieren oder zu deaktivieren.
|
||||
index_return=Modulindex
|
||||
index_version=Version $1
|
||||
|
||||
stop_err=Dovecot konnte nicht gestoppt werden
|
||||
stop_erunning=Nicht mehr in Betrieb
|
||||
stop_erunning=Nicht mehr aktiv
|
||||
start_err=Dovecot konnte nicht gestartet werden
|
||||
apply_err=Konfiguration konnte nicht angewendet werden
|
||||
apply_err=Konfiguration konnte nicht übernommen werden
|
||||
|
||||
net_title=Netzwerk- und Protokolleinstellungen
|
||||
net_header=Dovecot Netzwerk- und Mailprotokoll-Optionen
|
||||
net_protocols=Zu bedienende Mail-Protokolle
|
||||
net_title=Netzwerk und Protokolle
|
||||
net_header=Netzwerk- und Mailprotokolloptionen für Dovecot
|
||||
net_protocols=Bereitzustellende Mail-Protokolle
|
||||
net_pop3=POP3
|
||||
net_imap=IMAP
|
||||
net_pop3s=POP3 (SSL)
|
||||
@@ -29,136 +29,132 @@ net_ssl_disable=SSL-Verbindungen akzeptieren?
|
||||
net_ssl_required=Nur SSL-Verbindungen akzeptieren
|
||||
net_imap_listen=Schnittstellen für IMAP-Verbindungen
|
||||
net_pop3_listen=Schnittstellen für POP3-Verbindungen
|
||||
net_imaps_listen=Schnittstellen für IMAP SSL-Verbindungen
|
||||
net_pop3s_listen=Schnittstellen für POP3 SSL-Verbindungen
|
||||
net_listen=Schnittstellen für Nicht-SSL-Verbindungen
|
||||
net_ssl_listen=Schnittstellen für SSL-Verbindungen
|
||||
net_imaps_listen=Schnittstellen für IMAP-SSL-Verbindungen
|
||||
net_pop3s_listen=Schnittstellen für POP3-SSL-Verbindungen
|
||||
net_listen=Lauschen auf
|
||||
net_listen0=Standard
|
||||
net_listen1=Alle IPv4- und IPv6-Adressen
|
||||
net_listen2=Alle IPv4-Adressen
|
||||
net_listen4=Alle IPv6-Adressen
|
||||
net_listen3=IP-Adresse
|
||||
net_err=Netzwerkoptionen konnten nicht gespeichert werden
|
||||
net_eimap_listen=Ungültige IP-Adresse für IMAP-Verbindungen
|
||||
net_epop3_listen=Ungültige IP-Adresse für POP3-Verbindungen
|
||||
net_eimaps_listen=Ungültige IP-Adresse für IMAP SSL-Verbindungen
|
||||
net_epop3s_listen=Ungültige IP-Adresse für POP3 SSL-Verbindungen
|
||||
net_elisten=Ungültige IP-Adresse für Nicht-SSL-Verbindungen
|
||||
net_essl_listen=Ungültige IP-Adresse für SSL-Verbindungen
|
||||
net_ealisten=Ungültige IP-Adresse für das Lauschen: <tt>$1</tt>
|
||||
net_ealisten_invalid_mix=Eine einzelne IP-Adresse <tt>$1</tt> kann nicht zusammen mit dem Platzhalter <tt>$2</tt> verwendet werden. Geben Sie entweder einzelne IP-Adressen an oder verwenden Sie den Platzhalter, aber nicht beides.
|
||||
|
||||
imap_title=IMAP-Optionen
|
||||
|
||||
pop3_title=POP3-Optionen
|
||||
|
||||
ssl_title=SSL-Konfiguration
|
||||
ssl_header=IMAP- und POP3-SSL-Modus-Optionen
|
||||
ssl_key=SSL-Privatschlüsseldatei
|
||||
ssl_cert=SSL-Zertifikatsdatei
|
||||
ssl_ca=SSL-Client-CA-Zertifikatsdatei
|
||||
ssl_header=SSL-Modus-Optionen für IMAP und POP3
|
||||
ssl_key=Datei mit dem privaten SSL-Schlüssel
|
||||
ssl_cert=SSL-Zertifikatdatei
|
||||
ssl_ca=Zertifikatsdatei der SSL-Client-CA
|
||||
ssl_pass=Passwort für Schlüsseldatei
|
||||
ssl_prompt=Kein Passwort benötigt
|
||||
ssl_regen=Intervall für SSL-Parameterregenerierung
|
||||
ssl_prompt=Keines erforderlich
|
||||
ssl_regen=Intervall für SSL-Parameterneuerstellung
|
||||
ssl_hours=Stunden
|
||||
ssl_none=Kein
|
||||
ssl_plain=Nur Klartext-Authentifizierung im Nicht-SSL-Modus ablehnen?
|
||||
ssl_plain=Klartextauthentifizierung im Nicht-SSL-Modus verbieten?
|
||||
ssl_err=SSL-Konfiguration konnte nicht gespeichert werden
|
||||
ssl_ekey=Fehlende oder nicht vorhandene Privatschlüsseldatei
|
||||
ssl_ecert=Fehlende oder nicht vorhandene Zertifikatsdatei
|
||||
ssl_eca=Fehlende oder nicht vorhandene Client-CA-Zertifikatsdatei
|
||||
ssl_eregen=Fehlendes oder nicht-numerisches Parameter-Regenerierungsintervall
|
||||
ssl_ekey=Fehlende oder nicht vorhandene Datei mit privatem Schlüssel
|
||||
ssl_ecert=Fehlende oder nicht vorhandene Zertifikatdatei
|
||||
ssl_eca=Fehlende oder nicht vorhandene Zertifikatsdatei der Client-CA
|
||||
ssl_eregen=Fehlendes oder nicht-numerisches Intervall für Parameterneuerstellung
|
||||
ssl_epass=Kein Passwort für die SSL-Schlüsseldatei eingegeben
|
||||
|
||||
misc_title=Sonstige Optionen
|
||||
misc_title=Weitere Optionen
|
||||
|
||||
login_title=Benutzer- und Login-Optionen
|
||||
login_header=Optionen für Benutzer-Authentifizierung und Login
|
||||
login_fuid=Minimal gültige UID
|
||||
login_luid=Maximal gültige UID
|
||||
login_fgid=Minimal gültige Gruppen-ID
|
||||
login_lgid=Maximal gültige Gruppen-ID
|
||||
login_extra=Zusätzlich gewährte Sekundärgruppen
|
||||
login_header=Benutzerauthentifizierung und Login-Einstellungen
|
||||
login_fuid=Minimal zulässige UID
|
||||
login_luid=Maximal zulässige UID
|
||||
login_fgid=Minimal zulässige Gruppen-ID
|
||||
login_lgid=Maximal zulässige Gruppen-ID
|
||||
login_extra=Zusätzliche gewährte sekundäre Gruppen
|
||||
login_none=Keine
|
||||
login_chroot=Chroot-Verzeichnis für den Mail-Prozess
|
||||
login_chroot=Chroot-Verzeichnis für Mail-Prozess
|
||||
login_err=Benutzer- und Login-Optionen konnten nicht gespeichert werden
|
||||
login_efuid=Fehlende oder ungültige numerische minimale UID
|
||||
login_eluid=Fehlende oder ungültige numerische maximale UID
|
||||
login_efgid=Fehlende oder ungültige numerische minimale Gruppen-ID
|
||||
login_elgid=Fehlende oder ungültige numerische maximale Gruppen-ID
|
||||
login_echroot=Fehlendes oder ungültiges Chroot-Verzeichnis
|
||||
login_realms=SASL-Authentifizierungsdomänen
|
||||
login_realm=Standard-Authentifizierungsdomäne
|
||||
login_realms=SASL-Authentifizierungsbereiche
|
||||
login_realm=Standard-Authentifizierungsbereich
|
||||
login_mechs=Authentifizierungsmethoden
|
||||
login_anonymous=Anonym
|
||||
login_plain=Klartext
|
||||
login_digest-md5=Digest-MD5
|
||||
login_cram-md5=Cram-MD5
|
||||
login_apop=APOP
|
||||
login_otp=Einmaliges Passwort
|
||||
login_otp=Einmalpasswort
|
||||
login_skey=Sicherheitsschlüssel
|
||||
login_oauthbearer=OAuth2-Token-Authentifizierung
|
||||
login_xoauth2=Google OAuth2-Token-Authentifizierung
|
||||
login_oauthbearer=OAuth2 Bearer-Authentifizierung
|
||||
login_xoauth2=Google OAuth2 Bearer-Authentifizierung
|
||||
login_external=Externe SASL-Authentifizierung
|
||||
login_userdb=Datenquelle für Benutzer, Home-Verzeichnisse und IDs
|
||||
login_userdb=Datenquelle für Benutzer:innen, Home-Verzeichnisse und IDs
|
||||
login_passwd=Standard Unix-Benutzerdatenbank
|
||||
login_passwdfile=Benutzerdefinierte Passwortdatei $1
|
||||
login_static=Immer UID $1, GID $2 und Home-Verzeichnis $3 verwenden
|
||||
login_vpopmail=VPOPMail-Bibliothek
|
||||
login_ldap=LDAP, Konfigurationsdatei $1 verwenden
|
||||
login_pgsql=PostgreSQL, Konfigurationsdatei $1 verwenden
|
||||
login_sql=SQL-Datenbank, Konfigurationsdatei $1 verwenden
|
||||
login_ldap=LDAP, Konfigurationsdatei $1
|
||||
login_pgsql=PostgreSQL, Konfigurationsdatei $1
|
||||
login_sql=SQL-Datenbank, Konfigurationsdatei $1
|
||||
login_passdb=Passwort-Authentifizierungsquelle
|
||||
login_passwd2=Unix <tt>passwd</tt>-Datei
|
||||
login_shadow=Unix <tt>shadow</tt>-Datei
|
||||
login_dpam=Standard PAM-Dienst (<tt>dovecot</tt>)
|
||||
login_dpam=Standard-PAM-Dienst (<tt>dovecot</tt>)
|
||||
login_pam=PAM-Dienst $1
|
||||
login_session=PAM-Sitzungen öffnen und schließen
|
||||
login_pam2=PAM-Dienst $1<br> $2<br> Verwenden Sie den Cache-Schlüssel $3
|
||||
login_other=Andere Dovecot-Einstellung $1
|
||||
login_pam2=PAM-Dienst $1<br> $2<br> Cache-Schlüssel $3 verwenden
|
||||
login_other=Weitere Dovecot-Einstellung $1
|
||||
login_epasswdfile=Fehlende oder nicht vorhandene benutzerdefinierte Passwortdatei
|
||||
login_euid=Fehlende oder nicht numerische UID
|
||||
login_egid=Fehlende oder nicht numerische GID
|
||||
login_euid=Fehlende oder nicht-numerische UID
|
||||
login_egid=Fehlende oder nicht-numerische GID
|
||||
login_ehome=Fehlendes Home-Verzeichnis
|
||||
login_eldap=Fehlende oder nicht vorhandene LDAP-Konfigurationsdatei
|
||||
login_epgsql=Fehlende oder nicht vorhandene PostgreSQL-Konfigurationsdatei
|
||||
login_esql=Fehlende oder nicht vorhandene SQL-Konfigurationsdatei
|
||||
login_eppam=Fehlender oder ungültiger PAM-Dienst
|
||||
login_bsdauth=BSD-Authentifizierung<br> Verwenden Sie den Cache-Schlüssel $1
|
||||
login_bsdauth=BSD-Authentifizierung<br> Cache-Schlüssel $1 verwenden
|
||||
login_checkpassword=Externes Programm $1
|
||||
login_eckey=Fehlender oder ungültiger Cache-Schlüssel
|
||||
login_echeckpassword=Fehlendes oder ungültiges externes Passwortprüfungsprogramm
|
||||
login_procs=Maximale Login-Prozesse
|
||||
login_count=Anfängliche Login-Prozesse
|
||||
login_procs=Maximale Anzahl von Login-Prozessen
|
||||
login_count=Initiale Login-Prozesse
|
||||
login_eprocs=Fehlende oder ungültige maximale Anzahl von Login-Prozessen
|
||||
login_ecount=Fehlende oder ungültige anfängliche Anzahl von Login-Prozessen
|
||||
login_ecount=Fehlende oder ungültige initiale Anzahl von Login-Prozessen
|
||||
|
||||
mail_title=Mail-Dateien
|
||||
mail_header=Mail-Speicherort und Leseoptionen
|
||||
mail_env=Mail-Dateispeicherort
|
||||
mail_header=Speicherort und Leseoptionen für E-Mails
|
||||
mail_env=Speicherort der Mail-Dateien
|
||||
mail_env0=Automatisch erkennen
|
||||
mail_env1=Posteingang und Ordner in <tt>~/Maildir</tt>
|
||||
mail_env2=Posteingang unter <tt>/var/mail</tt>, Ordner in <tt>~/mail</tt>
|
||||
mail_env3=Posteingang in <tt>~/Maildir</tt>, Ordner in <tt>~/mail</tt>
|
||||
mail_env4=Andere Dovecot-Position $1
|
||||
mail_env4=Anderer Dovecot-Speicherort $1
|
||||
mail_index=Speicherort der Index-Dateien
|
||||
mail_index0=Standard (im Maildir-Verzeichnis)
|
||||
mail_index1=Nur im Speicher
|
||||
mail_index1=Nur im Arbeitsspeicher
|
||||
mail_index2=Anderes Verzeichnis $1
|
||||
mail_control=Speicherort der Steuerdateien
|
||||
mail_check=Intervall zwischen Mail-Überprüfungen
|
||||
mail_never=Niemals überprüfen
|
||||
mail_check=Intervall für Mail-Prüfung
|
||||
mail_never=Nie prüfen
|
||||
mail_secs=Sekunden
|
||||
mail_idle=Intervall zwischen Überprüfungen, wenn inaktiv
|
||||
mail_idle=Intervall für Mail-Prüfung im Leerlauf
|
||||
mail_full=Zugriff auf das gesamte Dateisystem erlauben?
|
||||
mail_crlf=E-Mails mit CRLF-Zeilenenden speichern?
|
||||
mail_change=Änderungen durch andere Programme verarbeiten?
|
||||
mail_umask=Umask für neue Dateien
|
||||
mail_err=Mail-Datei-Optionen konnten nicht gespeichert werden
|
||||
mail_eenv=Fehlender oder ungültiger Mail-Speicherort
|
||||
mail_echeck=Fehlende oder nicht-numerische Anzahl von Sekunden zwischen Überprüfungen
|
||||
mail_eidle=Fehlende oder nicht-numerische Anzahl von Sekunden zwischen Überprüfungen im Leerlauf
|
||||
mail_crlf=E-Mails mit CRLF-Zeilenumbrüchen speichern?
|
||||
mail_change=Mail-Änderungen durch andere Programme berücksichtigen?
|
||||
mail_umask=Umask-Berechtigungen für neue Dateien
|
||||
mail_err=Mail-Dateioptionen konnten nicht gespeichert werden
|
||||
mail_eenv=Fehlender oder ungültiger Speicherort für Mail-Dateien
|
||||
mail_echeck=Fehlende oder nicht-numerische Anzahl von Sekunden zwischen Prüfungen
|
||||
mail_eidle=Fehlende oder nicht-numerische Anzahl von Sekunden zwischen Prüfungen im Leerlauf
|
||||
mail_eumask=Fehlende oder ungültige vierstellige oktale Umask
|
||||
mail_uidl=UIDL-Format
|
||||
mail_uidl_other=Andere..
|
||||
mail_uidl_none=Nicht gesetzt (WARNUNG - Dovecot könnte nicht starten)
|
||||
mail_uidl_other=Anderes..
|
||||
mail_uidl_none=Nicht gesetzt (WARNUNG – Dovecot startet eventuell nicht)
|
||||
mail_uidl_dovecot=Altes Dovecot, neues Cyrus
|
||||
mail_uidl_uw=UW ipop3d
|
||||
mail_uidl_courier0=Courier Version 0
|
||||
@@ -166,37 +162,37 @@ mail_uidl_courier1=Courier Version 1, altes Cyrus
|
||||
mail_uidl_courier2=Courier Version 2
|
||||
mail_uidl_tpop3d=tpop3d
|
||||
mail_euidl=Fehlendes oder ungültiges UIDL-Format
|
||||
mail_last=Verwendung des POP3 LAST-Befehls zulassen?
|
||||
mail_lock=Methode zur Sperrung von Index-Dateien
|
||||
mail_last=Verwendung des POP3-Befehls LAST erlauben?
|
||||
mail_lock=Sperrmethode für Index-Dateien
|
||||
mail_fcntl=fcntl-Funktion
|
||||
mail_flock=flock-Funktion
|
||||
mail_dotlock=.lock-Dateien
|
||||
mail_lockf=lockf-Funktion
|
||||
mail_mbox_read_locks=Sperrmethode für das Lesen von Mailboxen
|
||||
mail_mbox_write_locks=Sperrmethode für das Schreiben von Mailboxen
|
||||
mail_mbox_read_locks=Lesesperrmethode für Mailboxen
|
||||
mail_mbox_write_locks=Schreibsperrmethode für Mailboxen
|
||||
mail_none=Keine
|
||||
mail_sel=Unten ausgewählt, in der Reihenfolge ..
|
||||
mail_embox_read_locks=Keine Sperrmethode für das Lesen ausgewählt
|
||||
mail_embox_write_locks=Keine Sperrmethode für das Schreiben ausgewählt
|
||||
mail_eindexmode=Der Speicherort der Indexdateien kann nicht festgelegt werden, wenn der Mail-Speicherort automatisch erkannt wird
|
||||
mail_econtrolmode=Der Speicherort der Steuerdateien kann nicht festgelegt werden, wenn der Mail-Speicherort automatisch erkannt wird
|
||||
mail_sel=Unten ausgewählt, in Reihenfolge ..
|
||||
mail_embox_read_locks=Keine Lesesperrmethode ausgewählt
|
||||
mail_embox_write_locks=Keine Schreibsperrmethode ausgewählt
|
||||
mail_eindexmode=Der Speicherort der Index-Dateien kann nicht gesetzt werden, wenn der Speicherort der Mail-Dateien automatisch erkannt wird
|
||||
mail_econtrolmode=Der Speicherort der Steuerdateien kann nicht gesetzt werden, wenn der Speicherort der Mail-Dateien automatisch erkannt wird
|
||||
mail_eindex=Fehlender oder ungültiger absoluter Pfad für Index-Dateien
|
||||
mail_econtrol=Fehlender oder ungültiger absoluter Pfad für Steuerdateien
|
||||
|
||||
log_net=Netzwerk- und Protokolleinstellungen geändert
|
||||
log_net=Netzwerk und Protokolle geändert
|
||||
log_login=Benutzer- und Login-Optionen geändert
|
||||
log_mail=Mail-Dateien geändert
|
||||
log_ssl=SSL-Konfiguration geändert
|
||||
log_apply=Konfiguration angewendet
|
||||
log_apply=Konfiguration übernommen
|
||||
log_start=Dovecot-Server gestartet
|
||||
log_stop=Dovecot-Server gestoppt
|
||||
log_bootup=Dovecot beim Systemstart aktiviert
|
||||
log_bootdown=Dovecot beim Systemstart deaktiviert
|
||||
log_manual=Konfigurationsdatei $1 manuell bearbeitet
|
||||
log_manual=Konfigurationsdatei manuell bearbeitet: $1
|
||||
|
||||
manual_title=Konfigurationsdateien bearbeiten
|
||||
manual_editsel=Dovecot-Konfigurationsdatei bearbeiten
|
||||
manual_err=Konfigurationsdatei konnte nicht gespeichert werden
|
||||
manual_edata=Nichts eingegeben!
|
||||
manual_efile=Ausgewählte Konfigurationsdatei ist nicht gültig
|
||||
manual_edata=Keine Eingabe erfolgt!
|
||||
manual_efile=Ausgewählte Konfigurationsdatei ist ungültig
|
||||
manual_ok=Bearbeiten
|
||||
|
||||
@@ -31,19 +31,15 @@ net_imap_listen=Interfaces for IMAP connections
|
||||
net_pop3_listen=Interfaces for POP3 connections
|
||||
net_imaps_listen=Interfaces for IMAP SSL connections
|
||||
net_pop3s_listen=Interfaces for POP3 SSL connections
|
||||
net_listen=Interfaces for non-SSL connections
|
||||
net_ssl_listen=Interfaces for SSL connections
|
||||
net_listen=Listen on
|
||||
net_listen0=Default
|
||||
net_listen1=All IPv4 and IPv6
|
||||
net_listen2=All IPv4
|
||||
net_listen4=All IPv6
|
||||
net_listen3=IP address
|
||||
net_err=Failed to save networking options
|
||||
net_eimap_listen=Invalid IP address for IMAP connections
|
||||
net_epop3_listen=Invalid IP address for POP3 connections
|
||||
net_eimaps_listen=Invalid IP address for IMAP SSL connections
|
||||
net_epop3s_listen=Invalid IP address for POP3 SSL connections
|
||||
net_elisten=Invalid IP address for non-SSL connections
|
||||
net_essl_listen=Invalid IP address for SSL connections
|
||||
net_ealisten=Invalid IP address to listen on : <tt>$1</tt>
|
||||
net_ealisten_invalid_mix=Cannot use an individual IP address <tt>$1</tt> together with the <tt>$2</tt> wildcard. Specify either specific IP addresses or use the wildcard, not both
|
||||
|
||||
imap_title=IMAP Options
|
||||
|
||||
|
||||
@@ -12,20 +12,50 @@ $sslopt = &find("ssl_disable", $conf, 2) ? "ssl_disable" : "ssl";
|
||||
&save_directive($conf, $sslopt, $in{$sslopt} eq '' ? undef : $in{$sslopt});
|
||||
@listens = &find("imap_listen", $conf, 2) ?
|
||||
("imap_listen", "pop3_listen", "imaps_listen", "pop3s_listen") :
|
||||
("listen", "ssl_listen");
|
||||
("listen");
|
||||
foreach $l (@listens) {
|
||||
if ($in{$l."_mode"} == 0) {
|
||||
$listen = undef;
|
||||
}
|
||||
elsif ($in{$l."_mode"} == 1) {
|
||||
$listen = "[::]";
|
||||
$listen = "*, ::";
|
||||
}
|
||||
elsif ($in{$l."_mode"} == 2) {
|
||||
$listen = "*";
|
||||
}
|
||||
elsif ($in{$l."_mode"} == 4) {
|
||||
$listen = "::";
|
||||
}
|
||||
elsif ($in{$l."_mode"} == 3) {
|
||||
&check_ipaddress($in{$l}) || &error($text{'net_e'.$l});
|
||||
$listen = $in{$l};
|
||||
# Check each IP address
|
||||
my @ips_list = split(/[\s,]+/, $in{$l});
|
||||
my @ips_valid;
|
||||
my $has_ip4_wildcard = grep { $_ eq "*" } @ips_list;
|
||||
my $has_ip6_wildcard = grep { /^(\[::\]|::)$/ } @ips_list;
|
||||
foreach my $ip (@ips_list) {
|
||||
# Check for wildcards
|
||||
if ($ip =~ /^(\*|::|\[::\])$/) {
|
||||
push(@ips_valid, $ip);
|
||||
next;
|
||||
}
|
||||
|
||||
# Validate IP address
|
||||
my $is_ipv4 = &check_ipaddress($ip);
|
||||
my $is_ipv6 = &check_ip6address($ip);
|
||||
if (!$is_ipv4 && !$is_ipv6) {
|
||||
&error(&text("net_ealisten", $ip));
|
||||
}
|
||||
|
||||
# Add IP address to list
|
||||
push(@ips_valid, $ip);
|
||||
|
||||
# Validate against wildcards
|
||||
&error(&text("net_ealisten_invalid_mix", $ip, "*"))
|
||||
if ($has_ip4_wildcard && &check_ipaddress($ip));
|
||||
&error(&text("net_ealisten_invalid_mix", $ip, "::"))
|
||||
if ($has_ip6_wildcard && &check_ip6address($ip));
|
||||
}
|
||||
$listen = join(", ", @ips_valid) if (@ips_valid);
|
||||
}
|
||||
&save_directive($conf, $l, $listen);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
allowed_paths=$HOME
|
||||
work_as_root=1
|
||||
allowed_for_edit=application-x-php application-x-ruby application-xml application-xslt+xml application-javascript application-x-shellscript application-x-perl application-x-yaml application-json application-x-x509-ca-cert application-pkix-cert application-x-sql application-x-asp application-x-aspx application-xhtml+xml
|
||||
allowed_for_edit=application-x-php application-x-ruby application-xml application-xslt+xml application-javascript application-x-shellscript application-x-perl application-x-yaml application-x-toml application-json application-x-x509-ca-cert application-pkix-cert application-x-sql application-x-asp application-x-aspx application-xhtml+xml
|
||||
|
||||
@@ -141,6 +141,12 @@ if (($table->{'name'} eq 'nat' && $rule->{'chain'} ne 'POSTROUTING') &&
|
||||
$dpfrom = $2;
|
||||
$dpto = $4;
|
||||
}
|
||||
elsif (&check_ipvx_ipaddress($rule->{'to-destination'}->[1])) {
|
||||
$dipfrom = $rule->{'to-destination'}->[1];
|
||||
$dipto = "";
|
||||
$dpfrom = "";
|
||||
$dpto = "";
|
||||
}
|
||||
}
|
||||
print &ui_table_row($text{'edit_dnat'},
|
||||
&ui_radio("dnatdef", $dipfrom eq "" ? 1 : 0,
|
||||
|
||||
@@ -39,7 +39,7 @@ else {
|
||||
"icmp6-addr-unreachable", "icmp6-port-unreachable",
|
||||
"echo-reply", "tcp-reset" );
|
||||
|
||||
$ipvx_todestpattern='^\[([0-9A-Fa-f:]+)](\-([0-9A-Fa-f:]+))?(:(\d+)(\-(\d+))?)?$';
|
||||
$ipvx_todestpattern='^\[([0-9A-Fa-f:]+)\](\-([0-9A-Fa-f:]+))?(:(\d+)(\-(\d+))?)?$';
|
||||
|
||||
# set IP Version
|
||||
&set_ipvx_version('ipv6');
|
||||
|
||||
31
help.cgi
31
help.cgi
@@ -10,24 +10,41 @@ use WebminCore;
|
||||
$ENV{'PATH_INFO'} !~ /[\\\&\;\`\'\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\n\r]/ ||
|
||||
&error($text{'help_epath'});
|
||||
$ENV{'PATH_INFO'} =~ /^\/(\S+)\/(\S+)$/ || &error($text{'help_epath'});
|
||||
$module = $1; $file = $2;
|
||||
my $module = $1;
|
||||
my $file = $2;
|
||||
&ReadParse();
|
||||
|
||||
# if it ends with .gif assume it is a direct URL
|
||||
if ($file =~ /\.(gif|jpg|jpeg|png)$/i) {
|
||||
&redirect("$module/$file");
|
||||
exit;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
# read the help file
|
||||
$help = &read_help_file($module, $file);
|
||||
my $help = &read_help_file($module, $file);
|
||||
$help || &helperror(&text('help_efile3',
|
||||
&html_escape($file), &html_escape($module)));
|
||||
my %hash;
|
||||
|
||||
# Modify help file based on module
|
||||
if (&foreign_exists($module) &&
|
||||
&foreign_require($module) &&
|
||||
&foreign_defined($module, 'help_pre_load')) {
|
||||
$help = &foreign_call($module, "help_pre_load", $help);
|
||||
&foreign_require($module)) {
|
||||
if (&foreign_defined($module, 'help_pre_load')) {
|
||||
$help = &foreign_call($module, "help_pre_load", $help);
|
||||
}
|
||||
if (&foreign_defined($module, 'help_template')) {
|
||||
%hash = &foreign_call($module, "help_template");
|
||||
}
|
||||
}
|
||||
|
||||
# if any template variables were given as URL params, substitute them into the file
|
||||
foreach my $k (keys %in) {
|
||||
if ($k =~ /^tmpl_(\S+)$/i) {
|
||||
$hash{$1} = $in{$k};
|
||||
}
|
||||
}
|
||||
if (%hash) {
|
||||
$help = &substitute_template($help, \%hash);
|
||||
}
|
||||
|
||||
# find and replace the <header> section
|
||||
|
||||
27
makedist.pl
27
makedist.pl
@@ -247,7 +247,6 @@ if (-d "/home/jcameron/webmin.com" && (!$release || $release == 1)) {
|
||||
# this is a new full version, so round down to the previous full version
|
||||
$lastvers = sprintf("%.2f0", $vers-0.006);
|
||||
}
|
||||
system("./showchangelog.pl --html $lastvers >/home/jcameron/webmin.com/changes-$vers.html");
|
||||
}
|
||||
|
||||
if ($min && !$release) {
|
||||
@@ -259,12 +258,13 @@ if ($min && !$release) {
|
||||
# Fill an associative array with name=value pairs from a file
|
||||
sub read_file
|
||||
{
|
||||
open(ARFILE, $_[0]) || return 0;
|
||||
my ($file, $data_hash, $order) = @_;
|
||||
open(ARFILE, $file) || return 0;
|
||||
while(<ARFILE>) {
|
||||
chop;
|
||||
if (!/^#/ && /^([^=]+)=(.*)$/) {
|
||||
$_[1]->{$1} = $2;
|
||||
push(@{$_[2]}, $1);
|
||||
$data_hash->{$1} = $2;
|
||||
push(@$order, $1) if ($order);
|
||||
}
|
||||
}
|
||||
close(ARFILE);
|
||||
@@ -275,11 +275,20 @@ return 1;
|
||||
# Write out the contents of an associative array as name=value lines
|
||||
sub write_file
|
||||
{
|
||||
local($arr);
|
||||
$arr = $_[1];
|
||||
open(ARFILE, "> $_[0]");
|
||||
foreach $k (keys %$arr) {
|
||||
print ARFILE "$k=$$arr{$k}\n";
|
||||
my ($file, $data_hash) = @_;
|
||||
my (%old, @order);
|
||||
&read_file($file, \%old, \@order);
|
||||
open(ARFILE, ">$file");
|
||||
my %done;
|
||||
foreach my $k (@order) {
|
||||
if (exists($data_hash->{$k}) && !$done{$k}++) {
|
||||
print ARFILE $k,"=",$data_hash->{$k},"\n";
|
||||
}
|
||||
}
|
||||
foreach $k (keys %$data_hash) {
|
||||
if (!exists($old{$k}) && !$done{$k}++) {
|
||||
print ARFILE $k,"=",$data_hash->{$k},"\n";
|
||||
}
|
||||
}
|
||||
close(ARFILE);
|
||||
}
|
||||
|
||||
@@ -24,9 +24,6 @@ my $copyright_file = "$debian_dir/copyright";
|
||||
my $changelog_file = "$debian_dir/changelog";
|
||||
my $files_file = "$debian_dir/files";
|
||||
|
||||
-r "/etc/debian_version" ||
|
||||
die RED, "makemoduledeb.pl must be run on Debian", RESET;
|
||||
|
||||
# Parse command-line args
|
||||
my ($force_theme, $url, $upstream, $provides, $debdepends, $debrecommends,
|
||||
$no_prefix, $force_usermin, $release, $allow_overwrite, $final_mod,
|
||||
|
||||
@@ -33,7 +33,10 @@ SECT: foreach $sec (@sects) {
|
||||
$cmd = $ocmd;
|
||||
$cmd =~ s/PAGE/$qpage/;
|
||||
$cmd =~ s/SECTION/$qsec/;
|
||||
$out = &backquote_command("$cmd 2>&1", 1);
|
||||
if ($< == 0) {
|
||||
$cmd = &command_as_user("nobody", 0, $cmd);
|
||||
}
|
||||
$out = &backquote_command($cmd." 2>&1", 1);
|
||||
if ($out !~ /^.*no manual entry/i && $out !~ /^.*no entry/i &&
|
||||
$out !~ /^.*nothing appropriate/i) {
|
||||
# Found it
|
||||
|
||||
@@ -64,9 +64,14 @@ my $unixsocket = $plugin && $u->[$plugin] eq 'unix_socket';
|
||||
my $nopass = ((!defined($epassfield1) || !$u->[$epassfield1]) &&
|
||||
(!defined($epassfield2) || !$u->[$epassfield2]));
|
||||
my $hashpass = $u->[$epassfield1] || $u->[$epassfield2];
|
||||
my $lock_supported = exists($fieldmap{'account_locked'}) &&
|
||||
defined($u->[$fieldmap{'account_locked'}]);
|
||||
my $lock_supported = &get_account_lock_support();
|
||||
# Old way for checking account locking
|
||||
my $locked = $u->[$fieldmap{'account_locked'}] eq 'Y';
|
||||
# New account locking check
|
||||
if (!exists($fieldmap{'account_locked'}) ||
|
||||
!defined($u->[$fieldmap{'account_locked'}])) {
|
||||
$locked = &get_account_lock_status($u->[1], $u->[0]);
|
||||
}
|
||||
print &ui_table_row($text{'user_pass'},
|
||||
&ui_radio("mysqlpass_mode", $in{'new'} ? 0 :
|
||||
$lock_supported && $locked ? 4 :
|
||||
@@ -84,12 +89,12 @@ if (!$in{'new'} && $hashpass) {
|
||||
}
|
||||
|
||||
# Plugin for setting password
|
||||
my @plugins = &list_authentication_plugins();
|
||||
if (@plugins) {
|
||||
my $plugins = &list_authentication_plugins();
|
||||
if ($plugins) {
|
||||
print &ui_table_row($text{'user_plugin'},
|
||||
&ui_select("plugin", $plugin && $u->[$plugin],
|
||||
[ [ '', $text{'default'} ],
|
||||
@plugins ]));
|
||||
@{$plugins} ]));
|
||||
}
|
||||
|
||||
# Allowed host / network
|
||||
|
||||
@@ -1730,23 +1730,72 @@ my $conf = &get_mysql_config();
|
||||
return &unique(map { $_->{'file'} } @$conf);
|
||||
}
|
||||
|
||||
# get_change_pass_sql(unescaped_plaintext_password, user, host)
|
||||
# get_account_lock_status(user, host)
|
||||
# Returns the account lock status of a user
|
||||
sub get_account_lock_status
|
||||
{
|
||||
my ($user, $host) = @_;
|
||||
my $rv = &execute_sql_safe($master_db, 'show create user ?@?', $user, $host);
|
||||
return undef if (!ref($rv) || !@{$rv->{'data'}});
|
||||
return $rv->{'data'}->[0][0] =~ /account\s+lock/i ? 1 : 0;
|
||||
}
|
||||
|
||||
# get_account_lock_support()
|
||||
# Returns 1 if the MySQL/MariaDB server supports account locking
|
||||
sub get_account_lock_support
|
||||
{
|
||||
my ($ver, $variant) = &get_remote_mysql_variant();
|
||||
return
|
||||
$variant eq "mariadb" && &compare_version_numbers($ver, "10.4.2") >= 0 ||
|
||||
$variant eq "mysql" && &compare_version_numbers($ver, "8.0") >= 0;
|
||||
}
|
||||
|
||||
# get_plugin_sql(version, variant, plainpass, plugin)
|
||||
# Get the right query for setting user password with plugin
|
||||
sub get_plugin_sql
|
||||
{
|
||||
my ($ver, $variant, $plainpass, $plugin) = @_;
|
||||
my $pass = &escapestr($plainpass);
|
||||
# Has account locking support?
|
||||
my $suplock = &get_account_lock_support();
|
||||
my $lockcurr;
|
||||
if ($suplock) {
|
||||
$lockcurr = !defined($plainpass);
|
||||
if ($lockcurr) {
|
||||
$pass = sprintf("%x", rand 16) for 1..30;
|
||||
}
|
||||
}
|
||||
my $is_plugin_socket = $plugin eq "unix_socket";
|
||||
my $by = "";
|
||||
$by = " by '$pass'" if (!$is_plugin_socket);
|
||||
my $sp = "identified with $plugin$by";
|
||||
if ($variant eq "mariadb") {
|
||||
$by = " using $password_func('$pass')" if (!$is_plugin_socket);
|
||||
$sp = "identified via $plugin$by";
|
||||
}
|
||||
if ($suplock) {
|
||||
$sp = $lockcurr ? "account lock" : "$sp account unlock";
|
||||
}
|
||||
return $sp;
|
||||
}
|
||||
|
||||
# get_change_pass_sql(unescaped_plaintext_password, user, host, plugin)
|
||||
# Get the right query for changing user password
|
||||
sub get_change_pass_sql
|
||||
{
|
||||
my ($unescaped_plainpass, $user, $host) = @_;
|
||||
my $plugin = &get_mysql_plugin();
|
||||
$plugin = $plugin ? "with $plugin" : "";
|
||||
my $escaped_pass = &escapestr($unescaped_plainpass);
|
||||
my ($unescaped_plainpass, $user, $host, $plugin) = @_;
|
||||
$plugin ||= &get_mysql_plugin();
|
||||
my $sql;
|
||||
my ($ver, $variant) = &get_remote_mysql_variant();
|
||||
my $mysql_mariadb_with_auth_string =
|
||||
my $supauth =
|
||||
$variant eq "mariadb" && &compare_version_numbers($ver, "10.2") >= 0 ||
|
||||
$variant eq "mysql" && &compare_version_numbers($ver, "5.7.6") >= 0;
|
||||
if ($mysql_mariadb_with_auth_string && $unescaped_plainpass) {
|
||||
$sql = "alter user '$user'\@'$host' identified $plugin by '$escaped_pass'";
|
||||
if ($plugin && $supauth) {
|
||||
my $sp = &get_plugin_sql($ver, $variant, $unescaped_plainpass, $plugin);
|
||||
$sql = "alter user '$user'\@'$host' $sp";
|
||||
}
|
||||
else {
|
||||
my $escaped_pass = &escapestr($unescaped_plainpass);
|
||||
$sql = "set password for '".$user."'\@'".$host."' = ".
|
||||
"$password_func('$escaped_pass')";
|
||||
}
|
||||
@@ -1937,34 +1986,12 @@ else {
|
||||
sub change_user_password
|
||||
{
|
||||
my ($plainpass, $user, $host, $plugin) = @_;
|
||||
|
||||
my ($ver, $variant) = &get_remote_mysql_variant();
|
||||
$plugin ||= &get_mysql_plugin();
|
||||
$plugin = $plugin ? "with $plugin" : "";
|
||||
my $lock_supported = $variant eq "mysql" && &compare_version_numbers($ver, "8.0.19");
|
||||
my $mysql_mariadb_with_auth_string =
|
||||
$variant eq "mariadb" && &compare_version_numbers($ver, "10.4") >= 0 ||
|
||||
$variant eq "mysql" && &compare_version_numbers($ver, "5.7.6") >= 0;
|
||||
|
||||
$plugin ||= "";
|
||||
my $sql;
|
||||
my $pass = &escapestr($plainpass);
|
||||
$host ||= '%';
|
||||
my $lock = !defined($plainpass);
|
||||
if ($lock) {
|
||||
$pass = sprintf("%x", rand 16) for 1..30;
|
||||
}
|
||||
if ($mysql_mariadb_with_auth_string) {
|
||||
my $sp = "identified $plugin by '".$pass."'";
|
||||
if ($lock_supported) {
|
||||
$sp = $lock ? "account lock" : "$sp account unlock";
|
||||
}
|
||||
$sql = "alter user '$user'\@'$host' $sp";
|
||||
&execute_sql_logged($master_db, $sql);
|
||||
}
|
||||
else {
|
||||
$sql = &get_change_pass_sql($plainpass, $user, $host);
|
||||
&execute_sql_logged($master_db, $sql);
|
||||
}
|
||||
$sql = &get_change_pass_sql($plainpass, $user, $host, $plugin);
|
||||
&execute_sql_logged($master_db, $sql);
|
||||
|
||||
# Update module password when needed
|
||||
&update_config_credentials({
|
||||
@@ -2058,7 +2085,7 @@ if (!$pid || !kill(0, $pid)) {
|
||||
}
|
||||
|
||||
# Update password by running command directly
|
||||
my $cmd = $config{'mysql'} || 'mysql';
|
||||
$cmd = $config{'mysql'} || 'mysql';
|
||||
my $sql = &get_change_pass_sql($pass, $user, 'localhost');
|
||||
my $out = &backquote_command("$cmd -D $master_db -e ".
|
||||
quotemeta("flush privileges; $sql")." 2>&1 </dev/null");
|
||||
@@ -2154,13 +2181,16 @@ return $rv->{'data'}->[0]->[0] =~ /unix_socket/i ? 'socket' : 'password';
|
||||
}
|
||||
|
||||
# list_authentication_plugins()
|
||||
# Returns a list of supported authentication plugins for setting passwords
|
||||
# Returns a list ref of supported authentication plugins for setting passwords
|
||||
sub list_authentication_plugins
|
||||
{
|
||||
my ($ver, $variant) = &get_remote_mysql_variant();
|
||||
if ($variant eq "mariadb" && &compare_version_numbers($ver, "10.4") >= 0 ||
|
||||
$variant eq "mysql" && &compare_version_numbers($ver, "5.7.6") >= 0) {
|
||||
return ('mysql_native_password', 'caching_sha2_password', 'unix_socket');
|
||||
my $rv = &execute_sql($master_db, "show plugins");
|
||||
my @plugins = map { $_->[0] } grep { $_->[1] eq 'ACTIVE' &&
|
||||
$_->[2] eq 'AUTHENTICATION' } @{ $rv->{data} };
|
||||
return @plugins ? \@plugins : ['mysql_native_password'];
|
||||
}
|
||||
return ();
|
||||
}
|
||||
|
||||
@@ -254,7 +254,12 @@ if(($cfg->{'vlan'} == 1) && ($gconfig{'os_version'} < 5)) {
|
||||
}
|
||||
}
|
||||
if(($cfg->{'vlan'} == 1) && ($cfg->{'mtu'})) {
|
||||
push(@options, ['pre-up', '/sbin/ifconfig '.$cfg->{'physical'}.' mtu '.$cfg->{'mtu'}]);
|
||||
if (&has_command("ip")) {
|
||||
push(@options, ['pre-up', 'ip link set mtu '.$cfg->{'mtu'}.' dev '.$cfg->{'physical'}]);
|
||||
}
|
||||
else {
|
||||
push(@options, ['pre-up', '/sbin/ifconfig '.$cfg->{'physical'}.' mtu '.$cfg->{'mtu'}]);
|
||||
}
|
||||
}
|
||||
|
||||
# Find the existing interface section
|
||||
@@ -328,9 +333,6 @@ else {
|
||||
my @options6;
|
||||
my @address6 = @{$cfg->{'address6'}};
|
||||
my @netmask6 = @{$cfg->{'netmask6'}};
|
||||
if (@address6 || $cfg->{'auto6'}) {
|
||||
push(@options6, ['pre-up', '/sbin/modprobe -q ipv6 ; /bin/true']);
|
||||
}
|
||||
if (@address6) {
|
||||
push(@options6, [ "address", shift(@address6) ]);
|
||||
push(@options6, [ "netmask", shift(@netmask6) ]);
|
||||
@@ -338,7 +340,12 @@ if (@address6) {
|
||||
while(@address6) {
|
||||
my $a = shift(@address6);
|
||||
my $n = shift(@netmask6);
|
||||
push(@options6, [ "up","ifconfig $cfg->{'fullname'} inet6 add $a/$n" ]);
|
||||
if (&has_command("ip")) {
|
||||
push(@options6, [ "up", "ip addr add $a/$n dev $cfg->{'fullname'}" ]);
|
||||
}
|
||||
else {
|
||||
push(@options6, [ "up", "ifconfig $cfg->{'fullname'} inet6 add $a/$n" ]);
|
||||
}
|
||||
}
|
||||
if ($cfg->{'gateway6'}) {
|
||||
push(@options6, [ "gateway", $cfg->{'gateway6'} ]);
|
||||
|
||||
@@ -271,8 +271,18 @@ else {
|
||||
my $lref = &read_file_lines($old->{'file'});
|
||||
splice(@$lref, $old->{'line'},
|
||||
$old->{'eline'} - $old->{'line'} + 1, @lines);
|
||||
my $diff = scalar(@lines) - ($old->{'eline'} - $old->{'line'} + 1);
|
||||
$iface->{'line'} = $old->{'line'};
|
||||
$iface->{'eline'} = $iface->{'line'} + scalar(@lines) - 1;
|
||||
&flush_file_lines($old->{'file'});
|
||||
&unlock_file($old->{'file'});
|
||||
if ($diff) {
|
||||
# May need to renumber other interface lines
|
||||
foreach my $b (@$boot) {
|
||||
$b->{'line'} += $diff if ($b->{'line'} > $iface->{'eline'});
|
||||
$b->{'eline'} += $diff if ($b->{'eline'} > $iface->{'eline'});
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
# Adding a new one (possibly to it's own file)
|
||||
@@ -295,6 +305,8 @@ else {
|
||||
splice(@$lref, $nline+1, 0, " ".$sect.":");
|
||||
}
|
||||
splice(@$lref, $eline+1, 0, @lines);
|
||||
$iface->{'line'} = $eline + 1;
|
||||
$iface->{'eline'} = $iface->{'line'} + scalar(@lines) - 1;
|
||||
&flush_file_lines($iface->{'file'});
|
||||
&unlock_file($iface->{'file'});
|
||||
}
|
||||
@@ -558,7 +570,7 @@ $sysctl{'net.ipv4.ip_forward'} = $in{'forward'};
|
||||
&unlock_file($sysctl_config);
|
||||
|
||||
# Save static routes
|
||||
my @boot = &boot_interfaces();
|
||||
my @boot = &boot_interfaces();
|
||||
foreach my $b (grep { $_->{'virtual'} eq '' } @boot) {
|
||||
my @r;
|
||||
if ($b->{'routes'}) {
|
||||
@@ -627,7 +639,8 @@ return ( );
|
||||
sub set_default_gateway
|
||||
{
|
||||
my ($gw, $dev) = @_;
|
||||
foreach my $iface (&boot_interfaces()) {
|
||||
my @boot = &boot_interfaces();
|
||||
foreach my $iface (@boot) {
|
||||
# What is this interface's current default and how is it set?
|
||||
my $oldgw = $iface->{'gateway'};
|
||||
my $oldr;
|
||||
@@ -670,7 +683,7 @@ foreach my $iface (&boot_interfaces()) {
|
||||
}
|
||||
|
||||
if ($save) {
|
||||
&save_interface($iface);
|
||||
&save_interface($iface, \@boot);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -694,16 +707,17 @@ return ( );
|
||||
sub set_default_ipv6_gateway
|
||||
{
|
||||
my ($gw, $dev) = @_;
|
||||
foreach my $iface (&boot_interfaces()) {
|
||||
my @boot = &boot_interfaces();
|
||||
foreach my $iface (@boot) {
|
||||
if ($iface->{'fullname'} eq $dev && $iface->{'gateway6'} ne $gw) {
|
||||
# Need to add to this interface
|
||||
$iface->{'gateway6'} = $gw;
|
||||
&save_interface($iface);
|
||||
&save_interface($iface, \@boot);
|
||||
}
|
||||
elsif ($iface->{'fullname'} ne $dev && $iface->{'gateway6'}) {
|
||||
# Need to remove from this interface
|
||||
delete($iface->{'gateway6'});
|
||||
&save_interface($iface);
|
||||
&save_interface($iface, \@boot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,8 +230,10 @@ my $method6 = $iface->{'auto6'} ? "auto" :
|
||||
|
||||
# Update nameservers
|
||||
my @ns = $iface->{'nameserver'} ? @{$iface->{'nameserver'}} : ();
|
||||
&save_nm_config($cfg, "ipv4", "dns",
|
||||
@ns ? join(" ", @ns) : undef);
|
||||
my @ns4 = grep { &check_ipaddress($_) } @ns;
|
||||
my @ns6 = grep { &check_ip6address($ns6) } @ns;
|
||||
&save_nm_config($cfg, "ipv4", "dns", @ns4 ? join(" ", @ns4) : undef) if (@ns4);
|
||||
&save_nm_config($cfg, "ipv6", "dns", @ns6 ? join(" ", @ns6) : undef) if (@ns6);
|
||||
my @sr = $iface->{'search'} ? @{$iface->{'search'}} : ();
|
||||
&save_nm_config($cfg, "ipv4", "dns-search",
|
||||
@sr ? join(" ", @sr) : undef);
|
||||
|
||||
@@ -21,9 +21,12 @@ for($i=0; defined($ns = $in{"nameserver_$i"}); $i++) {
|
||||
$ns = $in{"nameserver_$i"};
|
||||
$ns =~ s/^\s+//; $ns =~ s/\s+$//;
|
||||
if ($ns) {
|
||||
&check_ipaddress_any($ns) ||
|
||||
my $nns = $ns;
|
||||
# Just remove scope identifier (%interface) for simplicity
|
||||
$nns =~ s/\%.*$//;
|
||||
&check_ipaddress_any($nns) ||
|
||||
&error(&text('dns_ens', &html_escape($ns)));
|
||||
push(@{$dns->{'nameserver'}}, $ns);
|
||||
push(@{$dns->{'nameserver'}}, $nns);
|
||||
}
|
||||
}
|
||||
if ($in{'name0'}) {
|
||||
|
||||
187
phpini/lang/de
187
phpini/lang/de
@@ -3,7 +3,7 @@ index_eaccess=Sie haben keinen Zugriff auf PHP-Konfigurationsdateien.
|
||||
index_efiles=Keine der PHP-Konfigurationsdateien, auf die Sie Zugriff haben, existiert.
|
||||
index_efiles2=Es wurden keine PHP-Konfigurationsdateien gefunden. Passen Sie die <a href='$1'>Modulkonfiguration</a> an, um den korrekten Pfad zur globalen PHP-Konfigurationsdatei festzulegen.
|
||||
index_file=Konfigurationsdatei
|
||||
index_desc=Zweck
|
||||
index_desc=Verwendungszweck
|
||||
index_actions=Aktionen
|
||||
index_edit=Verwalten
|
||||
index_manual=Manuell bearbeiten
|
||||
@@ -11,143 +11,144 @@ index_anyfile=Andere PHP-Konfigurationsdatei bearbeiten
|
||||
index_return=Konfigurationsdateien
|
||||
|
||||
file_global=Globale PHP-Konfiguration
|
||||
file_eread=Fehler beim Lesen von $1: $2
|
||||
file_eread=Lesen von $1 fehlgeschlagen: $2
|
||||
|
||||
manual_title=Konfiguration manuell bearbeiten
|
||||
manual_desc=Diese Seite kann verwendet werden, um eine PHP-Konfigurationsdatei manuell zu bearbeiten. Dies sollte mit Vorsicht erfolgen, da keine Syntax- oder Gültigkeitsprüfung für Ihre Änderungen durchgeführt wird.
|
||||
manual_err=Fehler beim Bearbeiten der Konfigurationsdatei
|
||||
manual_edata=Kein neuer Inhalt eingegeben
|
||||
manual_desc=Auf dieser Seite kann eine PHP-Konfigurationsdatei manuell bearbeitet werden. Dies sollte mit Vorsicht erfolgen, da keine Syntax- oder Gültigkeitsprüfung der Änderungen durchgeführt wird.
|
||||
manual_err=Konfigurationsdatei konnte nicht bearbeitet werden
|
||||
manual_edata=Keine neuen Inhalte eingegeben
|
||||
|
||||
list_title=PHP-Konfiguration verwalten
|
||||
list_ecannot=Sie sind nicht berechtigt, diese PHP-Konfigurationsdatei zu verwalten.
|
||||
list_efile=Die zu bearbeitende Datei muss ein absoluter Pfad sein.
|
||||
list_ecannot=Sie dürfen diese PHP-Konfigurationsdatei nicht verwalten
|
||||
list_efile=Pfad zur zu bearbeitenden Datei muss absolut sein
|
||||
list_return=PHP-Konfiguration
|
||||
list_format_ini=INI-Format
|
||||
list_format_fpm=FPM-Format
|
||||
list_bin=PHP-Version $2 unter $1
|
||||
|
||||
vars_title=PHP-Variablen
|
||||
vars_header=Erstellung und Zitierung von PHP-Variablen
|
||||
vars_magic=Alle Eingabevariablen zitieren?
|
||||
vars_runtime=Daten zur Laufzeit zitieren?
|
||||
vars_header=Erstellung und Maskierung von PHP-Variablen
|
||||
vars_magic=Alle Eingabevariablen maskieren?
|
||||
vars_runtime=Daten zur Laufzeit maskieren?
|
||||
vars_register=Alle Eingaben in globale Variablen umwandeln?
|
||||
vars_args=Kommandozeilenparameter in globale Variablen umwandeln?
|
||||
vars_long=Alte Array-Formate wie <tt>HTTP_GET_VARS</tt> erstellen?
|
||||
vars_err=Fehler beim Speichern der PHP-Variableneinstellungen
|
||||
vars_long=Veraltete Array-Formate wie <tt>HTTP_GET_VARS</tt> erstellen?
|
||||
vars_err=PHP-Variableinstellungen konnten nicht gespeichert werden
|
||||
|
||||
dirs_title=Verzeichniseinstellungen
|
||||
dirs_header=Verzeichnis- und Erweiterungseinstellungen für PHP-Skripte
|
||||
dirs_header=Verzeichnisoptionen für PHP-Skripte und -Erweiterungen
|
||||
dirs_include=Suchverzeichnisse für Includes
|
||||
dirs_below=Unten aufgeführt..
|
||||
dirs_upload=Datei-Uploads zulassen?
|
||||
dirs_below=Unten aufgelistet..
|
||||
dirs_upload=Datei-Uploads erlauben?
|
||||
dirs_utmp=Temporäres Verzeichnis für hochgeladene Dateien
|
||||
dirs_err=Fehler beim Speichern der Verzeichniseinstellungen
|
||||
dirs_err=Verzeichniseinstellungen konnten nicht gespeichert werden
|
||||
dirs_eincs=Keine Include-Suchverzeichnisse eingegeben
|
||||
dirs_eutmp=Fehlendes oder ungültiges temporäres Verzeichnis für Dateien
|
||||
|
||||
db_title=Datenbankeinstellungen
|
||||
db_header1=MySQL-Datenbankverbindungs-Einstellungen
|
||||
db_persist=Persistente Datenbankverbindungen zulassen?
|
||||
db_maxpersist=Maximale Anzahl persistenter Verbindungen?
|
||||
db_maxlinks=Maximale Anzahl gesamter Verbindungen?
|
||||
db_timeout=Timeout für MySQL-Verbindungen?
|
||||
db_host=Standard-Host des MySQL-Servers
|
||||
db_port=Standard-Port des MySQL-Servers
|
||||
db_header1=MySQL-Datenbankverbindungseinstellungen
|
||||
db_persist=Persistente Datenbankverbindungen erlauben?
|
||||
db_maxpersist=Maximale persistente Verbindungen?
|
||||
db_maxlinks=Maximale Gesamtverbindungen?
|
||||
db_timeout=MySQL-Verbindungs-Timeout?
|
||||
db_host=Standard-MySQL-Serverhost
|
||||
db_port=Standard-MySQL-Serverport
|
||||
db_unlimited=Unbegrenzt
|
||||
db_s=Sekunden
|
||||
db_header2=PostgreSQL-Datenbankverbindungs-Einstellungen
|
||||
db_header2=PostgreSQL-Datenbankverbindungseinstellungen
|
||||
db_reset=Persistente Verbindungen automatisch wiederherstellen?
|
||||
db_err=Fehler beim Speichern der Datenbankeinstellungen
|
||||
db_err=Datenbankeinstellungen konnten nicht gespeichert werden
|
||||
db_emaxpersist=Fehlende oder ungültige maximale Anzahl persistenter Verbindungen
|
||||
db_emaxlinks=Fehlende oder ungültige maximale Anzahl gesamter Verbindungen
|
||||
db_etimeout=Fehlendes oder ungültiges Verbindungstimeout
|
||||
db_ehost=Fehlender oder ungültiger Standard-Host des MySQL-Servers
|
||||
db_eport=Fehlender oder ungültiger Standard-Port des MySQL-Servers
|
||||
db_emaxlinks=Fehlende oder ungültige maximale Gesamtverbindungen
|
||||
db_etimeout=Fehlendes oder ungültiges Verbindungs-Timeout
|
||||
db_ehost=Fehlender oder ungültiger Standard-MySQL-Serverhost
|
||||
db_eport=Fehlender oder ungültiger Standard-MySQL-Serverport
|
||||
|
||||
session_title=Session-Optionen
|
||||
session_header=Optionen für PHP-Sitzungsverfolgung
|
||||
session_handler=Mechanismus zur Speicherung von Sitzungen
|
||||
session_handler=Mechanismus zur Sitzungsspeicherung
|
||||
session_files=Dateien
|
||||
session_mm=Im Speicher
|
||||
session_users=Benutzerdefiniert
|
||||
session_redis=Redis
|
||||
session_memcache=MemcacheD
|
||||
session_path=Verzeichnis für Sitzungsdateien
|
||||
session_cookies=Verwendung von Cookies zur Sitzungsverfolgung zulassen?
|
||||
session_only_cookies=Immer Cookies zur Sitzungsverfolgung verwenden?
|
||||
session_cookies=Verwendung von Cookies zur Sitzungserkennung erlauben?
|
||||
session_only_cookies=Immer Cookies zur Sitzungserkennung verwenden?
|
||||
session_life=Cookie-Lebensdauer
|
||||
session_forever=Unbegrenzt
|
||||
session_maxlife=Maximale Sitzungslebensdauer
|
||||
session_maxlife=Maximale Sitzungsdauer
|
||||
session_epath=Fehlendes oder ungültiges Verzeichnis für Sitzungsdateien
|
||||
session_elife=Fehlende oder ungültige Cookie-Lebensdauer
|
||||
session_emaxlife=Fehlende oder ungültige maximale Sitzungslebensdauer
|
||||
session_emaxlife=Fehlende oder ungültige maximale Sitzungsdauer
|
||||
|
||||
limits_title=Ressourcenlimits
|
||||
limits_title=Ressourcenbeschränkungen
|
||||
limits_header=Optionen für Speicher- und Übertragungsgrenzen
|
||||
limits_mem=Maximale Speicherzuweisung
|
||||
limits_mem=Maximaler Speicherverbrauch
|
||||
limits_post=Maximale HTTP-POST-Größe
|
||||
limits_upload=Maximale Datei-Upload-Größe
|
||||
limits_upload=Maximale Dateiupload-Größe
|
||||
limits_exec=Maximale Ausführungszeit
|
||||
limits_input=Maximale Eingabeparsing-Zeit
|
||||
limits_vars=Maximale Anzahl an Eingabevariablen
|
||||
limits_err=Fehler beim Speichern der Ressourcenlimits
|
||||
limits_emem=Fehlende oder ungültige maximale Speicherzuweisung
|
||||
limits_input=Maximale Zeit für Eingabeverarbeitung
|
||||
limits_vars=Maximale Anzahl von Eingabevariablen
|
||||
limits_err=Ressourcengrenzen konnten nicht gespeichert werden
|
||||
limits_emem=Fehlender oder ungültiger maximaler Speicherverbrauch
|
||||
limits_epost=Fehlende oder ungültige maximale HTTP-POST-Größe
|
||||
limits_eupload=Fehlende oder ungültige maximale Datei-Upload-Größe
|
||||
limits_eupload=Fehlende oder ungültige maximale Upload-Größe
|
||||
limits_eexec=Fehlende oder ungültige maximale Ausführungszeit
|
||||
limits_einput=Fehlende oder ungültige maximale Eingabeparsing-Zeit
|
||||
limits_evars=Fehlende oder ungültige maximale Anzahl an Eingabevariablen
|
||||
limits_einput=Fehlende oder ungültige maximale Zeit für Eingabeverarbeitung
|
||||
limits_evars=Fehlende oder ungültige maximale Anzahl von Eingabevariablen
|
||||
|
||||
errors_title=Fehlerprotokollierung
|
||||
errors_header=Anzeige- und Protokollierungsoptionen für Fehlermeldungen
|
||||
errors_display=Fehlermeldungen anzeigen?
|
||||
errors_log=Fehlermeldungen in das Protokoll schreiben?
|
||||
errors_log=Fehlermeldungen protokollieren?
|
||||
errors_bits=Anzuzeigende Fehlertypen
|
||||
errors_reporting=Ausdruck für Fehlertypen
|
||||
errors_E_ALL=Alle Fehler und Warnungen
|
||||
errors_E_ERROR=Schwerwiegende Laufzeitfehler
|
||||
errors_E_WARNING=Laufzeitwarnungen
|
||||
errors_E_PARSE=Syntaxfehler zur Kompilierzeit
|
||||
errors_E_NOTICE=Hinweise zur Laufzeit
|
||||
errors_E_CORE_ERROR=Schwerwiegende Fehler während des Startvorgangs
|
||||
errors_E_CORE_WARNING=Warnungen während des Startvorgangs
|
||||
errors_E_COMPILE_ERROR=Schwerwiegende Fehler zur Kompilierzeit
|
||||
errors_E_COMPILE_WARNING=Warnungen zur Kompilierzeit
|
||||
errors_E_USER_ERROR=Vom Benutzer generierte Fehlermeldung
|
||||
errors_E_USER_WARNING=Vom Benutzer generierte Warnmeldung
|
||||
errors_E_USER_NOTICE=Vom Benutzer generierte Hinweisnachricht
|
||||
errors_E_PARSE=Fehler beim Parsen zur Kompilierzeit
|
||||
errors_E_NOTICE=Laufzeit-Hinweise
|
||||
errors_E_CORE_ERROR=Schwerwiegende Fehler beim Start
|
||||
errors_E_CORE_WARNING=Warnungen beim Start
|
||||
errors_E_COMPILE_ERROR=Schwerwiegende Kompilierfehler
|
||||
errors_E_COMPILE_WARNING=Kompilierzeit-Warnungen
|
||||
errors_E_USER_ERROR=Benutzerdefinierte Fehlermeldung
|
||||
errors_E_USER_WARNING=Benutzerdefinierte Warnung
|
||||
errors_E_USER_NOTICE=Benutzerdefinierter Hinweis
|
||||
errors_ignore=Wiederholte Fehler ignorieren?
|
||||
errors_source=Quelle beim Prüfen auf Wiederholungen ignorieren?
|
||||
errors_maxlen=Maximale Größe protokollierter Fehler
|
||||
errors_file=Protokolldatei für Fehler
|
||||
errors_source=Quelltext bei Wiederholung ignorieren?
|
||||
errors_maxlen=Maximale Größe für protokollierte Fehler
|
||||
errors_file=Fehlerprotokolldatei
|
||||
errors_none=Keine
|
||||
errors_syslog=Syslog
|
||||
errors_other=Andere Datei $1
|
||||
errors_unlimited=Unbegrenzt
|
||||
errors_err=Fehler beim Speichern der Fehlerprotokollierung
|
||||
errors_err=Fehlerprotokollierung konnte nicht gespeichert werden
|
||||
errors_ereporting=Kein Ausdruck für Fehlertypen eingegeben
|
||||
errors_emaxlen=Fehlende oder ungültige maximale Größe protokollierter Fehler
|
||||
errors_efile=Fehlende Protokolldatei für Fehler
|
||||
errors_emaxlen=Fehlende oder ungültige maximale Protokollgröße
|
||||
errors_efile=Fehlende Fehlerprotokolldatei
|
||||
|
||||
misc_title=Weitere Einstellungen
|
||||
misc_header=Verschiedene zusätzliche PHP-Einstellungen
|
||||
misc_short=PHP-Skripte mit <? zulassen?
|
||||
misc_asp=Tags <% %> zulassen?
|
||||
misc_header=Sonstige PHP-Einstellungen
|
||||
misc_short=PHP-Skripte mit <? erlauben?
|
||||
misc_asp=<% %>-Tags erlauben?
|
||||
misc_zlib=Ausgabe mit zlib komprimieren?
|
||||
misc_flush=Ausgabe nach jedem Schreibvorgang leeren?
|
||||
misc_fopen=Öffnen von URLs als Dateien zulassen?
|
||||
misc_smtp=SMTP-Server für den E-Mail-Versand
|
||||
misc_port=SMTP-Port auf dem Server
|
||||
misc_fopen=Öffnen von URLs als Dateien erlauben?
|
||||
misc_smtp=SMTP-Server zum Versenden von E-Mails
|
||||
misc_port=SMTP-Port des Servers
|
||||
misc_none=Keine
|
||||
misc_sendmail=Pfad zum Befehl für den E-Mail-Versand
|
||||
misc_err=Fehler beim Speichern weiterer Einstellungen
|
||||
misc_sendmail=Pfad zum Befehl zum Versenden von E-Mails
|
||||
misc_err=Weitere Einstellungen konnten nicht gespeichert werden
|
||||
misc_esmtp=Fehlender oder nicht auflösbarer SMTP-Server
|
||||
misc_esmtp_port=Fehlender oder nicht-numerischer SMTP-Port
|
||||
misc_esendmail=Ungültiger Befehl für den E-Mail-Versand
|
||||
misc_esendmail2=Fehlender Befehl für den E-Mail-Versand
|
||||
misc_include=Öffnen von Remote-Includes zulassen?
|
||||
misc_esendmail=Ungültiger Befehl zum Versenden von E-Mails
|
||||
misc_esendmail2=Fehlender Befehl zum Versenden von E-Mails
|
||||
misc_include=Öffnen von entfernten Includes erlauben?
|
||||
misc_path=CGI Fix Path Info?
|
||||
misc_timezone=PHP-Zeitzone
|
||||
misc_charset=Standard-Zeichensatz
|
||||
misc_charset=Standardzeichensatz
|
||||
|
||||
disable_title=Deaktivierte Funktionen
|
||||
disable_header=Deaktivierte PHP-Funktionen und -Features
|
||||
@@ -160,36 +161,36 @@ disable_proc_open=proc_open (Befehl ausführen und Ein-/Ausgabe erfassen)
|
||||
disable_popen=popen (Pipe zu ausgeführtem Befehl öffnen)
|
||||
disable_curl_exec=curl_exec (URL-Download-Sitzung ausführen)
|
||||
disable_curl_multi_exec=curl_multi_exec (Mehrere URL-Download-Sitzungen ausführen)
|
||||
disable_parse_ini_file=parse_ini_file (PHP-INI-Datei einlesen)
|
||||
disable_show_source=show_source (Datei mit PHP-Syntaxhervorhebung ausgeben)
|
||||
disable_parse_ini_file=parse_ini_file (PHP-INI-Datei lesen)
|
||||
disable_show_source=show_source (Datei mit PHP-Syntaxhervorhebung anzeigen)
|
||||
disable_mail=mail (E-Mail senden)
|
||||
disable_leftover=Weitere Funktionen:
|
||||
disable_err=Fehler beim Speichern deaktivierter Funktionen
|
||||
disable_err=Deaktivierte Funktionen konnten nicht gespeichert werden
|
||||
disable_classes=Deaktivierte integrierte Klassen
|
||||
|
||||
mods_title=PHP-Erweiterungen
|
||||
mods_edir=PHP-Erweiterungsverzeichnis konnte nicht gefunden werden!
|
||||
mods_ecannot=Sie sind nicht berechtigt, aktivierte PHP-Erweiterungen zu bearbeiten.
|
||||
mods_desc=Auf dieser Seite können PHP-Version-$1-Erweiterungen systemweit für alle Benutzer:innen aktiviert oder deaktiviert werden.
|
||||
mods_edir=Verzeichnis für PHP-Erweiterungen konnte nicht gefunden werden!
|
||||
mods_ecannot=Sie dürfen aktivierte PHP-Erweiterungen nicht bearbeiten
|
||||
mods_desc=Auf dieser Seite können global PHP-Erweiterungen für Version $1 für alle Benutzer:innen auf diesem System aktiviert oder deaktiviert werden.
|
||||
mods_enabled=Aktiviert?
|
||||
mods_name=Erweiterungsname
|
||||
mods_file=Konfigurationsdatei
|
||||
mods_pkg=Paket
|
||||
mods_idesc=PHP-Erweiterungen, die auf diesem System noch nicht installiert sind, können aus den konfigurierten Softwarepaket-Repositories installiert werden.
|
||||
mods_idesc=PHP-Erweiterungen, die auf diesem System noch nicht installiert sind, können aus den konfigurierten Software-Repositories installiert werden.
|
||||
mods_newpkg=PHP-Erweiterung hinzufügen
|
||||
mods_install=Jetzt installieren
|
||||
mods_err=Fehler beim Speichern der PHP-Erweiterungen
|
||||
mods_egetver=PHP-Version für Konfigurationsdatei $1 konnte nicht ermittelt werden.
|
||||
mods_egetbin=PHP-Binärdatei für Konfigurationsdatei $1 konnte nicht ermittelt werden.
|
||||
mods_err=PHP-Erweiterungen konnten nicht gespeichert werden
|
||||
mods_egetver=PHP-Version für Konfigurationsdatei $1 konnte nicht ermittelt werden
|
||||
mods_egetbin=PHP-Binary für Konfigurationsdatei $1 konnte nicht ermittelt werden
|
||||
mods_return=PHP-Erweiterungen
|
||||
|
||||
imod_title=PHP-Modul installieren
|
||||
imod_err=Fehler bei der Installation des PHP-Moduls
|
||||
imod_emod=Kein PHP-Modul angegeben
|
||||
imod_err=PHP-Modul konnte nicht installiert werden
|
||||
imod_emod=Kein PHP-Modul eingegeben
|
||||
imod_alldoing=PHP-Modul $1 für PHP-Version $2 wird installiert ..
|
||||
imod_alreadygot=PHP-Modul $1 ist bereits installiert.
|
||||
imod_alldone=.. das PHP-Modul wurde erfolgreich aus Paket $1 installiert und steht nun zur Nutzung bereit.
|
||||
imod_allfailed=.. es konnten keine Softwarepakete für das angegebene PHP-Modul installiert werden, trotz $1 Versuchen.
|
||||
imod_alreadygot=PHP-Modul $1 ist bereits installiert
|
||||
imod_alldone=.. das PHP-Modul wurde erfolgreich aus Paket $1 installiert und steht nun zur Verfügung.
|
||||
imod_allfailed=.. kein Softwarepaket für das angegebene PHP-Modul konnte installiert werden, trotz Versuch über $1
|
||||
imod_missing=.. Installation abgeschlossen, aber das PHP-Modul wurde nicht erkannt.
|
||||
|
||||
log_manual=Datei $1 manuell bearbeitet
|
||||
@@ -198,17 +199,17 @@ log_dirs=Verzeichniseinstellungen in $1 geändert
|
||||
log_db=Datenbankeinstellungen in $1 geändert
|
||||
log_session=Session-Optionen in $1 geändert
|
||||
log_safe=Safe-Mode-Optionen in $1 geändert
|
||||
log_limits=Ressourcenlimits in $1 geändert
|
||||
log_limits=Ressourcengrenzen in $1 geändert
|
||||
log_errors=Fehlerprotokollierung in $1 geändert
|
||||
log_misc=Weitere Einstellungen in $1 geändert
|
||||
log_mods=Aktivierte Module in $1 aktualisiert
|
||||
log_imod=PHP-Modul $2 in $1 installiert
|
||||
|
||||
acl_global=Darf globale PHP-Konfiguration bearbeiten?
|
||||
acl_anyfile=Darf beliebige Dateien als PHP-Konfiguration bearbeiten?
|
||||
acl_manual=Darf Konfigurationsdateien manuell bearbeiten?
|
||||
acl_inis=Zusätzliche Konfigurationsdateien<br>(Im Format <i>Dateiname</i>=<i>Beschreibung</i>)
|
||||
acl_user=Darf Dateien als Benutzer:in lesen und schreiben
|
||||
acl_global=Globale PHP-Konfiguration bearbeiten dürfen?
|
||||
acl_anyfile=Beliebige Datei als PHP-Konfiguration bearbeiten dürfen?
|
||||
acl_manual=Konfigurationsdateien manuell bearbeiten dürfen?
|
||||
acl_inis=Zusätzliche Konfigurationsdateien<br>(im Format <i>Dateiname</i>=<i>Beschreibung</i>)
|
||||
acl_user=Dateien im Kontext von Benutzer:innen lesen und schreiben
|
||||
|
||||
opt_default=Standardwert: <tt>$1</tt>
|
||||
opt_default_unknown=Unbekannt
|
||||
|
||||
@@ -24,6 +24,7 @@ list_efile=File to edit must be an absolute path
|
||||
list_return=PHP configuration
|
||||
list_format_ini=INI format
|
||||
list_format_fpm=FPM format
|
||||
list_bin=PHP version $2 at $1
|
||||
|
||||
vars_title=PHP Variables
|
||||
vars_header=PHP variable creation and quoting options
|
||||
|
||||
@@ -13,7 +13,13 @@ if (@files == 1 && !$access{'anyfile'} && $access{'noconfig'}) {
|
||||
}
|
||||
$inidir = &get_php_ini_dir($in{'file'});
|
||||
|
||||
&ui_print_header("<tt>".&html_escape($in{'file'})."</tt>",
|
||||
my $bin = &get_php_ini_binary($in{'file'});
|
||||
my $ver = &get_php_binary_version($in{'file'});
|
||||
my $vmsg = "";
|
||||
if ($bin && $ver) {
|
||||
$vmsg = "<br>".&text('list_bin', "<tt>$bin</tt>", $ver);
|
||||
}
|
||||
&ui_print_header("<tt>".&html_escape($in{'file'})."</tt>".$vmsg,
|
||||
$text{'list_title'}, "", undef, 0, $onefile);
|
||||
|
||||
@pages = ( "vars", "dirs", "db", "session", "limits",
|
||||
|
||||
@@ -342,7 +342,8 @@ if (&foreign_check("virtual-server")) {
|
||||
# RHEL and derivatives Debian/Ubuntu
|
||||
if ($file =~ /php(\d+)/ || $file =~ /php\/([\d\.]+)/) {
|
||||
$ver = $1;
|
||||
my $binary = &has_command("php$ver");
|
||||
my $binary = &has_command("php$ver") ||
|
||||
&has_command("php$ver-cgi");
|
||||
return $binary if ($binary);
|
||||
}
|
||||
|
||||
@@ -352,7 +353,9 @@ if ($file =~ /^php.*?([\d\.]+)$/) {
|
||||
my $nodot = $ver;
|
||||
$nodot =~ s/\.//g;
|
||||
my $binary = &has_command("php$ver") ||
|
||||
&has_command("php$nodot");
|
||||
&has_command("php$nodot") ||
|
||||
&has_command("php$ver-cgi") ||
|
||||
&has_command("php$nodot-cgi");
|
||||
return $binary if ($binary);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ require 'proc-lib.pl';
|
||||
sub syslog_getlogs
|
||||
{
|
||||
if ($gconfig{'os_type'} =~ /-linux$/) {
|
||||
return ( { 'cmd' => "dmesg",
|
||||
return ( { 'cmd' => "dmesg -T",
|
||||
'desc' => $text{'syslog_dmesg'},
|
||||
'active' => 1, } );
|
||||
}
|
||||
|
||||
@@ -226,11 +226,11 @@ sub find_textfile
|
||||
local($conf, $dbm) = @_;
|
||||
if ($conf) { return $conf; }
|
||||
elsif (!$dbm) { return undef; }
|
||||
elsif ($dbm =~ /^(.*)\.(db|dbm|pag|dir|hash)$/i && -r $1) {
|
||||
elsif ($dbm =~ /^(.*)\.(db|dbm|pag|dir|hash|cdb)$/i && -r $1) {
|
||||
# Database is like /etc/virtusertable.db, text is /etc/virtusertable
|
||||
return $1;
|
||||
}
|
||||
elsif ($dbm =~ /^(.*)\.(db|dbm|pag|dir|hash)$/i && -r "$1.txt") {
|
||||
elsif ($dbm =~ /^(.*)\.(db|dbm|pag|dir|hash|cdb)$/i && -r "$1.txt") {
|
||||
# Database is like /etc/virtusertable.db, text is /etc/virtusertable.txt
|
||||
return "$1.txt";
|
||||
}
|
||||
@@ -238,7 +238,7 @@ elsif (-r "$dbm.txt") {
|
||||
# Database is like /etc/virtusertable, text is /etc/virtusertable.txt
|
||||
return "$dbm.txt";
|
||||
}
|
||||
elsif ($dbm =~ /^(.*)\.(db|dbm|pag|dir|hash)$/i) {
|
||||
elsif ($dbm =~ /^(.*)\.(db|dbm|pag|dir|hash|cdb)$/i) {
|
||||
# Database is like /etc/virtusertable.db, text is /etc/virtusertable,
|
||||
# but doesn't exist yet.
|
||||
return $1;
|
||||
|
||||
@@ -10,7 +10,7 @@ our (%text, %in, %access, $squid_version, %config, $module_name);
|
||||
require './squid-lib.pl';
|
||||
|
||||
if ($config{'crypt_conf'} == 1) {
|
||||
eval "use MD5";
|
||||
eval "use Digest::MD5";
|
||||
if ($@) {
|
||||
&error(&text('eauth_nomd5', $module_name));
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ no warnings 'uninitialized';
|
||||
our (%text, %in, %access, $squid_version, %config, $module_name);
|
||||
require './squid-lib.pl';
|
||||
if ($config{'crypt_conf'} == 1) {
|
||||
eval "use MD5";
|
||||
eval "use Digest::MD5";
|
||||
if ($@) {
|
||||
&error(&text('eauth_nomd5', $module_name));
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ sub useradmin_create_user
|
||||
my ($uinfo) = @_;
|
||||
return if (!$config{'sync_create'});
|
||||
if ($config{'crypt_conf'} == 1) {
|
||||
eval "use MD5";
|
||||
eval "use Digest::MD5";
|
||||
return if ($@);
|
||||
}
|
||||
return if ($uinfo->{'passmode'} != 3);
|
||||
@@ -78,7 +78,7 @@ sub useradmin_modify_user
|
||||
my ($uinfo) = @_;
|
||||
return if (!$config{'sync_modify'});
|
||||
if ($config{'crypt_conf'} == 1) {
|
||||
eval "use MD5";
|
||||
eval "use Digest::MD5";
|
||||
return if ($@);
|
||||
}
|
||||
my $conf = &get_config();
|
||||
|
||||
@@ -1721,8 +1721,6 @@ of the subtext parameter :
|
||||
|
||||
=item below - HTML to be displayed below the title. Typically this is used for application or server version information.
|
||||
|
||||
|
||||
|
||||
=cut
|
||||
sub ui_print_header
|
||||
{
|
||||
|
||||
@@ -4058,7 +4058,7 @@ return "<input name='$_[0]' size=13 value=\"$_[1]\"> ".
|
||||
&group_chooser_button($_[0], 0, $_[2] || 0)."\n";
|
||||
}
|
||||
|
||||
=head2 hlink(text, page, [module], [width], [height])
|
||||
=head2 hlink(text, page, [module], [width], [height], [tmpl])
|
||||
|
||||
Returns HTML for a link that when clicked on pops up a window for a Webmin
|
||||
help page. The parameters are :
|
||||
@@ -4073,19 +4073,23 @@ help page. The parameters are :
|
||||
|
||||
=item height - Height of the help popup window. Defaults to 400 pixels.
|
||||
|
||||
=item tmpl - Hash ref of template variables to substitute in the help page.
|
||||
|
||||
The actual help pages are in each module's help sub-directory, in files with
|
||||
.html extensions.
|
||||
|
||||
=cut
|
||||
sub hlink
|
||||
{
|
||||
my ($txt, $page, $mod, $width, $height, $tmpl) = @_;
|
||||
$mod ||= &get_module_name();
|
||||
if (defined(&theme_hlink)) {
|
||||
return &theme_hlink(@_);
|
||||
}
|
||||
my $mod = $_[2] ? $_[2] : &get_module_name();
|
||||
my $width = $_[3] || $tconfig{'help_width'} || $gconfig{'help_width'} || 600;
|
||||
my $height = $_[4] || $tconfig{'help_height'} || $gconfig{'help_height'} || 400;
|
||||
return "<a onClick='window.open(\"@{[&get_webprefix()]}/help.cgi/$mod/$_[1]\", \"help\", \"toolbar=no,menubar=no,scrollbars=yes,width=$width,height=$height,resizable=yes\"); return false' href=\"@{[&get_webprefix()]}/help.cgi/$mod/$_[1]\">$_[0]</a>";
|
||||
$width ||= $tconfig{'help_width'} || $gconfig{'help_width'} || 600;
|
||||
$height ||= $tconfig{'help_height'} || $gconfig{'help_height'} || 400;
|
||||
my $params = $tmpl ? "?".join("&", map { "tmpl_".&urlize($_)."=".&urlize($tmpl->{$_}) } keys %$tmpl) : "";
|
||||
return "<a onClick='window.open(\"@{[&get_webprefix()]}/help.cgi/$mod/$page$params\", \"help\", \"toolbar=no,menubar=no,scrollbars=yes,width=$width,height=$height,resizable=yes\"); return false' href=\"@{[&get_webprefix()]}/help.cgi/$mod/$page$params\">$txt</a>";
|
||||
}
|
||||
|
||||
=head2 user_chooser_button(field, multiple, [form])
|
||||
@@ -10675,7 +10679,7 @@ else {
|
||||
my $directopen = 0;
|
||||
my $tmp = &open_tempfile($file);
|
||||
my $ok = open($fh, ">$tmp");
|
||||
if (!$ok && $! =~ /permission/i && $< != 0) {
|
||||
if (!$ok && $! =~ /permission/i && $> != 0) {
|
||||
# Could not open temp file .. try opening actual file
|
||||
# instead directly
|
||||
$ok = open($fh, ">$file");
|
||||
@@ -12966,47 +12970,60 @@ for(my $i=0; $i<@sp1 || $i<@sp2; $i++) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head2 convert_to_json(data, [pretty])
|
||||
=head2 convert_to_json(data, [pretty], [raw-utf8])
|
||||
|
||||
Converts the given Perl data structure to encoded binary string
|
||||
|
||||
=item data parameter is a hash/array reference
|
||||
=item if the output should be prettified
|
||||
=item raw-utf8 parameter, if set to 1, encodes data using UTF-8
|
||||
|
||||
=cut
|
||||
sub convert_to_json
|
||||
{
|
||||
eval "use JSON::PP";
|
||||
if (!$@) {
|
||||
my ($data, $pretty) = @_;
|
||||
my $json = JSON::PP->new;
|
||||
$pretty = 0 if (!$pretty);
|
||||
$json = $json->pretty($pretty);
|
||||
$data ||= {};
|
||||
return $json->latin1->encode($data);
|
||||
my ($data, $pretty, $raw_utf8) = @_;
|
||||
my $json;
|
||||
|
||||
if (eval { require JSON::XS }) {
|
||||
$json = JSON::XS->new;
|
||||
}
|
||||
elsif (eval { require JSON::PP }) {
|
||||
$json = JSON::PP->new;
|
||||
}
|
||||
else {
|
||||
error("The JSON::PP Perl module is not available on your system : $@");
|
||||
error("Neither JSON::XS nor JSON::PP Perl module is available on your system");
|
||||
}
|
||||
$json->pretty(!!$pretty);
|
||||
$data ||= {};
|
||||
return $raw_utf8 ? $json->utf8->encode($data) : $json->latin1->encode($data);
|
||||
}
|
||||
|
||||
=head2 convert_from_json(data)
|
||||
=head2 convert_from_json(data, [raw-utf8])
|
||||
|
||||
Parses given JSON string
|
||||
|
||||
=item data parameter is encoded JSON string
|
||||
|
||||
=item raw-utf8 parameter, if set, treats the input as raw UTF-8
|
||||
|
||||
=cut
|
||||
sub convert_from_json
|
||||
{
|
||||
eval "use JSON::PP";
|
||||
if (!$@) {
|
||||
my ($json_text) = @_;
|
||||
return JSON::PP->new->utf8->decode($json_text);
|
||||
my ($json_text, $raw_utf8) = @_;
|
||||
|
||||
my $json;
|
||||
if (eval { require JSON::XS }) {
|
||||
$json = JSON::XS->new;
|
||||
}
|
||||
elsif (eval { require JSON::PP }) {
|
||||
$json = JSON::PP->new;
|
||||
}
|
||||
else {
|
||||
error("The JSON::PP Perl module is not available on your system : $@");
|
||||
error("Neither JSON::XS nor JSON::PP Perl module is available on your system");
|
||||
}
|
||||
|
||||
$json = $json->utf8 if (!$raw_utf8);
|
||||
return $json->decode($json_text);
|
||||
}
|
||||
|
||||
=head2 print_json(data)
|
||||
|
||||
@@ -64,10 +64,9 @@ foreach my $os (@eol_oses) {
|
||||
push(@eol_oses_data, @$fdata_json);
|
||||
}
|
||||
my $eol_oses_data = &convert_to_json(\@eol_oses_data);
|
||||
&backquote_command("echo -n '$eol_oses_data' > $eol_cache_file 2>&1 </dev/null");
|
||||
if ($?) {
|
||||
die("Could not write OS EOL data file : $?");
|
||||
}
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user