mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 22:23:28 +00:00
Compare commits
9 Commits
2.202
...
dev/config
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3885773f6e | ||
|
|
dc3ed53c43 | ||
|
|
24ca182b18 | ||
|
|
54c7856672 | ||
|
|
9b3fb73aea | ||
|
|
692c9cc5e1 | ||
|
|
62bcd25eb9 | ||
|
|
a6d23844ce | ||
|
|
a9cd02aa6d |
@@ -7,13 +7,13 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
if: contains(github.event.head_commit.message, '[build]')
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: awalsh128/cache-apt-pkgs-action@latest
|
||||
with:
|
||||
packages: git tar gzip openssl curl openssh-client rpm perl libjson-pp-perl libdigest-sha-perl liblist-moreutils-perl libencode-detect-perl zstd
|
||||
packages: git tar gzip openssl curl openssh-client rpm perl libdigest-sha-perl liblist-moreutils-perl libencode-detect-perl
|
||||
version: 1.0
|
||||
- uses: szenius/set-timezone@v1.2
|
||||
with:
|
||||
|
||||
60
CHANGELOG.md
60
CHANGELOG.md
@@ -1,65 +1,5 @@
|
||||
## Changelog
|
||||
|
||||
#### 2.202 (August 12, 2024)
|
||||
* Add support for importing schemas to the LDAP Server module
|
||||
* Add support for displaying disk and network I/Os in FreeBSD on the dashboard
|
||||
* Fix to automatically set the WebSocket URL webprefix correctly
|
||||
* Fix to name downloaded backup file nicely in Backup Configuration Files module [#2239](https://github.com/webmin/webmin/issues/2239)
|
||||
* Fix to optimize getting table index stats for large tables in MySQL/MariaDB module [pull#2234](https://github.com/webmin/webmin/pull/2234)
|
||||
* Fix duplication of _systemd_ actions and init scripts [#2227](https://github.com/webmin/webmin/issues/2227)
|
||||
* Fix BIND service name for Debian 12 and Ubuntu 24.04
|
||||
* Update the Authentic theme to the latest version with various fixes and improvements
|
||||
|
||||
#### 2.201 (July 24, 2024)
|
||||
* Fix real-time monitoring not updating graphs in the Dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
|
||||
* Fix Terminal module to work correctly with _sudo_-capable users [#2223](https://github.com/webmin/webmin/issues/2223)
|
||||
|
||||
#### 2.200 (July 21, 2024)
|
||||
* Add support for blocking a given IP temporarily or permanently in the FirewallD module
|
||||
* Add support for parsing iCalendar event files in the Mailbox module
|
||||
* Add support for tailing logs in real time in System Logs module
|
||||
* Add ability to preserve original file ACLs when writing files [webmin/authentic-theme#1511](https://github.com/webmin/authentic-theme/discussions/1511#discussioncomment-9913902)
|
||||
* Add a `patch` sub-command to the `webmin` command for easy application of patches
|
||||
* Add a config option to display hostname and comment in the DHCP Server module [#2221](https://github.com/webmin/webmin/issues/2221)
|
||||
* Add support for ED25519 and ED448 algorithms in BIND DNS module for DNSSEC
|
||||
* Add support for larger ranger of authentication methods in Dovecot module
|
||||
* Add improved support for displaying last logins in the Users and Groups module
|
||||
* Fix to prevent duplicate `also-notify` and `allow-transfer` IPs in the BIND DNS module
|
||||
* Fix issues with Terminal module to correct text display problems in editor mode
|
||||
* Fix to store Terminal module logs in the `/var/webmin` directory
|
||||
* Fix to display the Spam folder nicely in the Mailbox module
|
||||
* Fix how modules are loaded in ProFTPd module
|
||||
* Fix support for the Chrony service on Debian systems in the System Time module
|
||||
* Fix to use static routes to set the default gateway in Network Configuration module
|
||||
* Fix to correctly invalidate EOL cache on re-checks [#2139](https://github.com/webmin/webmin/issues/2139)
|
||||
* Fix to change default monitor name based on database used MariaDB vs MySQL [#2139](https://github.com/virtualmin/virtualmin-gpl/issues/798)
|
||||
* Fix to disable manual upgrades for systems installed from the repository
|
||||
* Fix to preserve Webmin service state during package upgrades [#2133](https://github.com/webmin/webmin/issues/2133)
|
||||
* Change to enforce _sudo_-capable logins as themselves in the Terminal module [docs/modules/terminal](https://webmin.com/docs/modules/terminal/#about)
|
||||
* Rename "System Logs" module to "System Logs RS" and "System Logs Viewer" to "System Logs" for clarity
|
||||
|
||||
#### 2.111 (April 16, 2024)
|
||||
* Fix EOL detection for unreleased Linux distributions
|
||||
|
||||
#### 2.110 (April 15, 2024)
|
||||
* Add an API to check if the system is running or approaching its end of life (EOL)
|
||||
* Add support for `systemd-timesyncd` and `chronyd` to the System Time module
|
||||
* Add Ubuntu 24.04 support
|
||||
* Add Squid 6 support
|
||||
* Add latest Devuan Linux support
|
||||
* Add an option to request Let's Encrypt certificates using `certbot` in standalone mode [forum.virtualmin.com/t/123696](http://forum.virtualmin.com/t/webmin-ssl-certificate-with-lets-encrypt-directly-obtain-certificate-without-requiring-apache-or-nginx/123696/)
|
||||
* Add IMAP and SMTP monitors in the System and Server Status module
|
||||
* Fix TLS connection to SMTP servers not working in some cases
|
||||
* Fix ProFTPd module to use actual UI library
|
||||
* Fix to using the `qrencode` command to generate QR codes locally instead of the remote Google Chart API
|
||||
* Fix a number of various other issues
|
||||
|
||||
#### 2.105 (November 09, 2023)
|
||||
* Fix param to read only headers [sourceforge.net/usermin-bugs#501](https://sourceforge.net/p/webadmin/usermin-bugs/501/)
|
||||
* Fix not to set `reuse` flag on initial Let's Encrypt request
|
||||
* Fix to correctly escape mail file names upon deletion
|
||||
* Fix index field in cache file in BIND DNS module
|
||||
|
||||
#### 2.104 (October 16, 2023)
|
||||
* Add support for numbered and bulleted lists in email HTML editor
|
||||
* Add ability to display active file locks in `Webmin Configuration ⇾ File Locking` page
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -501,7 +501,6 @@ core_actmod=Aktiewe modules
|
||||
core_option=Opsie
|
||||
core_setdir=Stel vir gids in
|
||||
core_merge=Smelt met ouer
|
||||
core_eoptionsboth=Gidsopsies : Aktiewe opsies moet almal óf gestel vir gids óf saamgevoeg met ouer wees, maar nie albei nie
|
||||
core_users=Slegs hierdie gebruikers
|
||||
core_groups=Slegs hierdie groepe
|
||||
core_allusers=Alle geldige gebruikers
|
||||
|
||||
@@ -500,7 +500,6 @@ core_actmod=وحدات نشطة
|
||||
core_option=اختيار
|
||||
core_setdir=تعيين للدليل
|
||||
core_merge=دمج مع الوالد
|
||||
core_eoptionsboth=خيارات الدليل: يجب أن تكون جميع الخيارات النشطة إما Set For Directory أو Merged With Parent، ولكن ليس كليهما
|
||||
core_users=فقط هؤلاء المستخدمين
|
||||
core_groups=فقط هذه المجموعات
|
||||
core_allusers=جميع المستخدمين صالحة
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Актыўныя модулі
|
||||
core_option=Варыянт
|
||||
core_setdir=Набор для каталога
|
||||
core_merge=Зліццё з бацькам
|
||||
core_eoptionsboth=Параметры каталога : усе актыўныя параметры павінны быць усталяваны для каталога або аб'яднаны з бацькоўскім, але не абодва
|
||||
core_users=Толькі гэтыя карыстальнікі
|
||||
core_groups=Толькі гэтыя групы
|
||||
core_allusers=Усе сапраўдныя карыстальнікі
|
||||
|
||||
@@ -9,4 +9,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 криптиран
|
||||
core_protocols_h2c=HTTP/2 нешифрован
|
||||
core_eprotcols=Няма избрани протоколи!
|
||||
core_eoptionsboth=Опции за директория: Всички активни опции трябва да са или Задани за директория, или Обединени с родител, но не и двете
|
||||
|
||||
@@ -10,4 +10,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 xifrat
|
||||
core_protocols_h2c=HTTP/2 sense xifrar
|
||||
core_eprotcols=No s'ha seleccionat cap protocol!
|
||||
core_eoptionsboth=Opcions de directori: les opcions actives han d'estar totes configurades per al directori o combinades amb el pare, però no totes dues
|
||||
|
||||
@@ -27,7 +27,6 @@ core_protocols_h2=HTTP/2 šifrováno
|
||||
core_protocols_h2c=HTTP/2 nešifrované
|
||||
core_eprotcols=Nejsou vybrány žádné protokoly!
|
||||
core_minor=Pouze menší verze
|
||||
core_eoptionsboth=Možnosti adresáře : Všechny aktivní možnosti musí být buď Set For Directory, nebo Merged With Parent, ale ne obojí
|
||||
|
||||
mod_alias_alias2=alias dokumentu
|
||||
mod_alias_regexp2=alias dokumentu regexp
|
||||
|
||||
@@ -271,7 +271,6 @@ core_optfile=Optagelsesfil pr. Katalog
|
||||
core_ecandoc=Du har ikke tilladelse til at bruge dokumentroten '$1'
|
||||
core_realm=Autentificeringsrealmets navn
|
||||
core_minor=Kun mindre version
|
||||
core_eoptionsboth=Indstillinger for bibliotek : Alle aktive indstillinger skal være enten indstillet til bibliotek eller flettet med overordnet, men ikke begge
|
||||
|
||||
mod_negotiation_cache=Cache-indholdsforhandlede dokumenter?
|
||||
mod_negotiation_pri=Sprogprioritet for flere visninger
|
||||
|
||||
@@ -7,4 +7,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 verschlüsselt
|
||||
core_protocols_h2c=HTTP/2 unverschlüsselt
|
||||
core_eprotcols=Keine Protokolle ausgewählt!
|
||||
core_eoptionsboth=Verzeichnisoptionen: Alle aktiven Optionen müssen entweder „Für Verzeichnis festlegen“ oder „Mit übergeordnetem Verzeichnis zusammengeführt“ sein, jedoch nicht beides
|
||||
|
||||
@@ -9,4 +9,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 κρυπτογραφημένο
|
||||
core_protocols_h2c=HTTP/2 μη κρυπτογραφημένο
|
||||
core_eprotcols=Δεν επιλέχθηκαν πρωτόκολλα!
|
||||
core_eoptionsboth=Επιλογές καταλόγου : Οι ενεργές επιλογές πρέπει να είναι όλες είτε ορισμένες για κατάλογο είτε συγχωνευμένες με γονέα, αλλά όχι και οι δύο
|
||||
|
||||
@@ -50,7 +50,6 @@ core_protocols_h2c=HTTP/2 sin cifrar
|
||||
core_eprotcols=¡No se seleccionaron protocolos!
|
||||
core_ecandoc=No tiene permiso para usar la raíz del documento '$1'
|
||||
core_minor=Solo versión menor
|
||||
core_eoptionsboth=Opciones de directorio: las opciones activas deben estar todas configuradas para directorio o fusionadas con padre, pero no ambas
|
||||
core_fileowner=Propietario de archivo coincide
|
||||
core_filegroup=Partidos del propietario del grupo
|
||||
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Modulu aktiboak
|
||||
core_option=aukera
|
||||
core_setdir=Direktorioa ezarri
|
||||
core_merge=Gurasoekin elkartu
|
||||
core_eoptionsboth=Direktorio-aukerak : Aukera aktiboak guztiak direktoriorako ezarrita edo gurasoekin bateratuta egon behar dira, baina ez biak
|
||||
core_users=Erabiltzaile horiek bakarrik
|
||||
core_groups=Talde horiek bakarrik
|
||||
core_allusers=Erabiltzaile baliozko guztiak
|
||||
|
||||
@@ -54,7 +54,6 @@ core_ecandoc=You are not allowed to use the document root '$1'
|
||||
core_minor=فقط نسخه جزئی
|
||||
core_uid=شناسه کاربری
|
||||
core_euid='$1' is not a valid group ID
|
||||
core_eoptionsboth=گزینه های دایرکتوری: گزینه های فعال باید همه یا Set For Directory یا Merged with Parent باشند، اما نه هر دو
|
||||
core_fileowner=مالک پرونده مطابقت دارد
|
||||
core_filegroup=مالک گروه مطابقت دارد
|
||||
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Aktiiviset moduulit
|
||||
core_option=Vaihtoehto
|
||||
core_setdir=Asetettu hakemistoon
|
||||
core_merge=Yhdistä vanhemman kanssa
|
||||
core_eoptionsboth=Hakemistovalinnat : Kaikkien aktiivisten asetusten on oltava joko asetettu hakemistoon tai yhdistetty ylätason kanssa, mutta ei molempia
|
||||
core_users=Vain nämä käyttäjät
|
||||
core_groups=Vain nämä ryhmät
|
||||
core_allusers=Kaikki kelvolliset käyttäjät
|
||||
|
||||
@@ -5,4 +5,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 crypté
|
||||
core_protocols_h2c=HTTP/2 non crypté
|
||||
core_eprotcols=Aucun protocole sélectionné !
|
||||
core_eoptionsboth=Options du répertoire : les options actives doivent toutes être définies pour le répertoire ou fusionnées avec le parent, mais pas les deux
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=מודולים פעילים
|
||||
core_option=אפשרות
|
||||
core_setdir=הגדר לספרייה
|
||||
core_merge=התמזגו עם ההורה
|
||||
core_eoptionsboth=אפשרויות ספרייה : האפשרויות הפעילות חייבות להיות כולן מוגדרות למדריך או התמזגו עם אב, אך לא שתיהן
|
||||
core_users=רק משתמשים אלה
|
||||
core_groups=רק הקבוצות האלה
|
||||
core_allusers=כל המשתמשים התקפים
|
||||
|
||||
@@ -25,7 +25,6 @@ core_protocols_h2=HTTP/2 šifrirano
|
||||
core_protocols_h2c=HTTP/2 nešifriran
|
||||
core_eprotcols=Nema odabranih protokola!
|
||||
core_minor=Samo manja verzija
|
||||
core_eoptionsboth=Opcije direktorija : sve aktivne opcije moraju biti postavljene za imenik ili spojene s nadređenim, ali ne oboje
|
||||
|
||||
mod_proxy_seconds=sekundi
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ core_protocols_h2c=HTTP/2 titkosítatlan
|
||||
core_eprotcols=Nincsenek kiválasztva protokollok!
|
||||
core_ecandoc=Nem használhatja a '$1' gyökér dokumentumot
|
||||
core_minor=Kisebb verzió
|
||||
core_eoptionsboth=Címtárbeállítások : Az aktív opciók mindegyike címtárhoz beállítva vagy Összevonva a szülővel lehet, de nem mindkettő
|
||||
core_fileowner=A fájltulajdonos megegyezik
|
||||
core_filegroup=Csoportos tulajdonos mérkőzések
|
||||
|
||||
|
||||
@@ -577,10 +577,10 @@ mod_proxy_netbit=Sottorete (Network/bits)
|
||||
mod_proxy_maxfw=Numero massimo di proxy nella catena di richiesta
|
||||
mod_proxy_emaxfs=Il Numero massimo di proxy nella catena di richiesta deve essere un intero
|
||||
mod_proxy_preserve=Preserva originale l'header Host:
|
||||
|
||||
mod_proxy_timeout=Timeout delle richieste proxy in secondi
|
||||
mod_proxy_etimeout=Il timeout delle richieste proxy deve essere un numero di secondi
|
||||
mod_proxy_via=Setta header Via:
|
||||
|
||||
mod_log_agent_default=Default
|
||||
mod_log_agent_file=File..
|
||||
mod_log_agent_program=Programma..
|
||||
|
||||
@@ -63,7 +63,6 @@ core_eprotcols=Nessun protocollo selezionato!
|
||||
core_ecandoc=Non puoi utilizzare la radice del documento '$1'
|
||||
core_minor=Solo versione secondaria
|
||||
core_eerrordir=La directory per il file di registro degli errori non esiste
|
||||
core_eoptionsboth=Opzioni directory: le opzioni attive devono essere tutte impostate per directory o unite con padre, ma non entrambe
|
||||
core_fileowner=Corrispondenze del proprietario del file
|
||||
core_filegroup=Partite del proprietario del gruppo
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ core_protocols_h2=HTTP/2暗号化
|
||||
core_protocols_h2c=HTTP/2暗号化されていない
|
||||
core_eprotcols=プロトコルが選択されていません!
|
||||
core_minor=マイナーバージョンのみ
|
||||
core_eoptionsboth=ディレクトリ オプション: アクティブなオプションはすべて、「ディレクトリに設定」または「親とマージ」のいずれかである必要がありますが、両方にすることはできません。
|
||||
|
||||
mod_proxy_seconds=秒
|
||||
|
||||
|
||||
@@ -101,7 +101,6 @@ core_minor=부 버전 만
|
||||
core_maxxml=최대 XML 요청 본문 크기
|
||||
core_exml=잘못된 XML 요청 본문 크기
|
||||
core_eerrordir=오류 로그 파일의 디렉토리가 존재하지 않습니다
|
||||
core_eoptionsboth=디렉터리 옵션: 활성 옵션은 모두 디렉터리에 대해 설정 또는 상위 항목과 병합이어야 하지만 둘 다일 수는 없습니다
|
||||
core_fileowner=파일 소유자 일치
|
||||
core_filegroup=그룹 소유자 일치
|
||||
core_major=메이저 버전 만
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Aktyvūs moduliai
|
||||
core_option=Pasirinkimas
|
||||
core_setdir=Nustatykite katalogą
|
||||
core_merge=Sujungti su tėvu
|
||||
core_eoptionsboth=Katalogo parinktys : visos aktyvios parinktys turi būti nustatytos kaip katalogas arba sujungtos su pirminiu, bet ne abi
|
||||
core_users=Tik šie vartotojai
|
||||
core_groups=Tik šios grupės
|
||||
core_allusers=Visi tinkami vartotojai
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Aktīvie moduļi
|
||||
core_option=Iespēja
|
||||
core_setdir=Iestatīts direktorijam
|
||||
core_merge=Apvienot ar vecāku
|
||||
core_eoptionsboth=Direktorija opcijas : visām aktīvajām opcijām ir jābūt iestatītām direktorijam vai sapludinātām ar vecāku, bet ne abām
|
||||
core_users=Tikai šie lietotāji
|
||||
core_groups=Tikai šīs grupas
|
||||
core_allusers=Visi derīgi lietotāji
|
||||
|
||||
@@ -49,7 +49,6 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 disulitkan
|
||||
core_protocols_h2c=HTTP/2 tidak disulitkan
|
||||
core_eprotcols=Tiada protokol dipilih!
|
||||
core_eoptionsboth=Pilihan direktori : Pilihan aktif mestilah semua sama ada Tetapkan Untuk Direktori atau Digabungkan Dengan Induk, tetapi bukan kedua-duanya
|
||||
|
||||
mod_negotiation_cache=Dokumen-dokumen yang dirundingkan kandungan cache?
|
||||
mod_negotiation_pri=Keutamaan bahasa untuk pelbagai tontonan
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Moduli attivi
|
||||
core_option=Għażla
|
||||
core_setdir=Issettjat għad-direttorju
|
||||
core_merge=Tingħaqad mal-ġenitur
|
||||
core_eoptionsboth=Għażliet tad-Direttorju : L-għażliet attivi jridu jkunu kollha jew Issettjati Għal Direttorju jew Magħquda Mal-Ġenitur, iżda mhux it-tnejn
|
||||
core_users=Dawn l-utenti biss
|
||||
core_groups=Dawn il-gruppi biss
|
||||
core_allusers=L-utenti validi kollha
|
||||
|
||||
@@ -14,4 +14,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 versleuteld
|
||||
core_protocols_h2c=HTTP/2 niet-versleuteld
|
||||
core_eprotcols=Geen protocollen geselecteerd!
|
||||
core_eoptionsboth=Directory-opties: Actieve opties moeten allemaal Set For Directory of Merged With Parent zijn, maar niet beide
|
||||
|
||||
@@ -5,4 +5,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=HTTP/2 kryptert
|
||||
core_protocols_h2c=HTTP/2 ukryptert
|
||||
core_eprotcols=Ingen protokoller valgt!
|
||||
core_eoptionsboth=Katalogalternativer : Alle aktive alternativer må enten være satt til katalog eller slått sammen med overordnet, men ikke begge
|
||||
|
||||
@@ -9,4 +9,3 @@ core_protocols_http/2=HTTP/2
|
||||
core_protocols_h2=Szyfrowany HTTP/2
|
||||
core_protocols_h2c=HTTP/2 nieszyfrowany
|
||||
core_eprotcols=Nie wybrano protokołów!
|
||||
core_eoptionsboth=Opcje katalogu: wszystkie aktywne opcje muszą być ustawione na katalog lub scalone z nadrzędnym, ale nie na jedno i drugie
|
||||
|
||||
@@ -290,7 +290,6 @@ core_actmod=Módulos ativos
|
||||
core_option=Opção
|
||||
core_setdir=Definido para o diretório
|
||||
core_merge=Mesclar com o pai
|
||||
core_eoptionsboth=Opções de diretório: as opções ativas devem ser todas definidas para o diretório ou mescladas com o pai, mas não ambas
|
||||
core_users=Somente esses usuários
|
||||
core_groups=Somente esses grupos
|
||||
core_allusers=Todos os usuários válidos
|
||||
|
||||
@@ -23,7 +23,6 @@ core_protocols_h2=HTTP/2 criptografado
|
||||
core_protocols_h2c=HTTP/2 não criptografado
|
||||
core_eprotcols=Nenhum protocolo selecionado!
|
||||
core_minor=Apenas versão secundária
|
||||
core_eoptionsboth=Opções de diretório: as opções ativas devem ser todas definidas para o diretório ou mescladas com o pai, mas não ambas
|
||||
|
||||
mod_proxy_seconds=segundos
|
||||
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Module active
|
||||
core_option=Opțiune
|
||||
core_setdir=Set pentru director
|
||||
core_merge=Unire cu părintele
|
||||
core_eoptionsboth=Opțiuni de director : opțiunile active trebuie să fie toate fie Set for Directory sau Merged With Parent, dar nu ambele
|
||||
core_users=Numai acești utilizatori
|
||||
core_groups=Numai aceste grupuri
|
||||
core_allusers=Toți utilizatorii valabili
|
||||
|
||||
@@ -27,7 +27,6 @@ core_protocols_h2=HTTP/2 зашифрованный
|
||||
core_protocols_h2c=HTTP/2 незашифрованный
|
||||
core_eprotcols=Протоколы не выбраны!
|
||||
core_ecandoc=Вы не можете использовать корневой каталог документа «$1»
|
||||
core_eoptionsboth=Параметры каталога: все активные параметры должны быть либо «Установлено для каталога», либо «Объединено с родительским», но не оба одновременно
|
||||
core_fileowner=Владелец файла соответствует
|
||||
core_filegroup=Совпадения владельца группы
|
||||
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Aktívne moduly
|
||||
core_option=voľba
|
||||
core_setdir=Nastaviť pre adresár
|
||||
core_merge=Zlúčiť s rodičom
|
||||
core_eoptionsboth=Možnosti adresára: Všetky aktívne možnosti musia byť buď Nastaviť pre adresár alebo Zlúčiť s rodičom, ale nie oboje
|
||||
core_users=Iba títo používatelia
|
||||
core_groups=Iba tieto skupiny
|
||||
core_allusers=Všetci platní používatelia
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Aktivni moduli
|
||||
core_option=Možnost
|
||||
core_setdir=Nastavite za imenik
|
||||
core_merge=Spojite se s staršem
|
||||
core_eoptionsboth=Možnosti imenika : vse aktivne možnosti morajo biti Nastavljene za imenik ali Združene z nadrejenim, ne pa oboje
|
||||
core_users=Samo ti uporabniki
|
||||
core_groups=Samo te skupine
|
||||
core_allusers=Vsi veljavni uporabniki
|
||||
|
||||
@@ -23,7 +23,6 @@ core_protocols_h2=HTTP/2 krypterad
|
||||
core_protocols_h2c=HTTP/2 okrypterad
|
||||
core_eprotcols=Inga protokoll har valts!
|
||||
core_minor=Endast mindre version
|
||||
core_eoptionsboth=Katalogalternativ : Alla aktiva alternativ måste antingen vara inställda för katalog eller sammanfogade med överordnade, men inte båda
|
||||
|
||||
mod_proxy_seconds=sekunder
|
||||
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=โมดูลที่ใช้งานอยู่
|
||||
core_option=ตัวเลือก
|
||||
core_setdir=ตั้งไว้สำหรับไดเรกทอรี
|
||||
core_merge=รวมกับผู้ปกครอง
|
||||
core_eoptionsboth=ตัวเลือกไดเร็กทอรี : ตัวเลือกที่ใช้งานอยู่ทั้งหมดจะต้องตั้งค่าสำหรับไดเร็กทอรีหรือผสานกับพาเรนต์ แต่ไม่ใช่ทั้งสองอย่าง
|
||||
core_users=เฉพาะผู้ใช้เหล่านี้
|
||||
core_groups=เฉพาะกลุ่มเหล่านี้
|
||||
core_allusers=ผู้ใช้ที่ถูกต้องทั้งหมด
|
||||
|
||||
@@ -178,7 +178,6 @@ core_exml=Geçersiz XML isteği gövde boyutu
|
||||
core_sroot=Sunucu kökü
|
||||
core_eerrordir=Hata günlüğü dosyası dizini mevcut değil
|
||||
core_merge=Üst öğe ile birleştir
|
||||
core_eoptionsboth=Dizin seçenekleri : Etkin seçeneklerin tümü Dizin İçin Ayarla veya Üst Öğeyle Birleştirilmiş olmalıdır, ancak her ikisi birden olmamalıdır
|
||||
core_fileowner=Dosya sahibi eşleşmeleri
|
||||
core_filegroup=Grup sahibi eşleşmeleri
|
||||
core_product=Sadece ürün
|
||||
|
||||
@@ -566,10 +566,10 @@ mod_proxy_netbit=Мережа/біт
|
||||
mod_proxy_maxfw=Максимальна кількість проксі в ланцюжку запитів
|
||||
mod_proxy_emaxfs=Максимальна кількість проксі в ланцюжку запитів належний бути цілої числом
|
||||
mod_proxy_preserve=Зарезервувати оригінальний вузол: заголовок
|
||||
|
||||
mod_proxy_timeout=Час чекання виконання запиту проксі в секундах
|
||||
mod_proxy_etimeout=Час чекання виконання запиту проксі повинне бути числом секунд
|
||||
mod_proxy_via=Установити через: заголовки
|
||||
|
||||
mod_log_agent_default=За замовчуванням
|
||||
mod_log_agent_file=Файл..
|
||||
mod_log_agent_program=Програма..
|
||||
|
||||
@@ -73,7 +73,6 @@ core_eprotcols=Протоколи не вибрано!
|
||||
core_ecandoc=Вам не дозволяється використовувати корінь документа "$1"
|
||||
core_minor=Тільки незначна версія
|
||||
core_eerrordir=Каталог файлу журналу помилок не існує
|
||||
core_eoptionsboth=Параметри каталогу: усі активні параметри мають бути або встановлені для каталогу, або об’єднані з батьківським, але не обидва
|
||||
core_fileowner=Власник файлу відповідає
|
||||
core_filegroup=Матчі власників групи
|
||||
core_major=Тільки основна версія
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=فعال ماڈیولز
|
||||
core_option=آپشن
|
||||
core_setdir=ڈائریکٹری کے لئے مقرر کریں
|
||||
core_merge=والدین کے ساتھ ضم کریں
|
||||
core_eoptionsboth=ڈائرکٹری کے اختیارات: فعال اختیارات تمام یا تو ڈائرکٹری کے لیے سیٹ ہونے چاہئیں یا والدین کے ساتھ ضم ہونے چاہئیں، لیکن دونوں نہیں۔
|
||||
core_users=صرف یہ صارفین
|
||||
core_groups=صرف یہ گروہ
|
||||
core_allusers=تمام درست استعمال کنندہ
|
||||
|
||||
@@ -501,7 +501,6 @@ core_actmod=Các mô-đun hoạt động
|
||||
core_option=Lựa chọn
|
||||
core_setdir=Đặt cho thư mục
|
||||
core_merge=Hợp nhất với cha mẹ
|
||||
core_eoptionsboth=Tùy chọn thư mục : Tất cả các tùy chọn hoạt động phải là Set For Directory hoặc Merged With Parent, nhưng không được cả hai
|
||||
core_users=Chỉ những người dùng này
|
||||
core_groups=Chỉ những nhóm này
|
||||
core_allusers=Tất cả người dùng hợp lệ
|
||||
|
||||
@@ -573,10 +573,10 @@ mod_proxy_netbit=网络/位
|
||||
mod_proxy_maxfw=请求链中最大的代理数
|
||||
mod_proxy_emaxfs=请求链中最大的代理数必须是整数
|
||||
mod_proxy_preserve=保持原来的主机:文件头
|
||||
|
||||
mod_proxy_timeout=代理请求超时秒数
|
||||
mod_proxy_etimeout=代理请求超时必须是一个有效的秒数
|
||||
mod_proxy_via=设置通过:头
|
||||
|
||||
mod_log_agent_default=默认
|
||||
mod_log_agent_file=文件…
|
||||
mod_log_agent_program=程序…
|
||||
|
||||
@@ -68,7 +68,6 @@ core_eprotcols=未选择任何协议!
|
||||
core_ecandoc=不允许使用文档根目录'$1'
|
||||
core_minor=仅次要版本
|
||||
core_eerrordir=错误日志文件目录不存在
|
||||
core_eoptionsboth=目录选项:活动选项必须全部为“为目录设置”或“与父级合并”,但不能同时为两者
|
||||
core_fileowner=文件所有者匹配
|
||||
core_filegroup=群组拥有者比赛
|
||||
|
||||
|
||||
@@ -583,10 +583,10 @@ mod_proxy_netbit=網路/位元
|
||||
mod_proxy_maxfw=請求鏈中最大的代理數
|
||||
mod_proxy_emaxfs=請求鏈中最大的代理數必須是整數
|
||||
mod_proxy_preserve=保留原始主機: 檔頭
|
||||
|
||||
mod_proxy_timeout=Proxy回應逾時秒數
|
||||
mod_proxy_etimeout=Proxy回應逾時秒數必須是個秒數數字
|
||||
mod_proxy_via=設定經由: 檔頭
|
||||
|
||||
mod_log_agent_default=預設
|
||||
mod_log_agent_file=檔案..
|
||||
mod_log_agent_program=程式..
|
||||
|
||||
@@ -56,7 +56,6 @@ core_protocols_h2c=HTTP/2 未加密
|
||||
core_eprotcols=未選擇任何協議!
|
||||
core_ecandoc=不允許使用文檔根目錄'$1'
|
||||
core_minor=僅次要版本
|
||||
core_eoptionsboth=目錄選項:活動選項必須全部為“設定目錄”或“與父級合併”,但不能同時為兩者
|
||||
core_fileowner=文件所有者匹配
|
||||
core_filegroup=群組擁有者比賽
|
||||
|
||||
|
||||
@@ -99,7 +99,9 @@ print &ui_table_row($text{'index_time'},
|
||||
&ui_textbox("hour", undef, 2).":".&ui_textbox("min", "00", 2));
|
||||
|
||||
# Current date and time
|
||||
print &ui_table_row($text{'index_cdatetime'}, &make_date(time()));
|
||||
my ($date, $time) = split(/\s+/, &make_date(time()));
|
||||
print &ui_table_row($text{'index_cdate'}, $date);
|
||||
print &ui_table_row($text{'index_ctime'}, $time);
|
||||
|
||||
# Run in directory
|
||||
print &ui_table_row($text{'index_dir'},
|
||||
|
||||
@@ -10,7 +10,8 @@ index_exec=Run at
|
||||
index_created=Created on
|
||||
index_dir=Run in directory
|
||||
index_return=commands list
|
||||
index_cdatetime=Current date and time
|
||||
index_cdate=Current date
|
||||
index_ctime=Current time
|
||||
index_allow=Allowed scheduled command users
|
||||
index_amode=Users to allow
|
||||
index_amode0=All Unix users
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX qw(strftime);
|
||||
no warnings 'redefine';
|
||||
no warnings 'uninitialized';
|
||||
require './backup-config-lib.pl';
|
||||
@@ -60,12 +59,7 @@ print &ui_tabs_end_tab();
|
||||
|
||||
# Show immediate form
|
||||
print &ui_tabs_start_tab("tab", "backup");
|
||||
my $filename = 'webmin-backup-config-on-';
|
||||
my $hostname = &get_system_hostname();
|
||||
$hostname =~ s/\./-/g;
|
||||
$filename .= $hostname;
|
||||
$filename .= "-".strftime("%Y-%m-%d-%H-%M", localtime);
|
||||
print &ui_form_start("backup.cgi/$filename.tgz", "post");
|
||||
print &ui_form_start("backup.cgi/backup.tgz", "post");
|
||||
print &ui_table_start($text{'index_header'}, undef, 2);
|
||||
|
||||
my @dmods = split(/\s+/, $config{'mods'} || "");
|
||||
|
||||
@@ -74,7 +74,7 @@ backup_eserver2=Missing or invalid SSH server
|
||||
backup_epath=Missing or invalid absolute path on FTP server
|
||||
backup_epath2=Missing or invalid absolute path on SSH server
|
||||
backup_euser=Invalid characters in FTP server login
|
||||
backup_epass=Invalid characters in FTP server password - @, : and / cannot be used
|
||||
backup_epass=Invalid characters in FTP server password
|
||||
backup_eport=Missing or invalid FTP server port
|
||||
backup_esport=Missing or invalid SSH server port
|
||||
backup_emods=No modules selected
|
||||
|
||||
@@ -1,79 +1,79 @@
|
||||
index_echeck=$1 Forse non è installato oppure la <a href='$2'>configurazione del modulo</a> non è corretta.
|
||||
index_edb=Impossibile connettersi al database di Bacula: $1 Forse non è impostato o la <a href='$2'>configurazione del modulo</a> non è corretta.
|
||||
index_eng=Impossibile connettersi al database dei gruppi di Bacula: $1. Forse non esiste o la <a href='$2'>configurazione del modulo</a> non è corretta.
|
||||
index_econsole=Il comando della console Bacula $1 non è riuscito a comunicare con il Director Bacula. Assicurati che la password in $2 sia corretta.
|
||||
index_econsole2=Il comando della console Bacula $1 non è configurato con un host del Director Bacula valido. Attualmente utilizza $2, che non esiste.
|
||||
index_edb=Impossibile connettersi al database Bacula: $1 Forse non è impostato o la <a href='$2'>configurazione del modulo</a> non è corretta.
|
||||
index_eng=Impossibile connettersi al database dei gruppi Bacula: $1. Forse non esiste o la <a href='$2'>configurazione del modulo</a> non è corretta.
|
||||
index_econsole=Il comando della console Bacula $1 non è riuscito a comunicare con il direttore Bacula. Assicurati che la password in $2 sia corretta.
|
||||
index_econsole2=Il comando della console Bacula $1 non è configurato con un host del regista Bacula valido. Attualmente utilizza $2, che non esiste.
|
||||
index_fixpass=Fai clic qui per correggere la password della console
|
||||
index_fixaddr=Fai clic qui per correggere l'host del Director di Bacula
|
||||
index_fixaddr=Fai clic qui per correggere l'host Director di Bacula
|
||||
index_stop=Ferma Bacula
|
||||
index_stopdesc=Fare clic su questo pulsante per chiudere i processi Bacula sopra elencati.
|
||||
index_start=Avvia Bacula
|
||||
index_startdesc=Fare clic su questo pulsante per avviare i processi Bacula sopra elencati.
|
||||
index_stopdesc=Fare clic su questo pulsante per chiudere i processi del demone Bacula sopra elencati.
|
||||
index_start=Inizia Bacula
|
||||
index_startdesc=Fare clic su questo pulsante per avviare i processi del demone Bacula sopra elencati.
|
||||
index_restart=Riavvia Bacula
|
||||
index_restartdesc=Fare clic su questo pulsante per interrompere e riavviare i processi Bacula sopra elencati. Ciò può essere necessario per attivare le configurazioni del dispositivo di archiviazione.
|
||||
index_restartdesc=Fare clic su questo pulsante per interrompere e riavviare i processi del demone Bacula sopra elencati. Ciò può essere necessario per attivare le configurazioni del dispositivo di archiviazione.
|
||||
index_apply=Applica configurazione
|
||||
index_applydesc=Fare clic su questo pulsante per attivare la configurazione del Director Bacula mostrata sopra.
|
||||
index_boot=Avvia con il sistema
|
||||
index_applydesc=Fare clic su questo pulsante per attivare la configurazione del regista Bacula mostrata sopra.
|
||||
index_boot=Inizia all'avvio
|
||||
index_bootdesc=Modifica questa opzione per controllare se Bacula viene avviato o meno all'avvio del sistema.
|
||||
index_status=Stati del processo:
|
||||
index_up=Attivo
|
||||
index_down=Fermo
|
||||
index_up=Su
|
||||
index_down=Giù
|
||||
index_return=indice del modulo
|
||||
index_versionbacula=Bacula $1
|
||||
index_versionbareos=Bareos $1
|
||||
index_notrun=I backup e altre operazioni non possono essere eseguiti poiché il Director di Bacula non è attivo.
|
||||
index_notrun=I backup e altre operazioni non possono essere eseguiti poiché il daemon di Bacula Directory non è attivo.
|
||||
index_eversion=Il tuo sistema utilizza Bacula versione $2, ma questo modulo Webmin supporta solo le versioni $1 e successive.
|
||||
index_dir=Configurazione Director
|
||||
index_sd=Configurazione dello Storage daemon
|
||||
index_fd=Configurazione del File daemon
|
||||
index_dir=Director Director
|
||||
index_sd=Configurazione del daemon di archiviazione
|
||||
index_fd=Configurazione del daemon di file
|
||||
index_groups=Configurazione del gruppo Bacula
|
||||
index_actions=Azioni di backup e ripristino
|
||||
index_ocmin=Contributo di <a href=$2 target=_new>Linmin</a> </a>
|
||||
|
||||
connect_emysql=Impossibile caricare il driver DBI del database $1
|
||||
connect_elogin=Impossibile accedere al database $1: $2.
|
||||
connect_elogin=Impossibile accedere al database $1:$2.
|
||||
connect_equery=Il database $1 non sembra contenere tabelle Bacula.
|
||||
connect_equery2=Ciò può essere dovuto al fatto che il modulo SQLite Perl installato è troppo nuovo e non supporta il vecchio formato di database SQLite utilizzato da Bacula.
|
||||
connect_equery3=Il database $1 non sembra contenere tabelle di gruppo OC Bacula.
|
||||
esql=Errore SQL: $1
|
||||
esql=Errore SQL : $1
|
||||
|
||||
check_edir=La directory di configurazione Bacula $1 non è stata trovata sul tuo sistema.
|
||||
check_ebacula=Il comando di controllo Bacula $1 non è stato trovato.
|
||||
check_econsole=Il comando della console Bacula $1 non è stato trovato.
|
||||
check_edirector=Il file di configurazione del Director Bacula $1 non è stato trovato.
|
||||
check_eclient=Questo sistema sembra essere un <a href='$2'>client Bacula</a> piuttosto che un Director.
|
||||
check_edirector=Il file di configurazione del direttore Bacula $1 non è stato trovato.
|
||||
check_eclient=Questo sistema sembra essere un <a href='$2'>client Bacula</a> piuttosto che un regista.
|
||||
check_econfigs=Nessun file di configurazione Bacula trovato in $1
|
||||
check_eservers=Nessun gruppo di server Webmin è stato definito
|
||||
check_engmod=Il modulo dei gruppi Bacula OpenCountry non è installato
|
||||
|
||||
proc_bacula-sd=Storage daemon
|
||||
proc_bacula-fd=File daemon
|
||||
proc_bacula-dir=Bacula Director
|
||||
proc_bareos-sd=Storage daemon
|
||||
proc_bareos-fd=File daemon
|
||||
proc_bareos-dir=Bacula Director
|
||||
proc_bacula-sd=Demone di archiviazione
|
||||
proc_bacula-fd=Demone di file
|
||||
proc_bacula-dir=Demone di Bacula Director
|
||||
proc_bareos-sd=Demone di archiviazione
|
||||
proc_bareos-fd=Demone di file
|
||||
proc_bareos-dir=Demone di Bacula Director
|
||||
|
||||
stop_err=Impossibile arrestare Bacula
|
||||
start_err=Impossibile avviare Bacula
|
||||
start_einit=Nessuno script init trovato per $1
|
||||
start_erun=Impossibile avviare $1: $2
|
||||
start_erun=Impossibile avviare $1 : $2
|
||||
restart_err=Impossibile riavviare Bacula
|
||||
apply_err=Impossibile applicare la configurazione
|
||||
apply_failed=È stato rilevato un errore di configurazione
|
||||
apply_problem=Impossibile applicare la configurazione: $1
|
||||
apply_problem=Impossibile applicare la configurazione : $1
|
||||
|
||||
jobs_title=Processi di backup
|
||||
jobs_none=Nessun processo di backup è stata ancora definita.
|
||||
jobs_name=Nome del processo
|
||||
jobs_none=Nessun processo di backup è stato ancora definito.
|
||||
jobs_name=Nome del lavoro
|
||||
jobs_deftype=Impostazioni predefinite?
|
||||
jobs_type=Tipo di processo
|
||||
jobs_client=Client di backup
|
||||
jobs_fileset=Insieme di file di backup
|
||||
jobs_schedule=Pianificazione del processo
|
||||
jobs_type=Tipo di lavoro
|
||||
jobs_client=Client per il backup
|
||||
jobs_fileset=File impostato su backup
|
||||
jobs_schedule=Pianificazione del backup
|
||||
jobs_add=Aggiungi un nuovo processo di backup.
|
||||
jobs_delete=Elimina processi selezionati
|
||||
jobs_return=lista di processi
|
||||
jobs_derr=Impossibile eliminare i processi.
|
||||
jobs_delete=Elimina lavori selezionati
|
||||
jobs_return=elenco di lavori
|
||||
jobs_derr=Impossibile eliminare i lavori
|
||||
|
||||
filesets_title=Set di file
|
||||
filesets_none=Nessun set di file di backup è stato ancora definito.
|
||||
@@ -83,48 +83,48 @@ filesets_add=Aggiungi un nuovo set di file di backup.
|
||||
filesets_delete=Elimina set di file selezionati
|
||||
filesets_return=elenco di set di file
|
||||
filesets_derr=Impossibile eliminare i set di file
|
||||
filesets_ednone=Nessuna selezione
|
||||
filesets_ednone=Nessuno selezionato
|
||||
|
||||
fileset_title1=Crea set di file
|
||||
fileset_title2=Modifica set di file
|
||||
fileset_header=Dettagli del set di file di backup
|
||||
fileset_egone=Il set di file non esiste più!
|
||||
fileset_name=Nome set file
|
||||
fileset_include=File e directory da archiviare
|
||||
fileset_include=File e directory per il backup
|
||||
fileset_exclude=File e directory da saltare
|
||||
fileset_sig=Funzione di hash dei file
|
||||
fileset_sig=Tipo di firma del file
|
||||
fileset_none=Nessuna
|
||||
fileset_md5=MD5
|
||||
fileset_err=Impossibile salvare il set di file
|
||||
fileset_ename=Nome set file mancante
|
||||
fileset_eclash=Un set di file con lo stesso nome esiste già
|
||||
fileset_eclash=Un file impostato con lo stesso nome esiste già
|
||||
fileset_echild=Questo set di file non può essere eliminato in quanto utilizzato da $1
|
||||
fileset_comp=Tipo di compressione
|
||||
fileset_gzipdef=<Livello di compressione predefinito>
|
||||
fileset_lzo=Compressione LZO
|
||||
fileset_gzip=Gzip livello $1
|
||||
fileset_gzip=Livello Gzip $1
|
||||
fileset_onefs=Limitare il backup a un file system?
|
||||
|
||||
clients_title=Client di backup
|
||||
clients_none=Nessun client di backup è stato ancora definito.
|
||||
clients_name=Nome del client
|
||||
clients_name=Nome del cliente
|
||||
clients_address=Nome host o indirizzo
|
||||
clients_catalog=Catalogo
|
||||
clients_catalog=Catalogare
|
||||
clients_add=Aggiungi un nuovo client di backup.
|
||||
clients_delete=Elimina i client selezionati
|
||||
clients_return=elenco dei client
|
||||
clients_delete=Elimina i clienti selezionati
|
||||
clients_return=elenco dei clienti
|
||||
clients_derr=Impossibile eliminare i client
|
||||
|
||||
client_title1=Crea client di backup
|
||||
client_title2=Modifica client di backup
|
||||
client_header=Dettagli del client di cui eseguire il backup
|
||||
client_egone=Il client non esiste più!
|
||||
client_name=Nome FD del client
|
||||
client_name=Nome FD client
|
||||
client_address=Nome host o indirizzo IP
|
||||
client_port=Porta Bacula FD
|
||||
client_pass=Password Bacula FD
|
||||
client_catalog=Catalogo da usare
|
||||
client_prune=Eliminare processi e file scaduti?
|
||||
client_prune=Eliminare lavori e file scaduti?
|
||||
client_fileret=Conserva i file di backup per
|
||||
client_jobret=Mantieni processi di backup per
|
||||
client_err=Impossibile salvare il client di backup
|
||||
@@ -134,7 +134,7 @@ client_epass=Password mancante
|
||||
client_eaddress=Nome host o indirizzo mancante o non valido
|
||||
client_eport=Porta FD mancante o non valida
|
||||
client_efileret=Periodo di conservazione dei file mancante o non valido
|
||||
client_ejobret=Periodo di conservazione del processo mancante o non valido
|
||||
client_ejobret=Periodo di conservazione del lavoro mancante o non valido
|
||||
client_echild=Questo client non può essere eliminato in quanto utilizzato da $1
|
||||
client_status=Mostra stato
|
||||
|
||||
@@ -144,137 +144,137 @@ job_header=Dettagli del processo di backup
|
||||
job_name=Nome del processo di backup
|
||||
job_enabled=Processo di backup abilitato?
|
||||
job_def=Tipo predefinito
|
||||
job_def0=Definizione predefinita
|
||||
job_def1=Processo isolato
|
||||
job_def0=Decisione predefinita
|
||||
job_def1=Lavoro autonomo
|
||||
job_def2=Eredita valori predefiniti da $1
|
||||
job_type=Tipo di processo
|
||||
job_type=Tipo di lavoro
|
||||
job_level=Livello di backup
|
||||
job_client=Client per il backup
|
||||
job_fileset=Set di file per il backup
|
||||
job_schedule=Pianificazione processo
|
||||
job_storage=Storage daemon di destinazione
|
||||
job_fileset=File impostato su backup
|
||||
job_schedule=Backup nei tempi previsti
|
||||
job_storage=Dispositivo di archiviazione di destinazione
|
||||
job_pool=Pool di volumi
|
||||
job_messages=Destinazione per i messaggi
|
||||
job_prority=Priorità di backup
|
||||
job_err=Impossibile salvare il processo di backup
|
||||
job_ename=Nome processo mancante o non valido
|
||||
job_eclash=Esiste già un processo con lo stesso nome
|
||||
job_ename=Nome lavoro mancante o non valido
|
||||
job_eclash=Esiste già un lavoro con lo stesso nome
|
||||
job_epriority=Numero di priorità mancante o non valido
|
||||
job_echild=Questa definizione predefinita di processo non può essere eliminata poiché utilizzata da $1
|
||||
job_run=Esegui ora
|
||||
job_before=Comando prima del processo
|
||||
job_after=Comando dopo il processo
|
||||
job_cbefore=Comando prima del processo (sul client)
|
||||
job_cafter=Comando dopo il processo (sul client)
|
||||
job_echild=Questa definizione di lavoro predefinita non può essere eliminata poiché utilizzata da $1
|
||||
job_run=Corri adesso
|
||||
job_before=Comando prima del lavoro
|
||||
job_after=Comando dopo il lavoro
|
||||
job_cbefore=Comando prima del lavoro (sul client)
|
||||
job_cafter=Comando dopo processo (sul client)
|
||||
|
||||
schedules_title=Pianificazioni di backup
|
||||
schedules_none=Nessuna pianificazione è stata ancora definita.
|
||||
schedules_name=Nome pianifications
|
||||
schedules_sched=Livelli e pianificazioni di esecuzione
|
||||
schedules_none=Nessuna pianificazione di backup è stata ancora definita.
|
||||
schedules_name=Nome programma
|
||||
schedules_sched=Esegui livelli e tempi
|
||||
schedules_add=Aggiungi una nuova pianificazione del backup.
|
||||
schedules_delete=Elimina le pianificazioni selezionate
|
||||
schedules_return=elenco di pianificazioni
|
||||
schedules_delete=Elimina i programmi selezionati
|
||||
schedules_return=elenco di programmi
|
||||
schedules_derr=Impossibile eliminare le pianificazioni
|
||||
|
||||
schedule_title1=Crea pianificazione di backup
|
||||
schedule_title1=Crea programma di backup
|
||||
schedule_title2=Modifica pianificazione backup
|
||||
schedule_header=Dettagli sulla pianificazione del backup
|
||||
schedule_name=Nome pianificazione backup
|
||||
schedule_runs=Livelli e pianificazioni di esecuzione
|
||||
schedule_runs=Esegui livelli e tempi
|
||||
schedule_level=Livello di backup
|
||||
schedule_pool=Volume
|
||||
schedule_times=Orari di esecuzione
|
||||
schedule_times=Corri a volte
|
||||
schedule_err=Impossibile salvare la pianificazione del backup
|
||||
schedule_ename=Nome pianificazione mancante o non valido
|
||||
schedule_eclash=Esiste già una pianificazione con lo stesso nome
|
||||
schedule_etimes=Orari di esecuzione mancanti nella riga $1
|
||||
schedule_ename=Nome programma mancante o non valido
|
||||
schedule_eclash=Esiste già un programma con lo stesso nome
|
||||
schedule_etimes=Tempi di backup mancanti nella riga $1
|
||||
schedule_echild=Questa pianificazione non può essere eliminata in quanto utilizzata da $1
|
||||
|
||||
backup_title=Esegui processo di backup
|
||||
backup_header=Dettagli del processo di backup
|
||||
backup_job=Processo da eseguire
|
||||
backup_job=Lavoro da eseguire
|
||||
backup_jd=$1 (set di file $2 su $3)
|
||||
backup_wait=Aspetta i risultati?
|
||||
backup_ok=Esegui il backup ora
|
||||
backup_run=Avvio del processo di backup $1 ..
|
||||
backup_return=modulo di backup
|
||||
backup_ejob=.. processo non trovato!
|
||||
backup_eok=.. impossibile avviare il processo
|
||||
backup_ejob=.. non è riuscito a trovare lavoro!
|
||||
backup_eok=.. impossibile avviare il lavoro
|
||||
backup_running=.. il processo di backup è ora in esecuzione. Al termine, i risultati verranno visualizzati di seguito.
|
||||
backup_running2=.. il processo di backup è stato avviato in background.
|
||||
backup_done=.. backup completato.
|
||||
backup_failed=.. il backup non è stato completato correttamente. Controllare il messaggio di errore sopra per i dettagli.
|
||||
|
||||
gbackup_title=Esegui gruppo di processi di backup
|
||||
gbackup_title=Esegui processo di backup del gruppo Bacula
|
||||
gbackup_run=Avvio del processo di backup $1 su $2 client ..
|
||||
gbackup_on=Esecuzione del processo di backup sul client $1:
|
||||
gbackup_header=Dettagli del gruppo di processo di backup
|
||||
gbackup_on=Esecuzione del processo di backup sul client $1 :
|
||||
gbackup_header=Dettagli del processo di backup del gruppo Bacula
|
||||
gbackup_jd=$1 (set di file $2 sul gruppo $3)
|
||||
|
||||
dirstatus_title=Stato del Director
|
||||
dirstatus_title=Stato del direttore
|
||||
dirstatus_sched=Processi di backup pianificati
|
||||
dirstatus_name=Nome del processo
|
||||
dirstatus_type=Tipo
|
||||
dirstatus_name=Nome del lavoro
|
||||
dirstatus_type=genere
|
||||
dirstatus_level=Livello
|
||||
dirstatus_date=Orari esecuzione
|
||||
dirstatus_date2=Iniziato a
|
||||
dirstatus_date=Corri a
|
||||
dirstatus_date2=Iniziato alle
|
||||
dirstatus_volume=Volume
|
||||
dirstatus_schednone=Nessun processo di backup è attualmente pianificato.
|
||||
dirstatus_id=Id di esecuzione
|
||||
dirstatus_id=Esegui ID
|
||||
dirstatus_status=Stato attuale
|
||||
dirstatus_run=Processi di backup in esecuzione
|
||||
dirstatus_run=Esecuzione di processi di backup
|
||||
dirstatus_runnone=Nessun processo di backup è attualmente in esecuzione.
|
||||
dirstatus_done=Processi di backup completati
|
||||
dirstatus_bytes=Dimensione
|
||||
dirstatus_bytes=Taglia
|
||||
dirstatus_files=File
|
||||
dirstatus_status2=Stato
|
||||
dirstatus_donenone=Nessun processo di backup è stato eseguito.
|
||||
dirstatus_cancel=Annulla processi selezionati
|
||||
dirstatus_cancel=Annulla lavori selezionati
|
||||
dirstatus_refresh=Aggiorna la lista
|
||||
|
||||
clientstatus_title=Stato del client
|
||||
clientstatus_err=Impossibile recuperare lo stato da $1: $2
|
||||
clientstatus_msg=Stato da $1: $2
|
||||
clientstatus_title=Stato del cliente
|
||||
clientstatus_err=Impossibile recuperare lo stato da $1 : $2
|
||||
clientstatus_msg=Stato da $1 : $2
|
||||
clientstatus_show=Mostra lo stato del client:
|
||||
clientstatus_ok=OK
|
||||
clientstatus_ok=ok
|
||||
clientstatus_on=$1 (su $2)
|
||||
|
||||
storages_title=Storage daemon
|
||||
storages_none=Nessuno Storage daemon è stato ancora definito.
|
||||
storages_name=Nome dello Storage daemon
|
||||
storages_title=Demoni di archiviazione
|
||||
storages_none=Nessun demone di archiviazione è stato ancora definito.
|
||||
storages_name=Nome di archiviazione
|
||||
storages_address=Nome host o indirizzo
|
||||
storages_device=Dispositivo di archiviazione
|
||||
storages_type=Tipo di supporto
|
||||
storages_add=Aggiungi un nuovo Storage daemon.
|
||||
storages_delete=Elimina gli Storage daemon selezionati
|
||||
storages_return=elenco di Storage daemon
|
||||
storages_derr=Impossibile eliminare gli Storage daemon
|
||||
storages_add=Aggiungi un nuovo demone di archiviazione.
|
||||
storages_delete=Elimina i daemon di archiviazione selezionati
|
||||
storages_return=elenco di demoni di archiviazione
|
||||
storages_derr=Impossibile eliminare i daemon di archiviazione
|
||||
|
||||
storage_title1=Crea uno Storage daemon
|
||||
storage_title2=Modifica demone dello Storage daemon
|
||||
storage_header=Dettagli dello Storage daemon remoto
|
||||
storage_egone=Lo Storage daemon non esiste più!
|
||||
storage_name=Nome dello Storage daemon
|
||||
storage_title1=Crea un demone di archiviazione
|
||||
storage_title2=Modifica demone di archiviazione
|
||||
storage_header=Dettagli del demone di archiviazione remota
|
||||
storage_egone=Il demone di archiviazione non esiste più!
|
||||
storage_name=Nome del demone di archiviazione
|
||||
storage_address=Nome host o indirizzo IP
|
||||
storage_port=Porta SD Bacula
|
||||
storage_pass=Password SD Bacula
|
||||
storage_device=Nome del dispositivo di archiviazione
|
||||
storage_media=Nome del tipo di supporto
|
||||
storage_maxjobs=Numero massimo di processi simultanei
|
||||
storage_other=Altro..
|
||||
storage_err=Impossibile salvare lo Storage daemon
|
||||
storage_ename=Nome dello Storage daemon mancante
|
||||
storage_eclash=Uno Storage daemon con lo stesso nome esiste già
|
||||
storage_maxjobs=Numero massimo di lavori simultanei
|
||||
storage_other=Altro ..
|
||||
storage_err=Impossibile salvare il demone di archiviazione
|
||||
storage_ename=Nome del daemon di archiviazione mancante
|
||||
storage_eclash=Un demone di archiviazione con lo stesso nome esiste già
|
||||
storage_epass=Password mancante
|
||||
storage_eaddress=Nome host o indirizzo mancante o non valido
|
||||
storage_eport=Porta SD mancante o non valida
|
||||
storage_edevice=Nome del dispositivo di archiviazione mancante
|
||||
storage_emedia=Nome del tipo di supporto mancante
|
||||
storage_emaxjobs=Numero massimo di processi simultanei mancanti
|
||||
storage_echild=Questo Storage daemon non può essere eliminato in quanto utilizzato da $1
|
||||
storage_emaxjobs=Numero massimo di lavori simultanei mancanti
|
||||
storage_echild=Questo client non può essere eliminato in quanto utilizzato da $1
|
||||
storage_status=Mostra stato
|
||||
|
||||
devices_title=Dispositivi di archiviazione
|
||||
devices_title=Dispositivi di memoria
|
||||
devices_none=Nessun dispositivo di archiviazione è stato ancora definito.
|
||||
devices_name=Nome del dispositivo
|
||||
devices_device=File o directory del dispositivo
|
||||
@@ -292,7 +292,7 @@ device_name=Nome del dispositivo di archiviazione
|
||||
device_device=Dispositivo di archiviazione o directory
|
||||
device_media=Nome del tipo di supporto
|
||||
device_label=Etichettare automaticamente i supporti?
|
||||
device_random=Dispositivo ad accesso casuale?
|
||||
device_random=Mezzo di accesso casuale?
|
||||
device_auto=Montare automaticamente?
|
||||
device_removable=Supporti rimovibili?
|
||||
device_always=Tieni sempre aperto?
|
||||
@@ -301,34 +301,34 @@ device_ename=Nome del dispositivo di archiviazione mancante
|
||||
device_eclash=Un dispositivo di archiviazione con lo stesso nome esiste già
|
||||
device_emedia=Nome del tipo di supporto mancante
|
||||
device_edevice=Dispositivo o directory di archivio mancante o non valido
|
||||
device_echild=Questo dispositivo di archiviazione non può essere eliminato in quanto utilizzato da $1
|
||||
device_echild=Questo client non può essere eliminato in quanto utilizzato da $1
|
||||
|
||||
storagestatus_title=Stato dello Storage daemon
|
||||
storagestatus_err=Impossibile recuperare lo stato da $1: $2
|
||||
storagestatus_msg=Stato da $1: $2
|
||||
storagestatus_show=Mostra lo stato dello Storage daemon:
|
||||
storagestatus_ok=OK
|
||||
storagestatus_title=Stato del demone di archiviazione
|
||||
storagestatus_err=Impossibile recuperare lo stato da $1 : $2
|
||||
storagestatus_msg=Stato da $1 : $2
|
||||
storagestatus_show=Mostra lo stato del demone di archiviazione:
|
||||
storagestatus_ok=ok
|
||||
|
||||
label_title=Etichetta volume
|
||||
label_title=Volume dell'etichetta
|
||||
label_header=Dettagli del volume da etichettare
|
||||
label_storage=Storage daemon da etichettare
|
||||
label_pool=Crea pool
|
||||
label_storage=Demone di archiviazione da etichettare
|
||||
label_pool=Crea in piscina
|
||||
label_label=Nuovo nome dell'etichetta
|
||||
label_ok=Etichetta ora
|
||||
label_return=modulo di etichetta
|
||||
label_run=Etichettatura volume con $2 sullo Storage daemon $1 ..
|
||||
label_estorage=.. lo Storage daemon non è stato trovato!
|
||||
label_run=Volume di etichettatura con $2 sul daemon di archiviazione $1 ..
|
||||
label_estorage=.. il demone di archiviazione non è stato trovato!
|
||||
label_eexists=.. l'etichetta specificata esiste già.
|
||||
label_efailed=.. etichettatura fallita! Controllare il messaggio di errore sopra per il motivo.
|
||||
label_done=.. etichettatura eseguita correttamente.
|
||||
label_epool=.. impossibile trovare il pool!
|
||||
label_err=Etichettatura fallita
|
||||
label_epool=.. impossibile trovare la piscina!
|
||||
label_err=Etichetta fallita
|
||||
label_elabel=Nessuna etichetta inserita
|
||||
|
||||
pools_title=Pool di volumi
|
||||
pools_none=Nessun pool di volumi è stato ancora definito.
|
||||
pools_name=Nome pool
|
||||
pools_type=Tipo di pool
|
||||
pools_name=Nome piscina
|
||||
pools_type=Tipo di piscina
|
||||
pools_reten=Periodo di conservazione
|
||||
pools_add=Aggiungi un nuovo pool di volumi.
|
||||
pools_delete=Elimina pool di volumi selezionati
|
||||
@@ -340,30 +340,30 @@ pool_title2=Modifica pool di volumi
|
||||
pool_header=Dettagli del pool di volumi di backup
|
||||
pool_egone=Il pool di volumi non esiste più!
|
||||
pool_name=Nome del pool di volumi
|
||||
pool_recycle=Riciclare automaticamente i volumi?
|
||||
pool_auto=Eliminare i volumi scaduti?
|
||||
pool_recycle=Ricicli automaticamente i volumi?
|
||||
pool_auto=Potare i volumi scaduti?
|
||||
pool_any=Backup su qualsiasi volume nel pool?
|
||||
pool_reten=Periodo di conservazione del volume
|
||||
pool_type=Tipo di pool di volumi
|
||||
pool_max=Numero massimo di processi per volume
|
||||
pool_max=Numero massimo di lavori per volume
|
||||
pool_unlimited=Illimitato
|
||||
pool_err=Impossibile salvare il pool di volumi
|
||||
pool_ename=Nome del pool di volumi mancante
|
||||
pool_eclash=Un pool di volumi con lo stesso nome esiste già
|
||||
pool_echild=Questo pool non può essere eliminato in quanto utilizzato da $1
|
||||
pool_err=Impossibile salvare il dispositivo di archiviazione
|
||||
pool_ename=Nome del dispositivo di archiviazione mancante
|
||||
pool_eclash=Un dispositivo di archiviazione con lo stesso nome esiste già
|
||||
pool_echild=Questo client non può essere eliminato in quanto utilizzato da $1
|
||||
pool_emax=Numero massimo di lavori mancante o non valido per volume
|
||||
pool_ereten=Periodo di conservazione mancante o non valido
|
||||
pool_status=Mostra i volumi
|
||||
pool_autolabel=Etichetta automaticamente il prefisso dei volumi
|
||||
pool_maxvolsize=Dimensioni massime del volume (ad es. 5G per 5 Gigabyte)
|
||||
|
||||
poolstatus_title=Volumi in pool
|
||||
poolstatus_title=Volumi In Piscina
|
||||
poolstatus_show=Mostra i volumi nel pool:
|
||||
poolstatus_ok=OK
|
||||
poolstatus_ok=ok
|
||||
poolstatus_volumes=Volumi nel pool selezionato
|
||||
poolstatus_name=Nome volume
|
||||
poolstatus_type=Tipo di supporto
|
||||
poolstatus_first=Primo uso
|
||||
poolstatus_first=Prima usato
|
||||
poolstatus_last=Ultimo uso
|
||||
poolstatus_bytes=Byte scritti
|
||||
poolstatus_status=Modalità di backup
|
||||
@@ -373,116 +373,116 @@ poolstatus_delete=Elimina i volumi selezionati
|
||||
|
||||
dvolumes_err=Impossibile eliminare i volumi
|
||||
dvolumes_enone=Nessuno selezionato
|
||||
dvolumes_ebacula=Errore Bacula: $1
|
||||
dvolumes_ebacula=Errore Bacula : $1
|
||||
|
||||
mount_title=Monta o smonta
|
||||
mount_header=Opzioni di montaggio o smontaggio dello storage
|
||||
mount_header=Opzioni di montaggio o disinstallazione dello storage
|
||||
mount_storage=Dispositivo di archiviazione
|
||||
mount_slot=Slot del caricatore automatico
|
||||
mount_noslot=Nessuno
|
||||
mount_slotno=Numero slot
|
||||
mount_mount=Monta dispositivo
|
||||
mount_unmount=Smonta dispositivo
|
||||
mount_run=Montaggio volume sullo Storage daemon $1 ..
|
||||
unmount_run=Smontaggio volume sullo Storage daemon $1 ..
|
||||
mount_slot=Slot caricatore automatico
|
||||
mount_noslot=Nessuna
|
||||
mount_slotno=Numero di posto connettore
|
||||
mount_mount=Mount Storage
|
||||
mount_unmount=Smonta memoria
|
||||
mount_run=Volume di montaggio sul dispositivo di archiviazione $1 ..
|
||||
unmount_run=Volume di smontaggio sul dispositivo di memorizzazione $1 ..
|
||||
mount_done=.. montato correttamente.
|
||||
unmount_done=.. non montato correttamente.
|
||||
mount_failed=.. montaggio fallito! Vedere il messaggio di errore sopra per il motivo.
|
||||
unmount_failed=.. smontaggio fallito! Vedere il messaggio di errore sopra per il motivo.
|
||||
unmount_failed=.. disinstallazione fallita! Vedere il messaggio di errore sopra per il motivo.
|
||||
mount_return=forma di montaggio
|
||||
mount_err=Impossibile montare il dispositivo di archiviazione
|
||||
mount_eslot=Numero di slot mancante o non valido
|
||||
|
||||
cancel_err=Impossibile annullare i processi
|
||||
cancel_err=Impossibile annullare i lavori
|
||||
cancel_enone=Nessuno selezionato
|
||||
|
||||
gjobs_title=Gruppi di processi di backup
|
||||
gjobs_none=Nessun gruppo di processi di backup è stato ancora definito.
|
||||
gjobs_add=Aggiungi un nuovo gruppo di processi di backup.
|
||||
gjobs_delete=Elimina processi selezionati
|
||||
gjobs_return=elenco dei processi del gruppo
|
||||
gjobs_derr=Impossibile eliminare i processi del gruppo
|
||||
gjobs_client=Client per il gruppo
|
||||
gjobs_title=Processi di backup del gruppo Bacula
|
||||
gjobs_none=Nessun processo di backup del gruppo Bacula è stato ancora definito.
|
||||
gjobs_add=Aggiungi un nuovo processo di backup del gruppo Bacula.
|
||||
gjobs_delete=Elimina lavori selezionati
|
||||
gjobs_return=elenco dei lavori del gruppo Bacula
|
||||
gjobs_derr=Impossibile eliminare i lavori del gruppo Bacula
|
||||
gjobs_client=Gruppo Bacula per il backup
|
||||
|
||||
gjob_title1=Crea gruppo di processi di backup
|
||||
gjob_title2=Modifica gruppo di processi di backup
|
||||
gjob_header=Dettagli del gruppo di processi di backup
|
||||
gjob_client=Client per il gruppo
|
||||
gjob_title1=Crea processo di backup del gruppo Bacula
|
||||
gjob_title2=Modifica processo di backup del gruppo Bacula
|
||||
gjob_header=Dettagli del processo di backup del gruppo Bacula
|
||||
gjob_client=Gruppo Bacula per il backup
|
||||
|
||||
groups_title=Gruppi Bacula
|
||||
groups_none=Nessun gruppo di processi di backup è stato ancora selezionato.
|
||||
groups_none=Nessun gruppo Bacula è stato ancora selezionato per il backup da Bacula.
|
||||
groups_name=Nome del gruppo
|
||||
groups_port=Porta FD
|
||||
groups_add=Aggiungi gruppo:
|
||||
groups_add=Aggiungi gruppo Bacula:
|
||||
groups_ok=Inserisci
|
||||
groups_catalog=Catalogo
|
||||
groups_delete=Elimina i gruppi selezionati
|
||||
groups_catalog=Catalogare
|
||||
groups_delete=Elimina i gruppi Bacula selezionati
|
||||
groups_return=elenco di gruppi
|
||||
groups_derr=Impossibile eliminare i gruppi
|
||||
groups_noadd=Non esistono gruppi da selezionare per i backup.
|
||||
groups_noadd=Non esistono gruppi Bacula da selezionare per i backup.
|
||||
groups_info=$1 ($2 membri)
|
||||
groups_already=Tutti i gruppi sono già stati aggiunti.
|
||||
groups_already=Tutti i gruppi Bacula sono già stati aggiunti.
|
||||
|
||||
group_title1=Crea gruppo
|
||||
group_title2=Modifica gruppo
|
||||
group_header=Dettagli del gruppo di backup
|
||||
group_title1=Crea gruppo Bacula
|
||||
group_title2=Modifica gruppo Bacula
|
||||
group_header=Dettagli del gruppo Bacula di cui eseguire il backup
|
||||
group_egone=Il gruppo non esiste più!
|
||||
group_egone2=Il gruppo non esiste più!
|
||||
group_name=Nome del gruppo
|
||||
group_egone2=Il gruppo Bacula non esiste più!
|
||||
group_name=Nome del gruppo Bacula
|
||||
group_port=Porta Bacula FD
|
||||
group_err=Impossibile salvare il gruppo
|
||||
group_err=Impossibile salvare il gruppo Bacula
|
||||
group_eclash=Un gruppo con lo stesso nome esiste già
|
||||
group_members=Host nel gruppo
|
||||
group_members=Host nel gruppo Bacula
|
||||
|
||||
sync_title=Sincronizzazione del gruppo
|
||||
sync_header=Opzioni di sincronizzazione automatica dei client del gruppo
|
||||
sync_sched=Sincronizzare su schedulazione?
|
||||
sync_schedyes=Sì, agli orari selezionati di seguito.
|
||||
sync_err=Impossibile salvare la sincronizzazione del gruppo
|
||||
sync_title=Sincronizzazione del gruppo Bacula
|
||||
sync_header=Opzioni di sincronizzazione client del gruppo Bacula automatico
|
||||
sync_sched=Sincronizzare nei tempi previsti?
|
||||
sync_schedyes=Sì, a volte selezionato di seguito.
|
||||
sync_err=Impossibile salvare la sincronizzazione del gruppo Bacula
|
||||
|
||||
log_create_client=Client di backup $1 creato
|
||||
log_modify_client=Client di backup $1 modificato
|
||||
log_delete_client=Client di backup $1 eliminato
|
||||
log_delete_clients=Eliminati $1 client di backup
|
||||
log_create_fileset=Set di file $1 creato
|
||||
log_modify_fileset=Set di file $1 modificato
|
||||
log_delete_fileset=Set di file $1 eliminato
|
||||
log_delete_filesets=Eliminati $1 set di file
|
||||
log_create_job=Processo di backup $1 creato
|
||||
log_modify_job=Processo di backup $1 modificato
|
||||
log_delete_job=Processo di backup $1 eliminato
|
||||
log_create_client=Client di backup creato $1
|
||||
log_modify_client=Client di backup modificato $1
|
||||
log_delete_client=Client di backup eliminato $1
|
||||
log_delete_clients=Client di backup $1 eliminati
|
||||
log_create_fileset=Set di file creato $1
|
||||
log_modify_fileset=Set di file modificato $1
|
||||
log_delete_fileset=Set di file eliminato $1
|
||||
log_delete_filesets=Set di file $1 eliminati
|
||||
log_create_job=Processo di backup creato $1
|
||||
log_modify_job=Processo di backup modificato $1
|
||||
log_delete_job=Processo di backup eliminato $1
|
||||
log_delete_jobs=Eliminati $1 processi di backup
|
||||
log_create_schedule=Pianificazione del backup $1 creata
|
||||
log_modify_schedule=Pianificazione del backup $1 modificata
|
||||
log_delete_schedule=Pianificazione del backup $1 eliminata
|
||||
log_delete_schedules=Eliminate $1 pianificazioni di backup
|
||||
log_create_pool=Pool di volumi $1 creato
|
||||
log_modify_pool=Pool di volumi $1 modificato
|
||||
log_delete_pool=Pool di volumi $1 eliminati
|
||||
log_delete_pools=Eliminati $1 Pool di volumi
|
||||
log_create_storage=Storage daemon $1 creato
|
||||
log_modify_storage=Storage daemon $1 modificato
|
||||
log_delete_storage=Storage daemon $1 eliminato
|
||||
log_delete_storages=Eliminati $1 Storage daemon
|
||||
log_create_device=Dispositivo di archiviazione $1 creato
|
||||
log_modify_device=Dispositivo di archiviazione $1 modificato
|
||||
log_delete_device=Dispositivo di archiviazione $1 eliminato
|
||||
log_create_schedule=Pianificazione del backup creata $1
|
||||
log_modify_schedule=Pianificazione del backup modificata $1
|
||||
log_delete_schedule=Pianificazione del backup eliminata $1
|
||||
log_delete_schedules=Pianificazioni di backup $1 eliminate
|
||||
log_create_pool=Pool di volumi creato $1
|
||||
log_modify_pool=Pool di volumi modificato $1
|
||||
log_delete_pool=Pool di volumi eliminati $1
|
||||
log_delete_pools=Pool di volumi $1 eliminati
|
||||
log_create_storage=Demone di archiviazione creato $1
|
||||
log_modify_storage=Demone di archiviazione modificato $1
|
||||
log_delete_storage=Demone di archiviazione eliminato $1
|
||||
log_delete_storages=Demoni di archiviazione $1 eliminati
|
||||
log_create_device=Dispositivo di archiviazione creato $1
|
||||
log_modify_device=Dispositivo di archiviazione modificato $1
|
||||
log_delete_device=Dispositivo di archiviazione eliminato $1
|
||||
log_delete_devices=$1 dispositivi di archiviazione eliminati
|
||||
log_create_group=Creato gruppo $1
|
||||
log_modify_group=Gruppo $1 modificato
|
||||
log_delete_group=Gruppo $1 eliminato
|
||||
log_delete_groups=$1 gruppi eliminati
|
||||
log_create_gjob=Processo di backup del gruppo $1 creato
|
||||
log_modify_gjob=Processo di backup del gruppo $1 modificato
|
||||
log_delete_gjob=Processo di backup del gruppo $1 eliminato
|
||||
log_delete_gjobs=Eliminati $1 processi di backup del gruppo
|
||||
log_create_fdirector=Director daemon file creato $1
|
||||
log_modify_fdirector=Director del demone file modificato $1
|
||||
log_delete_fdirector=Director daemon file eliminato $1
|
||||
log_delete_fdirectors=Director di daemon file eliminati $1
|
||||
log_create_sdirector=Director del demone di archiviazione creato $1
|
||||
log_modify_sdirector=Director del demone di archiviazione modificato $1
|
||||
log_delete_sdirector=Director del demone di archiviazione eliminato $1
|
||||
log_create_group=Creato gruppo Bacula $1
|
||||
log_modify_group=Gruppo Bacula modificato $1
|
||||
log_delete_group=Gruppo Bacula eliminato $1
|
||||
log_delete_groups=$1 gruppi Bacula eliminati
|
||||
log_create_gjob=Processo di backup del gruppo Bacula creato $1
|
||||
log_modify_gjob=Processo di backup del gruppo Bacula modificato $1
|
||||
log_delete_gjob=Processo di backup del gruppo Bacula eliminato $1
|
||||
log_delete_gjobs=Eliminati $1 processi di backup del gruppo Bacula
|
||||
log_create_fdirector=Direttore daemon file creato $1
|
||||
log_modify_fdirector=Direttore del demone file modificato $1
|
||||
log_delete_fdirector=Direttore daemon file eliminato $1
|
||||
log_delete_fdirectors=Direttori di daemon file eliminati $1
|
||||
log_create_sdirector=Direttore del demone di archiviazione creato $1
|
||||
log_modify_sdirector=Direttore del demone di archiviazione modificato $1
|
||||
log_delete_sdirector=Direttore del demone di archiviazione eliminato $1
|
||||
log_delete_sdirectors=Registri daemon di archiviazione $1 eliminati
|
||||
log_stop=Demoni Bacula fermati
|
||||
log_start=Demoni Bacula avviati
|
||||
@@ -494,23 +494,23 @@ log_label=Demone di archiviazione con etichetta $1
|
||||
log_mount=Dispositivo di archiviazione montato $1
|
||||
log_unmount=Dispositivo di archiviazione non montato $1
|
||||
log_sync=Sincronizzazione del gruppo Bacula salvata
|
||||
log_director=Configurazione del Director Bacula globale salvata
|
||||
log_director=Configurazione del regista Bacula globale salvata
|
||||
log_file=Configurazione del demone del file Bacula salvata
|
||||
log_storagec=Configurazione del demone di archiviazione Bacula salvata
|
||||
log_fixpass=Risolto il problema con la password del programma della console Bacula
|
||||
|
||||
director_title=Configurazione Director
|
||||
director_header=Opzioni globali Director
|
||||
director_name=Nome del Director
|
||||
director_port=Porta di ascolto
|
||||
director_jobs=Numero massimo di processi simultanei
|
||||
director_title=Director Director
|
||||
director_header=Opzioni del regista Global Bacula
|
||||
director_name=Nome del direttore
|
||||
director_port=Ascolta in porto
|
||||
director_jobs=Numero massimo di lavori simultanei
|
||||
director_messages=Destinazione per i messaggi
|
||||
director_enone=Nessuna configurazione del Director trovata!
|
||||
director_enone=Nessuna configurazione del regista trovata!
|
||||
director_dir=Directory di lavoro di Bacula
|
||||
director_err=Impossibile salvare la configurazione del Director
|
||||
director_ename=Nome Director mancante o non valido
|
||||
director_err=Impossibile salvare la configurazione del direttore
|
||||
director_ename=Nome regista mancante o non valido
|
||||
director_eport=Numero porta mancante o non valido
|
||||
director_ejobs=Numero mancante o non valido di processi simultanei
|
||||
director_ejobs=Numero mancante o non valido di lavori simultanei
|
||||
director_edir=Directory di lavoro mancante o inesistente
|
||||
|
||||
tls_enable=Abilitare la crittografia TLS?
|
||||
@@ -525,86 +525,86 @@ tls_ekey=File chiave TLS mancante o inesistente
|
||||
tls_ecacert=File di certificato CA TLS mancante o inesistente
|
||||
tls_ecerts=Per abilitare TLS, è necessario specificare i file di certificato, chiave e CA.
|
||||
|
||||
file_title=Configurazione del File daemon
|
||||
file_header=Opzioni del File daemon
|
||||
file_name=Nome del File daemon
|
||||
file_port=Porta di ascolto
|
||||
file_jobs=Numero massimo di processi simultanei
|
||||
file_title=Configurazione del daemon di file
|
||||
file_header=Opzioni del demone del file Bacula
|
||||
file_name=Nome del demone del file
|
||||
file_port=Ascolta in porto
|
||||
file_jobs=Numero massimo di lavori simultanei
|
||||
file_dir=Directory di lavoro di Bacula
|
||||
file_enone=Nessuna configurazione di File daemon trovata!
|
||||
file_err=Impossibile salvare la configurazione del File daemon
|
||||
file_ename=Nome del File daemon mancante o non valido
|
||||
file_enone=Nessuna configurazione di daemon di file trovata!
|
||||
file_err=Impossibile salvare la configurazione del daemon di file
|
||||
file_ename=Nome del daemon di file mancante o non valido
|
||||
file_eport=Numero porta mancante o non valido
|
||||
file_ejobs=Numero mancante o non valido di processi simultanei
|
||||
file_ejobs=Numero mancante o non valido di lavori simultanei
|
||||
file_edir=Directory di lavoro mancante o inesistente
|
||||
|
||||
fdirectors_title=Director del File daemon
|
||||
fdirectors_none=Nessun Director è stato ancora definito.
|
||||
fdirectors_name=Nome del Director
|
||||
fdirectors_title=File Daemon Director
|
||||
fdirectors_none=Nessun amministratore è stato ancora definito.
|
||||
fdirectors_name=Nome del direttore
|
||||
fdirectors_pass=Password accettata
|
||||
fdirectors_add=Aggiungi un nuovo Director.
|
||||
fdirectors_delete=Elimina i Director selezionati
|
||||
fdirectors_return=elenco dei Director
|
||||
fdirectors_derr=Impossibile eliminare i Director
|
||||
fdirectors_add=Aggiungi un nuovo regista.
|
||||
fdirectors_delete=Elimina i registi selezionati
|
||||
fdirectors_return=elenco dei direttori
|
||||
fdirectors_derr=Impossibile eliminare i direttori
|
||||
|
||||
fdirector_title1=Crea Director del File daemon
|
||||
fdirector_title2=Modifica Director del File daemon
|
||||
fdirector_header=Dettagli sul controllo del Director remoto
|
||||
fdirector_egone=Il Director non esiste più!
|
||||
fdirector_name=Nome del Director
|
||||
fdirector_title1=Crea File Daemon Director
|
||||
fdirector_title2=Modifica File Daemon Director
|
||||
fdirector_header=Dettagli sul controllo di Remote Director
|
||||
fdirector_egone=Il regista non esiste più!
|
||||
fdirector_name=Nome del direttore
|
||||
fdirector_pass=Password accettata
|
||||
fdirector_monitor=Consentire solo il monitoraggio della connessione?
|
||||
fdirector_err=Impossibile salvare il Director del File daemon
|
||||
fdirector_ename=Nome del Director mancante
|
||||
fdirector_eclash=Un Director con lo stesso nome esiste già
|
||||
fdirector_err=Impossibile salvare il daemon director del file
|
||||
fdirector_ename=Nome del regista mancante
|
||||
fdirector_eclash=Un regista con lo stesso nome esiste già
|
||||
fdirector_epass=Password mancante
|
||||
|
||||
sdirectors_title=Director degli Storage daemon
|
||||
sdirectors_none=Nessun Director è stato ancora definito.
|
||||
sdirectors_name=Nome del Director
|
||||
sdirectors_title=Direttori dei demoni di archiviazione
|
||||
sdirectors_none=Nessun amministratore è stato ancora definito.
|
||||
sdirectors_name=Nome del direttore
|
||||
sdirectors_pass=Password accettata
|
||||
sdirectors_add=Aggiungi un nuovo Director.
|
||||
sdirectors_delete=Elimina i Director selezionati
|
||||
sdirectors_return=elenco dei Director
|
||||
sdirectors_derr=Impossibile eliminare i Director
|
||||
sdirectors_add=Aggiungi un nuovo regista.
|
||||
sdirectors_delete=Elimina i registi selezionati
|
||||
sdirectors_return=elenco dei direttori
|
||||
sdirectors_derr=Impossibile eliminare i direttori
|
||||
|
||||
sdirector_title1=Crea un Director dello Storage daemon
|
||||
sdirector_title2=Modifica Director dello Storage daemon
|
||||
sdirector_header=Dettagli sul controllo del Director remoto
|
||||
sdirector_egone=Il Director non esiste più!
|
||||
sdirector_name=Nome del Director
|
||||
sdirector_title1=Crea un Daemon Director di archiviazione
|
||||
sdirector_title2=Modifica Daemon Director di archiviazione
|
||||
sdirector_header=Dettagli sul controllo di Remote Director
|
||||
sdirector_egone=Il regista non esiste più!
|
||||
sdirector_name=Nome del direttore
|
||||
sdirector_pass=Password accettata
|
||||
sdirector_monitor=Consentire solo il monitoraggio della connessione?
|
||||
sdirector_err=Impossibile salvare il Director dello Storage daemon
|
||||
sdirector_ename=Nome del Director mancante
|
||||
sdirector_eclash=Un Director con lo stesso nome esiste già
|
||||
sdirector_err=Impossibile salvare il daemon director di archiviazione
|
||||
sdirector_ename=Nome del regista mancante
|
||||
sdirector_eclash=Un regista con lo stesso nome esiste già
|
||||
sdirector_epass=Password mancante
|
||||
|
||||
storagec_title=Configurazione del Director dello Storage daemon
|
||||
storagec_header=Opzioni dello Storage daemon
|
||||
storagec_title=Configurazione del daemon di archiviazione
|
||||
storagec_header=Opzioni del demone di archiviazione Bacula
|
||||
storagec_name=Nome del demone
|
||||
storagec_port=Porta di ascolto
|
||||
storagec_jobs=Numero massimo di processi simultanei
|
||||
storagec_enone=Nessuna configurazione dello Storage daemon trovata!
|
||||
storagec_port=Ascolta in porto
|
||||
storagec_jobs=Numero massimo di lavori simultanei
|
||||
storagec_enone=Nessuna configurazione del demone di archiviazione trovata!
|
||||
storagec_dir=Directory di lavoro di Bacula
|
||||
storagec_err=Impossibile salvare la configurazione dello Storage daemon
|
||||
storagec_ename=Nome dello dello Storage daemon mancante o non valido
|
||||
storagec_err=Impossibile salvare la configurazione del daemon di archiviazione
|
||||
storagec_ename=Nome del daemon di archiviazione mancante o non valido
|
||||
storagec_eport=Numero porta mancante o non valido
|
||||
storagec_ejobs=Numero mancante o non valido di processi simultanei
|
||||
storagec_ejobs=Numero mancante o non valido di lavori simultanei
|
||||
storagec_edir=Directory di lavoro mancante o inesistente
|
||||
|
||||
chooser_title=Seleziona Pianificazione
|
||||
chooser_monthsh=Mesi in cui eseguire
|
||||
chooser_title=Seleziona Pianifica
|
||||
chooser_monthsh=Mesi da eseguire
|
||||
chooser_months=Mesi dell'anno
|
||||
chooser_all=Tutti
|
||||
chooser_sel=Selezionati sotto. ..
|
||||
chooser_ok=OK
|
||||
chooser_timeh=Ora del giorno in cui eseguire
|
||||
chooser_sel=Selezionato sotto. ..
|
||||
chooser_ok=ok
|
||||
chooser_timeh=Ora del giorno da eseguire
|
||||
chooser_time=Ora e minuti
|
||||
chooser_weekdaysh=Giorni della settimana in cui eseguire
|
||||
chooser_weekdaysh=Giorni della settimana da eseguire
|
||||
chooser_weekdays=Giorni della settimana
|
||||
chooser_weekdaynums=Numeri nel mese
|
||||
chooser_daysh=Giorni del mese in cui eseguire
|
||||
chooser_daysh=Giorni del mese da eseguire
|
||||
chooser_days=Date
|
||||
chooser_err=Impossibile selezionare la pianificazione
|
||||
chooser_emonths=Nessun mese scelto
|
||||
@@ -621,43 +621,43 @@ chooser_edaysrange=I giorni selezionati del mese devono essere contigui
|
||||
weekdaynum_1=Primo
|
||||
weekdaynum_2=Secondo
|
||||
weekdaynum_3=Terzo
|
||||
weekdaynum_4=Quarto
|
||||
weekdaynum_4=Il quarto
|
||||
weekdaynum_5=Quinto
|
||||
|
||||
restore_title=Ripristina backup
|
||||
restore_title2=Ripristina backup nel gruppo
|
||||
restore_title=Ripristinare il backup
|
||||
restore_title2=Ripristina backup nel gruppo Bacula
|
||||
restore_title3=Ripristina backup gruppo Bacula
|
||||
restore_header=Opzioni per il ripristino del processo di backup precedente
|
||||
restore_job=Processo da ripristinare
|
||||
restore_job=Lavoro da ripristinare
|
||||
restore_files=File da ripristinare
|
||||
restore_client=Ripristina su client o gruppo
|
||||
restore_storage=Ripristina dal dispositivo di archiviazione
|
||||
restore_where=Ripristina nella directory
|
||||
restore_where2=Altra directory principale
|
||||
restore_ewhere=Directory su cui ripristinare mancante
|
||||
restore_ewhere=Directory mancante in cui ripristinare
|
||||
restore_ok=Ripristina ora
|
||||
restore_err=Impossibile ripristinare il backup
|
||||
restore_efiles=Nessun file inserito
|
||||
restore_ejob=ID processo non valido
|
||||
restore_ejobfiles=Nessun file archiviato per il processo
|
||||
restore_run=Avvio del ripristino del processo $1 sul client $2 dal dispositivo $3 ..
|
||||
restore_ejob=ID lavoro non valido
|
||||
restore_ejobfiles=Nessun file registrato per lavoro
|
||||
restore_run=Avvio del ripristino del processo $1 sul client $2 dalla memoria $3 ..
|
||||
restore_return=modulo di ripristino
|
||||
restore_eok=.. impossibile avviare il processo
|
||||
restore_eok=.. impossibile avviare il lavoro
|
||||
restore_running=.. il ripristino è ora in esecuzione. Al termine, i risultati verranno visualizzati di seguito.
|
||||
restore_running2=.. il ripristino è stato avviato in background.
|
||||
restore_done=.. ripristino completato.
|
||||
restore_failed=.. il ripristino non è stato completato correttamente. Controllare il messaggio di errore sopra per i dettagli.
|
||||
restore_clist=--Client--
|
||||
restore_glist=--Gruppi Bacula--
|
||||
restore_eclient=Nessun client o gruppo Bacula selezionato
|
||||
restore_clist=--Clients--
|
||||
restore_glist=--Bacula Gruppi--
|
||||
restore_eclient=Nessun cliente o gruppo Bacula selezionato
|
||||
restore_egroup=Il gruppo Bacula non esiste
|
||||
restore_jlist=--Processi sistema singolo--
|
||||
restore_jlist=- Lavori con sistema singolo--
|
||||
restore_njlist=--Bacula Groups Jobs--
|
||||
restore_all=--Tutti i client del gruppo--
|
||||
restore_all=--Tutti i clienti del gruppo--
|
||||
restore_eclients=Nessun membro del backup del gruppo Bacula trovato!
|
||||
restore_eall1=L'opzione <b>Tutti i client di backup</b> deve essere selezionata per <b>Ripristina su client o gruppo</b> quando si esegue un processo di ripristino del gruppo Bacula
|
||||
restore_eall2=L'opzione <b>Tutti i client di backup</b> può essere selezionata solo per <b>Ripristina su client o gruppo</b> quando si esegue un processo di ripristino del gruppo Bacula
|
||||
restore_eall1=L'opzione <b>Tutti i client di backup</b> deve essere selezionata per <b>Ripristina su client o gruppo</b> quando si esegue un ripristino di processo del gruppo Bacula
|
||||
restore_eall2=L'opzione <b>Tutti i client di backup</b> può essere selezionata solo per <b>Ripristina su client o gruppo</b> quando si esegue un ripristino di processo del gruppo Bacula
|
||||
restore_enofiles=Nessuno dei file selezionati è nel backup
|
||||
restore_level_F=Completo
|
||||
restore_level_F=Pieno
|
||||
restore_level_D=Differenziale
|
||||
restore_level_I=incrementale
|
||||
@@ -2,7 +2,6 @@
|
||||
# Returns a list of files and directories under some directory
|
||||
|
||||
$trust_unknown_referers = 1;
|
||||
use JSON::PP;
|
||||
require './bacula-backup-lib.pl';
|
||||
&ReadParse();
|
||||
|
||||
|
||||
164
bin/patch
164
bin/patch
@@ -1,164 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
# patch - Apply a patch to Webmin core or its modules from GitHub or a local file
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use 5.010;
|
||||
|
||||
use Getopt::Long qw(:config permute pass_through);
|
||||
use Pod::Usage;
|
||||
use File::Basename;
|
||||
use Cwd qw(cwd);
|
||||
|
||||
my %opt;
|
||||
GetOptions(
|
||||
'help|h' => \$opt{'help'},
|
||||
'config|c=s' => \$opt{'config'},
|
||||
);
|
||||
pod2usage(0) if ($opt{'help'});
|
||||
|
||||
# Get Webmin path
|
||||
my $path = cwd;
|
||||
my $lib = "web-lib-funcs.pl";
|
||||
if (!-r "$path/$lib") {
|
||||
$path = dirname(dirname($0));
|
||||
if (!-r "$path/$lib") {
|
||||
$path = $path = Cwd::realpath('..');
|
||||
}
|
||||
}
|
||||
|
||||
# Init core
|
||||
my $config_dir = $opt{'config'} || '/etc/webmin';
|
||||
$ENV{'WEBMIN_CONFIG'} = $config_dir;
|
||||
push(@INC, $path);
|
||||
eval 'use WebminCore';
|
||||
init_config();
|
||||
|
||||
# Check if curl is installed
|
||||
if (!has_command('curl')) {
|
||||
print "\"curl\" command is not installed\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Check if git is installed
|
||||
if (!has_command('patch')) {
|
||||
if (!has_command('git')) {
|
||||
print "Neither \"patch\" nor \"git\" commands are installed\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Get patch URL or file
|
||||
my $patch = $ARGV[0];
|
||||
|
||||
# Params check
|
||||
if (!$patch) {
|
||||
pod2usage(0);
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Patch check
|
||||
if ($patch !~ /^https?:\/\//) {
|
||||
if (!-r $patch) {
|
||||
print "Patch file $patch doesn't exist\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
elsif ($patch =~ /^https?:\/\/(github|gitlab)\.com/ &&
|
||||
$patch !~ /\.patch$/ && $patch !~ /\.diff$/) {
|
||||
$patch .= '.patch';
|
||||
}
|
||||
|
||||
# Parse module name from URL
|
||||
my $module = "";
|
||||
if ($patch =~ m{https://(github|gitlab)\.com/[^/]+/([^/]+)/commit/[^/]+}) {
|
||||
$module = $2;
|
||||
$module = "" if ($2 eq 'webmin');
|
||||
# Special handling for some modules
|
||||
$module = $module =~ /^virtualmin-pro$/ ?
|
||||
'virtual-server/pro' :
|
||||
'virtual-server'
|
||||
if $module =~ /^virtualmin-(gpl|pro)$/;
|
||||
}
|
||||
|
||||
# Check if module exists
|
||||
if (!-d "$path/$module") {
|
||||
print "Module $module doesn't exist\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# Download command or cat patch file
|
||||
my $cmd;
|
||||
if ($patch =~ /^https?:\/\//) {
|
||||
$cmd = "curl -s @{[quotemeta($patch)]}";
|
||||
chdir "$path/$module";
|
||||
}
|
||||
else {
|
||||
$cmd = "cat @{[quotemeta($patch)]}";
|
||||
}
|
||||
|
||||
# Apply patch using Patch or Git command
|
||||
my $output;
|
||||
if (has_command('patch')) {
|
||||
$output = `$cmd 2>&1 | patch -p1 --verbose 2>&1`;
|
||||
if ($output !~ /succeeded/i) {
|
||||
print "Patch failed: $output\n";
|
||||
exit 1;
|
||||
}
|
||||
} else {
|
||||
$output = `$cmd 2>&1 | git apply --reject --verbose --whitespace=fix 2>&1`;
|
||||
if ($output !~ /applied patch.*?cleanly/i) {
|
||||
print "Patch failed: $output\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
print "Patch applied successfully to:\n";
|
||||
print " $1\n" while $output =~ /^(?|Applied patch\s+(\S+)|patching file\s+(\S+))/mg;
|
||||
system("$config_dir/restart");
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
patch
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Apply a patch to Webmin core or its modules from GitHub or a local file.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
webmin patch patch-url/file
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over
|
||||
|
||||
=item --help, -h
|
||||
|
||||
Give this help list.
|
||||
|
||||
=item --config, -c
|
||||
|
||||
Specify the full path to the Webmin configuration directory. Defaults to
|
||||
C</etc/webmin>
|
||||
|
||||
Examples of usage:
|
||||
|
||||
Apply a patch from a URL.
|
||||
|
||||
- webmin patch https://github.com/webmin/webmin/commit/e6a2bb15b0.patch
|
||||
|
||||
- webmin patch https://github.com/virtualmin/virtualmin-gpl/commit/f4433153d
|
||||
|
||||
Apply a patch from local file.
|
||||
|
||||
- cd /usr/libexec/webmin/virtual-server/pro &&
|
||||
webmin patch /root/virtualmin-pro/patches/patch-1.patch
|
||||
|
||||
=back
|
||||
|
||||
=head1 LICENSE AND COPYRIGHT
|
||||
|
||||
Copyright 2024 Ilia Ross <ilia@virtualmin.com>
|
||||
@@ -64,12 +64,12 @@ our $dnssec_dlv_zone = "dlv.isc.org.";
|
||||
our @dnssec_dlv_key = ( 257, 3, 5, '"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URkY62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboMQKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VStTDN0YUuWrBNh"' );
|
||||
|
||||
my $rand_flag;
|
||||
if ($gconfig{'os_type'} =~ /-linux$/ &&
|
||||
if ($gconfig{'os_type'} =~ /-linux$/ &&
|
||||
$config{'force_random'} eq '0' &&
|
||||
-r "/dev/urandom" &&
|
||||
$bind_version =~ /^9\./ &&
|
||||
&compare_version_numbers($bind_version, '<', '9.14.2')) {
|
||||
# Version: 9.14.2 deprecated the use of -r option
|
||||
# Version: 9.14.2 deprecated the use of -r option
|
||||
# in favor of using /dev/random [bugs:#5370]
|
||||
$rand_flag = "-r /dev/urandom";
|
||||
}
|
||||
@@ -1006,7 +1006,7 @@ else {
|
||||
}
|
||||
|
||||
if ($access{'dironly'}) {
|
||||
# Check directory access control
|
||||
# Check directory access control
|
||||
return 1 if (!$file);
|
||||
$file = &absolute_path($file);
|
||||
return 0 if (!&allowed_zone_file(\%access, $file));
|
||||
@@ -1336,9 +1336,9 @@ elsif ($type eq "DMARC") {
|
||||
print &ui_table_row($text{'value_dmarcfo'},
|
||||
&ui_select("dmarcfo", $dmarc->{'fo'},
|
||||
[ [ undef, $text{'default'} ],
|
||||
[ 0, $text{'value_dmarcfo0'} ],
|
||||
[ 1, $text{'value_dmarcfo1'} ],
|
||||
[ 'd', $text{'value_dmarcfod'} ],
|
||||
[ 0, $text{'value_dmarcfo0'} ],
|
||||
[ 1, $text{'value_dmarcfo1'} ],
|
||||
[ 'd', $text{'value_dmarcfod'} ],
|
||||
[ 's', $text{'value_dmarcfos'} ] ]));
|
||||
}
|
||||
elsif ($type eq "NSEC3PARAM") {
|
||||
@@ -1492,7 +1492,7 @@ return 1;
|
||||
|
||||
# expand_ip6(ip)
|
||||
# Transform compact (with ::) IPv6 address to the unique expanded form
|
||||
# (without :: and leading zeroes in all parts)
|
||||
# (without :: and leading zeroes in all parts)
|
||||
sub expand_ip6
|
||||
{
|
||||
my ($ip) = @_;
|
||||
@@ -1508,7 +1508,7 @@ return $ip;
|
||||
}
|
||||
|
||||
# expandall_ip6(ip)
|
||||
# Transform IPv6 address to the expanded form containing all internal 0's
|
||||
# Transform IPv6 address to the expanded form containing all internal 0's
|
||||
sub expandall_ip6
|
||||
{
|
||||
my ($ip) = @_;
|
||||
@@ -1519,7 +1519,7 @@ $ip =~ s/(:|^)(\w)(?=:|$)/:000$2/g;
|
||||
return $ip;
|
||||
}
|
||||
|
||||
sub time_unit_choice
|
||||
sub time_unit_choice
|
||||
{
|
||||
my ($name, $value) = @_;
|
||||
return &ui_select($name, $value =~ /^(S?)$/i ? "" :
|
||||
@@ -1848,6 +1848,10 @@ sub create_slave_zone
|
||||
{
|
||||
my $parent = &get_config_parent();
|
||||
my $conf = $parent->{'members'};
|
||||
my $opts = &find("options", $conf);
|
||||
if (!$opts) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Check if exists in the view
|
||||
my @zones;
|
||||
@@ -1941,6 +1945,9 @@ my ($name, $slaves, $viewname, $file, $records) = @_;
|
||||
my $parent = &get_config_parent();
|
||||
my $conf = $parent->{'members'};
|
||||
my $opts = &find("options", $conf);
|
||||
if (!$opts) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Check if exists in the view
|
||||
my @zones;
|
||||
@@ -1982,14 +1989,12 @@ foreach my $s (@$slaves) {
|
||||
push(@transfer, { 'name' => $s });
|
||||
}
|
||||
if (@transfer) {
|
||||
my $gat = $opts ? &find("allow-transfer", $opts->{'members'}) : undef;
|
||||
my $gat = &find("allow-transfer", $opts->{'members'});
|
||||
if ($gat) {
|
||||
push(@transfer, @{$gat->{'members'}});
|
||||
}
|
||||
}
|
||||
if (@notify) {
|
||||
my %done;
|
||||
@notify = grep { !$done{$_->{'name'}}++ } @notify;
|
||||
my $also = { 'name' => 'also-notify',
|
||||
'type' => 1,
|
||||
'members' => \@notify};
|
||||
@@ -1998,8 +2003,6 @@ if (@notify) {
|
||||
'values' => [ 'yes' ] });
|
||||
}
|
||||
if (@transfer) {
|
||||
my %done;
|
||||
@transfer = grep { !$done{$_->{'name'}}++ } @transfer;
|
||||
my $allow = { 'name' => 'allow-transfer',
|
||||
'type' => 1,
|
||||
'members' => \@transfer };
|
||||
@@ -2640,7 +2643,7 @@ my $parent = &get_config_parent();
|
||||
my $bconf = &get_config();
|
||||
my $conf = $bconf;
|
||||
if ($zone->{'viewindex'} ne '') {
|
||||
my $view = $conf->[$zone->{'viewindex'}];
|
||||
my $view = $conf->[$zone->{'viewindex'}];
|
||||
$conf = $view->{'members'};
|
||||
$parent = $view;
|
||||
}
|
||||
@@ -2909,7 +2912,7 @@ foreach my $slave (@slaves) {
|
||||
}
|
||||
if ($config{'extra_slaves'}) {
|
||||
push(@otherslaves,
|
||||
grep { $_ ne '' }
|
||||
grep { $_ ne '' }
|
||||
map { &to_ipaddress($_) || &to_ip6address($_) }
|
||||
split(/\s+/, $config{'extra_slaves'}));
|
||||
}
|
||||
@@ -3327,7 +3330,7 @@ return &has_command($config{'signzone'}) &&
|
||||
}
|
||||
|
||||
# supports_dnssec_client()
|
||||
# Returns 2 if this BIND can send and verify DNSSEC requests, 1 if the
|
||||
# Returns 2 if this BIND can send and verify DNSSEC requests, 1 if the
|
||||
# dnssec-validation directive is not supported, 0 otherwise
|
||||
sub supports_dnssec_client
|
||||
{
|
||||
@@ -3352,15 +3355,13 @@ return $alg eq 'RSASHA256' ? ( 2048, 4096 ) :
|
||||
$alg eq 'NSEC3DSA' ? ( 512, 1024, 64 ) :
|
||||
$alg eq 'ECDSAP256SHA256' ? ( 128, 512 ) :
|
||||
$alg eq 'ECDSAP384SHA384' ? ( 128, 512 ) :
|
||||
$alg eq 'ED25519' ? ( 1, 512 ) :
|
||||
$alg eq 'ED448' ? ( 1, 512 ) :
|
||||
( );
|
||||
}
|
||||
|
||||
sub list_dnssec_algorithms
|
||||
{
|
||||
return ("RSASHA1", "RSASHA256", "RSAMD5", "DSA", "DH", "HMAC-MD5",
|
||||
"NSEC3RSASHA1", "NSEC3DSA", "ECDSAP256SHA256", "ECDSAP384SHA384", "ED25519", "ED448");
|
||||
"NSEC3RSASHA1", "NSEC3DSA", "ECDSAP256SHA256", "ECDSAP384SHA384");
|
||||
}
|
||||
|
||||
# get_keys_dir(&zone|&zone-name)
|
||||
@@ -3647,7 +3648,7 @@ while($tries++ < 10) {
|
||||
$out = &backquote_logged(
|
||||
"cd ".quotemeta($dir)." && ".
|
||||
"$config{'signzone'} -o ".quotemeta($dom).
|
||||
($alg =~ /^(NSEC3|RSASHA256|RSASHA512|ECCGOST|ECDSAP256SHA256|ECDSAP384SHA384|ED25519|ED448)/ ? " -3 - -u" : "").
|
||||
($alg =~ /^(NSEC3|RSASHA256|RSASHA512|ECCGOST|ECDSAP256SHA256|ECDSAP384SHA384)/ ? " -3 - -u" : "").
|
||||
" -f ".quotemeta($signed)." ".
|
||||
quotemeta($chrootfn)." 2>&1");
|
||||
last if (!$?);
|
||||
@@ -3719,11 +3720,11 @@ my ($z, $recs, $bump) = @_;
|
||||
|
||||
# Check if zones are managed by dnssec-tools
|
||||
my $dom = $z->{'members'} ? $z->{'values'}->[0] : $z->{'name'};
|
||||
|
||||
# If zone is managed through dnssec-tools use zonesigner for resigning the zone
|
||||
|
||||
# If zone is managed through dnssec-tools use zonesigner for resigning the zone
|
||||
if (&check_if_dnssec_tools_managed($dom)) {
|
||||
# Do the signing
|
||||
my $zonefile = &get_zone_file($z);
|
||||
my $zonefile = &get_zone_file($z);
|
||||
my $krfile = "$zonefile".".krf";
|
||||
|
||||
&lock_file(&make_chroot($zonefile));
|
||||
@@ -3905,21 +3906,21 @@ return \%rv;
|
||||
}
|
||||
|
||||
sub get_dnssectools_config
|
||||
{
|
||||
{
|
||||
&lock_file($config{'dnssectools_conf'});
|
||||
my $lref = &read_file_lines($config{'dnssectools_conf'});
|
||||
my @rv;
|
||||
my $lnum = 0;
|
||||
my $lref = &read_file_lines($config{'dnssectools_conf'});
|
||||
my @rv;
|
||||
my $lnum = 0;
|
||||
foreach my $line (@$lref) {
|
||||
my ($n, $v) = split(/\s+/, $line, 2);
|
||||
my ($n, $v) = split(/\s+/, $line, 2);
|
||||
# Do basic sanity checking
|
||||
$v =~ /(\S+)/;
|
||||
$v = $1;
|
||||
if ($n) {
|
||||
push(@rv, { 'name' => $n, 'value' => $v, 'line' => $lnum });
|
||||
}
|
||||
}
|
||||
$lnum++;
|
||||
}
|
||||
}
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dnssectools_conf'});
|
||||
return \@rv;
|
||||
@@ -3934,7 +3935,7 @@ sub save_dnssectools_directive
|
||||
|
||||
&lock_file($config{'dnssectools_conf'});
|
||||
my $lref = &read_file_lines($config{'dnssectools_conf'});
|
||||
|
||||
|
||||
foreach my $n (keys %$nv) {
|
||||
my $old = &find($n, $conf);
|
||||
if ($old) {
|
||||
@@ -3958,14 +3959,14 @@ sub list_dnssec_dne
|
||||
}
|
||||
|
||||
# list_dnssec_dshash()
|
||||
# return a list containing the different DS record hash types
|
||||
# return a list containing the different DS record hash types
|
||||
sub list_dnssec_dshash
|
||||
{
|
||||
return ("SHA1", "SHA256");
|
||||
return ("SHA1", "SHA256");
|
||||
}
|
||||
|
||||
# schedule_dnssec_cronjob()
|
||||
# schedule a cron job to handle periodic resign operations
|
||||
# schedule a cron job to handle periodic resign operations
|
||||
sub schedule_dnssec_cronjob
|
||||
{
|
||||
my $job;
|
||||
@@ -3998,7 +3999,7 @@ sub schedule_dnssec_cronjob
|
||||
&unlock_file($module_config_file);
|
||||
}
|
||||
|
||||
# dt_sign_zone(zone, nsec3)
|
||||
# dt_sign_zone(zone, nsec3)
|
||||
# Replaces a zone's file with one containing signed records.
|
||||
sub dt_sign_zone
|
||||
{
|
||||
@@ -4037,9 +4038,9 @@ sub dt_sign_zone
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($z, $recs[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
©_source_dest($z_chroot, $usz);
|
||||
©_source_dest($z_chroot, $usz);
|
||||
|
||||
$cmd = "$zonesigner $nsec3param".
|
||||
" -genkeys ".
|
||||
@@ -4081,13 +4082,13 @@ sub dt_sign_zone
|
||||
|
||||
rollrec_unlock();
|
||||
&unlock_file($z_chroot);
|
||||
|
||||
|
||||
&dt_rollerd_restart();
|
||||
&restart_bind();
|
||||
return undef;
|
||||
}
|
||||
|
||||
# dt_resign_zone(zone-name, zonefile, krfile, threshold)
|
||||
# dt_resign_zone(zone-name, zonefile, krfile, threshold)
|
||||
# Replaces a zone's file with one containing signed records.
|
||||
sub dt_resign_zone
|
||||
{
|
||||
@@ -4108,7 +4109,7 @@ sub dt_resign_zone
|
||||
rollrec_lock();
|
||||
|
||||
# Remove DNSSEC records and save the unsigned zone file
|
||||
@recs = &read_zone_file($z, $d);
|
||||
@recs = &read_zone_file($z, $d);
|
||||
my $tools = &have_dnssec_tools_support();
|
||||
for(my $i=$#recs; $i>=0; $i--) {
|
||||
if ($recs[$i]->{'type'} eq 'NSEC' ||
|
||||
@@ -4117,12 +4118,12 @@ sub dt_resign_zone
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($z, $recs[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
©_source_dest($z_chroot, $usz);
|
||||
©_source_dest($z_chroot, $usz);
|
||||
|
||||
if ($t > 0) {
|
||||
$threshold = "-threshold ".quotemeta("-$t"."d"." ");
|
||||
$threshold = "-threshold ".quotemeta("-$t"."d"." ");
|
||||
}
|
||||
|
||||
$cmd = "$zonesigner -verbose -verbose".
|
||||
@@ -4145,7 +4146,7 @@ sub dt_resign_zone
|
||||
}
|
||||
|
||||
# dt_zskroll_zone(zone-name)
|
||||
# Initiates a zsk rollover operation for the zone
|
||||
# Initiates a zsk rollover operation for the zone
|
||||
sub dt_zskroll_zone
|
||||
{
|
||||
my ($d) = @_;
|
||||
@@ -4158,7 +4159,7 @@ sub dt_zskroll_zone
|
||||
}
|
||||
|
||||
# dt_kskroll_zone(zone-name)
|
||||
# Initiates a ksk rollover operation for the zone
|
||||
# Initiates a ksk rollover operation for the zone
|
||||
sub dt_kskroll_zone
|
||||
{
|
||||
my ($d) = @_;
|
||||
@@ -4171,7 +4172,7 @@ sub dt_kskroll_zone
|
||||
}
|
||||
|
||||
# dt_notify_parentzone(zone-name)
|
||||
# Notifies rollerd that the new DS record has been published in the parent zone
|
||||
# Notifies rollerd that the new DS record has been published in the parent zone
|
||||
sub dt_notify_parentzone
|
||||
{
|
||||
my ($d) = @_;
|
||||
@@ -4184,7 +4185,7 @@ sub dt_notify_parentzone
|
||||
}
|
||||
|
||||
# dt_rollerd_restart()
|
||||
# Restart the rollerd daemon
|
||||
# Restart the rollerd daemon
|
||||
sub dt_rollerd_restart
|
||||
{
|
||||
my $rollerd;
|
||||
@@ -4196,7 +4197,7 @@ sub dt_rollerd_restart
|
||||
return $text{'dt_zone_enocmd'};
|
||||
}
|
||||
rollmgr_halt();
|
||||
$r = $config{"dnssectools_rollrec"};
|
||||
$r = $config{"dnssectools_rollrec"};
|
||||
$cmd = "$rollerd -rrfile ".quotemeta($r);
|
||||
&execute_command($cmd);
|
||||
return undef;
|
||||
@@ -4224,9 +4225,9 @@ sub dt_genkrf
|
||||
# Identify if this is a zsk or a ksk
|
||||
$key->{$f} =~ /(K\Q$dom\E\.\+\d+\+\d+)/;
|
||||
if ($key->{'ksk'}) {
|
||||
$kskcur = $1;
|
||||
$kskcur = $1;
|
||||
} else {
|
||||
$zskcur = $1;
|
||||
$zskcur = $1;
|
||||
}
|
||||
©_source_dest($key->{$f}, $keydir);
|
||||
&unlink_file($key->{$f});
|
||||
@@ -4237,7 +4238,7 @@ sub dt_genkrf
|
||||
return &text('dt_zone_enokey', $dom);
|
||||
}
|
||||
|
||||
# Remove the older dsset file
|
||||
# Remove the older dsset file
|
||||
if ($oldkeydir) {
|
||||
&unlink_file($oldkeydir."/"."dsset-".$dom.".");
|
||||
}
|
||||
@@ -4263,7 +4264,7 @@ sub dt_genkrf
|
||||
|
||||
|
||||
# dt_delete_dnssec_state(&zone)
|
||||
# Delete all DNSSEC-Tools meta-data for a given zone
|
||||
# Delete all DNSSEC-Tools meta-data for a given zone
|
||||
sub dt_delete_dnssec_state
|
||||
{
|
||||
my ($zone) = @_;
|
||||
@@ -4313,14 +4314,14 @@ sub dt_delete_dnssec_state
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($z, $recs[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
&bump_soa_record($z, \@recs);
|
||||
|
||||
|
||||
&unlock_file($z_chroot);
|
||||
rollrec_unlock();
|
||||
|
||||
&dt_rollerd_restart();
|
||||
&dt_rollerd_restart();
|
||||
&restart_bind();
|
||||
} else {
|
||||
# Just delete the dsset- file
|
||||
@@ -4487,3 +4488,4 @@ return $r;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ $access{'defaults'} || &error($text{'trusted_ecannot'});
|
||||
my $conf = &get_config();
|
||||
my $options = &find("options", $conf);
|
||||
my $mems = $options->{'members'};
|
||||
my @dlv = &find("dnssec-lookaside", $mems);
|
||||
my $tkeys = &find("trusted-keys", $conf);
|
||||
$tkeys ||= { 'members' => [ ] };
|
||||
|
||||
@@ -37,6 +38,33 @@ if (&supports_dnssec_client() == 2) {
|
||||
$text{'default'}, undef);
|
||||
}
|
||||
|
||||
# Trusted DLVs (obsolete)
|
||||
if (@dlv) {
|
||||
my @dtable = ( );
|
||||
my $i = 0;
|
||||
foreach my $d (@dlv, { 'values' => [ '.' ] }) {
|
||||
my $dlv = $d->{'values'}->[0];
|
||||
$dlv = "" if ($dlv eq ".");
|
||||
push(@dtable, [
|
||||
&ui_opt_textbox("anchor_$i", $d->{'values'}->[2],
|
||||
30, $text{'trusted_none'}),
|
||||
&ui_opt_textbox("dlv_$i", $dlv, 20,
|
||||
$text{'trusted_root'}) ]);
|
||||
$i++;
|
||||
}
|
||||
print &ui_table_row($text{'trusted_dlvs'},
|
||||
&ui_radio("dlv_auto",
|
||||
@dlv == 0 ? 2 :
|
||||
@dlv == 1 && $dlv[0]->{'values'}->[0] eq 'auto' ? 1 : 0,
|
||||
[ [ 1, $text{'trusted_dlvs1'} ],
|
||||
[ 2, $text{'trusted_dlvs2'} ],
|
||||
[ 0, $text{'trusted_dlvs0'} ] ])."<br>\n".
|
||||
&ui_columns_table([ $text{'trusted_anchor'},
|
||||
$text{'trusted_dlv'} ],
|
||||
undef,
|
||||
\@dtable), 3);
|
||||
}
|
||||
|
||||
# Trusted keys
|
||||
if (@{$tkeys->{'members'}}) {
|
||||
my @ktable = ( );
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
soa_style=1
|
||||
named_path=/usr/sbin/named
|
||||
named_conf=/etc/bind/named.conf
|
||||
show_list=1
|
||||
records_order=0
|
||||
max_zones=50
|
||||
rev_def=0
|
||||
support_aaaa=1
|
||||
allow_comments=0
|
||||
allow_wild=1
|
||||
allow_long=0
|
||||
master_ttl=1
|
||||
whois_cmd=whois
|
||||
short_names=0
|
||||
updserial_def=0
|
||||
updserial_on=1
|
||||
updserial_man=1
|
||||
ndc_cmd=ndc
|
||||
forwardzonefilename_format=ZONE.hosts
|
||||
reversezonefilename_format=ZONE.rev
|
||||
rev_must=0
|
||||
ipv6_mode=1
|
||||
allow_underscore=1
|
||||
by_view=0
|
||||
confirm_zone=1
|
||||
confirm_rec=0
|
||||
no_chroot=0
|
||||
relative_paths=0
|
||||
rndc_cmd=rndc
|
||||
pid_file=/var/run/named/named.pid
|
||||
zones_file=/etc/bind/named.conf.local
|
||||
master_dir=/var/lib/bind
|
||||
slave_dir=/var/lib/bind
|
||||
no_pid_chroot=0
|
||||
soa_start=0
|
||||
rndc_conf=/etc/bind/rndc.conf
|
||||
rndcconf_cmd=rndc-confgen
|
||||
largezones=0
|
||||
checkzone=named-checkzone
|
||||
keygen=dnssec-keygen
|
||||
signzone=dnssec-signzone
|
||||
checkconf=named-checkconf
|
||||
other_slaves=1
|
||||
force_random=0
|
||||
spf_record=0
|
||||
dnssec_info=1
|
||||
start_cmd=systemctl start named.service
|
||||
stop_cmd=systemctl stop named.service
|
||||
restart_cmd=systemctl reload named.service
|
||||
dnssec_period=21
|
||||
@@ -1,50 +0,0 @@
|
||||
soa_style=1
|
||||
named_path=/usr/sbin/named
|
||||
named_conf=/etc/bind/named.conf
|
||||
show_list=1
|
||||
records_order=0
|
||||
max_zones=50
|
||||
rev_def=0
|
||||
support_aaaa=1
|
||||
allow_comments=0
|
||||
allow_wild=1
|
||||
allow_long=0
|
||||
master_ttl=1
|
||||
whois_cmd=whois
|
||||
short_names=0
|
||||
updserial_def=0
|
||||
updserial_on=1
|
||||
updserial_man=1
|
||||
ndc_cmd=ndc
|
||||
forwardzonefilename_format=ZONE.hosts
|
||||
reversezonefilename_format=ZONE.rev
|
||||
rev_must=0
|
||||
ipv6_mode=1
|
||||
allow_underscore=1
|
||||
by_view=0
|
||||
confirm_zone=1
|
||||
confirm_rec=0
|
||||
no_chroot=0
|
||||
relative_paths=0
|
||||
rndc_cmd=rndc
|
||||
pid_file=/var/run/named/named.pid
|
||||
zones_file=/etc/bind/named.conf.local
|
||||
master_dir=/var/lib/bind
|
||||
slave_dir=/var/lib/bind
|
||||
no_pid_chroot=0
|
||||
soa_start=0
|
||||
rndc_conf=/etc/bind/rndc.conf
|
||||
rndcconf_cmd=rndc-confgen
|
||||
largezones=0
|
||||
checkzone=named-checkzone
|
||||
keygen=dnssec-keygen
|
||||
signzone=dnssec-signzone
|
||||
checkconf=named-checkconf
|
||||
other_slaves=1
|
||||
force_random=0
|
||||
spf_record=0
|
||||
dnssec_info=1
|
||||
start_cmd=systemctl start bind9.service
|
||||
stop_cmd=systemctl stop bind9.service
|
||||
restart_cmd=systemctl reload bind9.service
|
||||
dnssec_period=21
|
||||
@@ -1,50 +0,0 @@
|
||||
soa_style=1
|
||||
named_path=/usr/sbin/named
|
||||
named_conf=/etc/bind/named.conf
|
||||
show_list=1
|
||||
records_order=0
|
||||
max_zones=50
|
||||
rev_def=0
|
||||
support_aaaa=1
|
||||
allow_comments=0
|
||||
allow_wild=1
|
||||
allow_long=0
|
||||
master_ttl=1
|
||||
whois_cmd=whois
|
||||
short_names=0
|
||||
updserial_def=0
|
||||
updserial_on=1
|
||||
updserial_man=1
|
||||
ndc_cmd=ndc
|
||||
forwardzonefilename_format=ZONE.hosts
|
||||
reversezonefilename_format=ZONE.rev
|
||||
rev_must=0
|
||||
ipv6_mode=1
|
||||
allow_underscore=1
|
||||
by_view=0
|
||||
confirm_zone=1
|
||||
confirm_rec=0
|
||||
no_chroot=0
|
||||
relative_paths=0
|
||||
rndc_cmd=rndc
|
||||
pid_file=/var/run/named/named.pid
|
||||
zones_file=/etc/bind/named.conf.local
|
||||
master_dir=/var/lib/bind
|
||||
slave_dir=/var/lib/bind
|
||||
no_pid_chroot=0
|
||||
soa_start=0
|
||||
rndc_conf=/etc/bind/rndc.conf
|
||||
rndcconf_cmd=rndc-confgen
|
||||
largezones=0
|
||||
checkzone=named-checkzone
|
||||
keygen=dnssec-keygen
|
||||
signzone=dnssec-signzone
|
||||
checkconf=named-checkconf
|
||||
other_slaves=1
|
||||
force_random=0
|
||||
spf_record=0
|
||||
dnssec_info=1
|
||||
start_cmd=systemctl start named.service
|
||||
stop_cmd=systemctl stop named.service
|
||||
restart_cmd=systemctl reload named.service
|
||||
dnssec_period=21
|
||||
@@ -40,7 +40,6 @@ if (@keyrecs) {
|
||||
my $kt = $key->{'ksk'} ? 'ksk' : 'zone';
|
||||
my ($keyrec) = grep { $_->{'values'}->[0] ==
|
||||
($key->{'ksk'} ? 257 : 256) } @keyrecs;
|
||||
next if (!$keyrec);
|
||||
my $keyline = format_dnssec_public_key(
|
||||
join(" ", $keyrec->{'name'}, $keyrec->{'class'},
|
||||
$keyrec->{'type'}, @{$keyrec->{'values'}}));
|
||||
@@ -68,28 +67,8 @@ if (@keyrecs) {
|
||||
my $ds = &get_ds_record($zone);
|
||||
if ($ds) {
|
||||
print $text{'zonekey_ds'},"<br>\n";
|
||||
# Split DS records in string into a list
|
||||
my @ds = split(/\s(?=\S+\.\s+\d+\s+IN\s+DS\s+\d+\s+
|
||||
\d+\s+\d+\s+[0-9A-Fa-f]{16,})/x, $ds);
|
||||
print &ui_textarea("ds", join("\n", @ds), 2, 80, "off", 0,
|
||||
print &ui_textarea("ds", join("\n".$desc, split(/$desc/, $ds)), 2, 80, "off", 0,
|
||||
"readonly style='width:90%'"),"<br>\n";
|
||||
print &ui_columns_start([
|
||||
$text{'zonekey_ds_keytag'},
|
||||
$text{'zonekey_ds_alg'},
|
||||
$text{'zonekey_ds_type'},
|
||||
$text{'zonekey_ds_digest'},
|
||||
]);
|
||||
foreach my $r (@ds) {
|
||||
if ($r =~ /
|
||||
\bDS\s+(?<key_tag>\d+)\s+(?<algorithm>\d+)\s+
|
||||
(?<digest_type>\d+)\s+
|
||||
(?<digest>[0-9A-Fa-f]+)\b/x) {
|
||||
print &ui_columns_row([
|
||||
$+{key_tag}, $+{algorithm},
|
||||
$+{digest_type}, $+{digest}]);
|
||||
}
|
||||
}
|
||||
print &ui_columns_end();
|
||||
}
|
||||
|
||||
# Offer to disable
|
||||
|
||||
@@ -68,7 +68,7 @@ my $chroot = &get_chroot() || "";
|
||||
&restart_links().'<br>'.
|
||||
&help_search_link("bind", "doc", "google"), undef, undef,
|
||||
&text($chroot eq "/" || !$chroot ? 'index_version' : 'index_chroot',
|
||||
&get_bind_version(), "<tt>$chroot</tt>"));
|
||||
$bind_version, "<tt>$chroot</tt>"));
|
||||
|
||||
# If the named.conf file does not exist, offer to create it
|
||||
if ($need_create) {
|
||||
|
||||
@@ -1282,10 +1282,6 @@ zonekey_private=Private key details :
|
||||
zonekey_privatefile=Private key file : $1
|
||||
zonekey_algorithm=DNSSEC algorithm : $1
|
||||
zonekey_ds=DS record for parent zone :
|
||||
zonekey_ds_keytag=Key tag
|
||||
zonekey_ds_alg=Algorithm
|
||||
zonekey_ds_type=Digest type
|
||||
zonekey_ds_digest=Digest string
|
||||
zonekey_expandksk=Show public and private key-signing-key details ..
|
||||
zonekey_expandzone=Show public and private zone-key details ..
|
||||
zonekey_noprivate=However, Webmin could not find the private key associated with the zone, and so will not be able to re-sign it.
|
||||
|
||||
@@ -930,8 +930,7 @@ else {
|
||||
# All one one line
|
||||
my @rv;
|
||||
foreach my $v (@{$r->{'values'}}) {
|
||||
push(@rv, $v =~ /\s|;/ || $r->{'type'} eq 'TXT' ?
|
||||
"\"$v\"" : $v);
|
||||
push(@rv, $v =~ /\s|;/ ? "\"$v\"" : $v);
|
||||
}
|
||||
return join(" ", @rv);
|
||||
}
|
||||
|
||||
@@ -666,8 +666,8 @@ else {
|
||||
&expandall_ip6($ofwdrec->{'values'}->[0]) &&
|
||||
$fulloldvalue0 eq $ofwdrec->{'name'}) {
|
||||
# Updating the forward record
|
||||
&before_editing($ofwdconf);
|
||||
&before_editing($fwdconf);
|
||||
&before_editing($ofwdfile);
|
||||
&before_editing($fwdfile);
|
||||
&lock_file(&make_chroot($ofwdfile));
|
||||
&lock_file(&make_chroot($fwdfile));
|
||||
my @ofrecs = &read_zone_file($ofwdfile, $ofwdconf->{'name'});
|
||||
@@ -702,8 +702,8 @@ else {
|
||||
&bump_soa_record($ofwdfile, \@ofrecs);
|
||||
&sign_dnssec_zone_if_key($ofwdconf, \@ofrecs);
|
||||
}
|
||||
&after_editing($fwdconf);
|
||||
&after_editing($ofwdconf);
|
||||
&after_editing($fwdfile);
|
||||
&after_editing($ofwdfile);
|
||||
}
|
||||
}
|
||||
&bump_soa_record($in{'file'}, \@recs);
|
||||
|
||||
@@ -24,6 +24,46 @@ if (&supports_dnssec_client() == 2) {
|
||||
&save_choice("dnssec-validation", $options, 1);
|
||||
}
|
||||
|
||||
# Save DLV zones
|
||||
if (defined($in{'dlv_auto'})) {
|
||||
my @dlvs = ( );
|
||||
if ($in{'dlv_auto'} == 1) {
|
||||
# Automatic mode
|
||||
push(@dlvs, { 'name' => 'dnssec-lookaside',
|
||||
'values' => [ 'auto' ] });
|
||||
}
|
||||
elsif ($in{'dlv_auto'} == 0) {
|
||||
# Listed zones
|
||||
my $dlv;
|
||||
for(my $i=0; defined($in{"anchor_$i"}); $i++) {
|
||||
if (!$in{"anchor_${i}_def"}) {
|
||||
$in{"anchor_$i"} =~ /^[a-z0-9\.\-\_]+$/ ||
|
||||
&error(&text('trusted_eanchor', $i+1));
|
||||
$in{"anchor_$i"} .= "."
|
||||
if ($in{"anchor_$i"} !~ /\.$/);
|
||||
if ($in{"dlv_${i}_def"}) {
|
||||
$dlv = ".";
|
||||
}
|
||||
else {
|
||||
$in{"dlv_$i"} =~ /^[a-z0-9\.\-\_]+$/ ||
|
||||
&error(&text('trusted_edlv', $i+1));
|
||||
$dlv = $in{"dlv_$i"};
|
||||
$dlv .= "." if ($dlv !~ /\.$/);
|
||||
}
|
||||
push(@dlvs, { 'name' => 'dnssec-lookaside',
|
||||
'values' => [
|
||||
$dlv, "trust-anchor",
|
||||
$in{"anchor_$i"} ] });
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif ($in{'dlv_auto'} == 2) {
|
||||
# None
|
||||
@dlvs = ( );
|
||||
}
|
||||
&save_directive($options, "dnssec-lookaside", \@dlvs, 1);
|
||||
}
|
||||
|
||||
# Save trusted keys
|
||||
if (defined($in{'zone_0'})) {
|
||||
my @keys = ( );
|
||||
|
||||
@@ -1,23 +1,11 @@
|
||||
index_title=Змінити мову і тему
|
||||
index_dateformatglobal2=Глобальний формат дат .. $1
|
||||
index_dateformatset=Особистий вибір..
|
||||
index_lang=Мова
|
||||
index_langglobal2=Глобальна мова .. $1 ($2)
|
||||
index_title=Перемінити мову і тему
|
||||
index_langset=персональний вибір ..
|
||||
index_themeglobal=Глобальна тема ($1)
|
||||
index_themeset=Персональний вибір ..
|
||||
index_locale=Локаль
|
||||
index_locale2=Формат дат
|
||||
index_localeglobal2=Глобальна локаль .. $1 ($2)
|
||||
index_localeset=Особистий вибір..
|
||||
index_overlay=Накладання теми
|
||||
index_overlaydef=Немає - використовувати теми за замовчуванням
|
||||
index_pass=Пароль облікового запису Webmin
|
||||
index_passagain=Повторно введіть пароль
|
||||
index_passleave=Не змінювати
|
||||
index_passset=Установити в..
|
||||
index_ok=Зберегти зміни
|
||||
index_theme=Тема
|
||||
index_themedef=Стара тема Webmin
|
||||
index_desc2=Цей модуль може бути використаний для зміни $1, тільки для вашого облікового запису Webmin.
|
||||
index_d3=1$, 2$ і 3$
|
||||
@@ -27,17 +15,13 @@ index_dlang=мова, на якому відображаються модулі
|
||||
index_dtheme=тема, що контролює зовнішній вигляд Webmin
|
||||
index_dpass=пароль використовуваний для реєстрації
|
||||
|
||||
change_title=Зміна налаштувань
|
||||
change_user=Зміна налаштувань облікового запису Webmin ..
|
||||
change_title=Змінюю настроювання
|
||||
change_user=Змінюю настроювання облікового запису Webmin ..
|
||||
change_done=.. готово
|
||||
change_restart=Перезапускаю Webmin ..
|
||||
change_eoverlay=Ви не можете вибрати накладання теми, якщо також не вибрано тему інтерфейсу користувача
|
||||
change_eoverlay2=Вибране накладання теми несумісне з вибраною темою інтерфейсу користувача
|
||||
change_epass=Новий пароль недійсний: $1
|
||||
change_epass2=Нові паролі не збігаються
|
||||
change_redirect=Перехід у головне меню ..
|
||||
change_ecolon=Ваш пароль не може містити символ :
|
||||
acl_lang=Чи можна змінити мову?
|
||||
acl_locale=Чи можна змінити локаль?
|
||||
|
||||
acl_lang=Може змінювати мова?
|
||||
acl_theme=Може змінювати тему?
|
||||
acl_pass=Чи можна змінити пароль (якщо встановлено в Webmin)?
|
||||
acl_pass=Може змінювати пароль (коли зазначений у Webmin)?
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
desc_uk=Зміна мови та теми
|
||||
longdesc_uk=Дозволяє поточному користувачеві Webmin змінювати мову, тему та, можливо, пароль.
|
||||
name_uk=Зміна мови та теми
|
||||
|
||||
103
config-lib.pl
103
config-lib.pl
@@ -407,50 +407,89 @@ if (-r $module_prefs_conf) {
|
||||
}
|
||||
}
|
||||
|
||||
# hidden_config_cparams(&in)
|
||||
# Return HTML for hidden inputs for params to pass back to whatever linked
|
||||
# to config.cgi
|
||||
sub hidden_config_cparams
|
||||
# read_config_params(url, insert-prefix)
|
||||
# Parses the URL parameters from a URL, and returns a hash ref
|
||||
sub read_config_params
|
||||
{
|
||||
my ($in) = @_;
|
||||
my $rv = "";
|
||||
foreach my $k (keys %$in) {
|
||||
next if ($k !~ /^(_cparam_|_cscript)/);
|
||||
foreach my $v (split(/\0/, $in{$k})) {
|
||||
$rv .= &ui_hidden($k, $v)."\n";
|
||||
}
|
||||
my ($url, $pref) = @_;
|
||||
# Extract the part of the URL after the question mark
|
||||
my ($query_string) = $url =~ /\?(.*)$/;
|
||||
my %params;
|
||||
|
||||
# Split the query string on '&' to get the individual key-value pairs
|
||||
for my $pair (split(/&/, $query_string)) {
|
||||
my ($key, $value) = split /=/, $pair;
|
||||
$value = &un_urlize($value);
|
||||
my $param_prefix = $pref ? "_cparam-" : "";
|
||||
$params{"$param_prefix$key"} = $value;
|
||||
}
|
||||
return $rv;
|
||||
return \%params;
|
||||
}
|
||||
|
||||
# link_config_cparams(module, &in, [add-cparam])
|
||||
# Returns a URL to link to after the config is saved
|
||||
sub link_config_cparams
|
||||
# print_config_posted_params()
|
||||
# Prints hidden fields for all the parameters in the referrer URL
|
||||
sub print_config_posted_params
|
||||
{
|
||||
my ($m, $in, $keep) = @_;
|
||||
my $url = "/$m/";
|
||||
my @w;
|
||||
if ($in->{'_cscript'}) {
|
||||
if ($keep) {
|
||||
push(@w, "_cscript=".&urlize($in->{'_cscript'}));
|
||||
}
|
||||
else {
|
||||
$url .= $in->{'_cscript'};
|
||||
my $env_referer = $ENV{'HTTP_REFERER'};
|
||||
my $params_referer = &read_config_params($env_referer);
|
||||
my $params_url = &read_config_params($ENV{'REQUEST_URI'});
|
||||
my $params = { %$params_referer, %$params_url };
|
||||
my @params;
|
||||
if (%$params) {
|
||||
foreach my $param (keys %{$params}) {
|
||||
my $param_prefix = "_cparam-";
|
||||
if ($param =~ /section|module|mode|section_next|nnext|nprev|xnavigation/ ||
|
||||
!$params->{$param} || $env_referer =~ /$param_prefix$param=/ ||
|
||||
$params_url =~ /$param_prefix$param=/ || &indexof($param, @params) > -1) {
|
||||
next;
|
||||
}
|
||||
$param_prefix = "" if ($param =~ /^$param_prefix/);
|
||||
push(@params, $param);
|
||||
print &ui_hidden("$param_prefix$param", $params->{$param}), "\n";
|
||||
}
|
||||
}
|
||||
foreach my $k (keys %$in) {
|
||||
if ($k =~ /^_cparam_(.*)$/) {
|
||||
$n = $1;
|
||||
foreach my $v (split(/\0/, $in{$k})) {
|
||||
push(@w, &urlize($keep ? $k : $n)."=".&urlize($v));
|
||||
}
|
||||
|
||||
# get_query_config_posted_params(url)
|
||||
# Returns the currently posted parameters from the URL
|
||||
sub get_query_config_posted_params
|
||||
{
|
||||
my ($url) = @_;
|
||||
foreach my $key (keys %in) {
|
||||
if ($key =~ /^_cparam-/) {
|
||||
my $value = $in{$key};
|
||||
if ($value) {
|
||||
my $delimiter = ($url =~ /\?/) ? "&" : '?';
|
||||
$url .= "$delimiter$key=$value"
|
||||
}
|
||||
}
|
||||
}
|
||||
if (@w) {
|
||||
$url .= "?".join("&", @w);
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
||||
# get_config_posted_params(target)
|
||||
# Returns the referrer URL with all the parameters from the POST request
|
||||
sub get_config_posted_params
|
||||
{
|
||||
my ($target) = @_;
|
||||
my $param_prefix = "_cparam-";
|
||||
my $env_referer = $ENV{'HTTP_REFERER'};
|
||||
my $env_referer_prefixed = ($env_referer =~ /$param_prefix/ ? 1 : 0);
|
||||
my $params_referer = &read_config_params($env_referer, !$env_referer_prefixed);
|
||||
my %keys = (%in, %$params_referer);
|
||||
foreach my $key (keys %keys) {
|
||||
if ($key =~ /^$param_prefix(.*)/) {
|
||||
my $k = $1;
|
||||
my $v = $keys{$key};
|
||||
if ($v && $target !~ /$k=/) {
|
||||
my $delimiter = ($target =~ /\?/) ? "&" : '?';
|
||||
$v = &urlize($v) if ($v =~ /^\//);
|
||||
$target .= "$delimiter$k=$v"
|
||||
}
|
||||
}
|
||||
}
|
||||
return $target;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ else {
|
||||
$text{'config_title'}, "", $help, 0, 1);
|
||||
|
||||
print &ui_form_start("config_save.cgi", "post");
|
||||
print &hidden_config_cparams(\%in);
|
||||
print &ui_hidden("module", $m),"\n";
|
||||
&print_config_posted_params();
|
||||
print &ui_table_start(&text('config_header', $module_info{'desc'}),
|
||||
"width=100%", 2);
|
||||
&read_file("$config_directory/$m/config", \%newconfig);
|
||||
@@ -52,5 +52,5 @@ if (!$func) {
|
||||
print &ui_table_end();
|
||||
print &ui_form_end([ [ "save", $text{'save'} ] ]);
|
||||
|
||||
&ui_print_footer(&link_config_cparams($m, \%in), $text{'index'});
|
||||
&ui_print_footer(&get_config_posted_params("/$m/"), $text{'index'});
|
||||
|
||||
|
||||
@@ -56,5 +56,5 @@ if (&foreign_check("webmin")) {
|
||||
}
|
||||
|
||||
&webmin_log("_config_", undef, undef, \%in, $m);
|
||||
&redirect(&link_config_cparams($m, \%in));
|
||||
&redirect(&get_config_posted_params("/$m/"));
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
line1=Параметри,11
|
||||
refresh_days=Період оновлення списку модулів CPAN (днів),0,5
|
||||
line1=Параметри, що настроюються,11
|
||||
refresh_days=Період відновлення списку модулів CPAN (днів),0,5
|
||||
line2=Системні параметри,11
|
||||
packages=Список модулів Perl CPAN,0
|
||||
cpan=Базовий URL модулів CPAN,0
|
||||
|
||||
@@ -21,7 +21,7 @@ if ($in{'source'} == 0) {
|
||||
if (!$in{'local'})
|
||||
{ &install_error($text{'download_elocal'}); }
|
||||
if (!-r $in{'local'})
|
||||
{ &install_error(&text('download_elocal2', &html_escape($in{'local'}))); }
|
||||
{ &install_error(&text('download_elocal2', $in{'local'})); }
|
||||
$source = $in{'local'};
|
||||
@pfile = ( $in{'local'} );
|
||||
$need_unlink = 0;
|
||||
@@ -91,9 +91,8 @@ elsif ($in{'source'} == 3) {
|
||||
$i = 0;
|
||||
@fallback = ( );
|
||||
foreach $yum (@cpanyum) {
|
||||
print &text('download_yum',
|
||||
"<tt>".&html_escape($cpan[$i])."</tt>",
|
||||
"<tt>".&html_escape($yum->{'package'})."</tt>"),"<br>\n";
|
||||
print &text('download_yum', "<tt>$cpan[$i]</tt>",
|
||||
"<tt>$yum->{'package'}</tt>"),"<br>\n";
|
||||
print "<ul>\n";
|
||||
@got = &software::update_system_install(
|
||||
$yum->{'package'});
|
||||
@@ -155,8 +154,7 @@ elsif ($in{'source'} == 3) {
|
||||
|
||||
# Fail if any modules are missing from CPAN
|
||||
for($i=0; $i<@cpan; $i++) {
|
||||
push(@missing, "<tt>".&html_escape($cpan[$i])."</tt>")
|
||||
if (!$source[$i]);
|
||||
push(@missing, "<tt>$cpan[$i]</tt>") if (!$source[$i]);
|
||||
}
|
||||
|
||||
if ($in{'missingok'}) {
|
||||
@@ -169,12 +167,11 @@ elsif ($in{'source'} == 3) {
|
||||
}
|
||||
}
|
||||
@cpan || &install_error(&text('download_ecpan',
|
||||
&html_escape(join(" ", @missing))));
|
||||
join(" ", @missing)));
|
||||
}
|
||||
elsif (@missing) {
|
||||
# Fail due to missing modules
|
||||
&install_error(&text('download_ecpan',
|
||||
&html_escape(join(" ", @missing))));
|
||||
&install_error(&text('download_ecpan', join(" ", @missing)));
|
||||
}
|
||||
$source = join("<br>", @source);
|
||||
|
||||
@@ -195,16 +192,14 @@ elsif ($in{'source'} == 3) {
|
||||
&ftp_download($host, $file, $pfile, \$error,
|
||||
\&progress_callback);
|
||||
}
|
||||
else {
|
||||
&install_error(&text('download_eurl',&html_escape($m)));
|
||||
}
|
||||
else { &install_error(&text('download_eurl', $m)); }
|
||||
&install_error($error) if ($error);
|
||||
push(@pfile, $pfile);
|
||||
}
|
||||
$need_unlink = 1;
|
||||
}
|
||||
else {
|
||||
&error("Unknown source mode ".&html_escape($in{'source'}));
|
||||
&error("Unknown source mode $in{'source'}");
|
||||
}
|
||||
|
||||
# Check if the file looks like a perl module
|
||||
@@ -292,7 +287,7 @@ foreach $d (@dirs) {
|
||||
close(MAKEFILE);
|
||||
push(@allreqs, @prereqs);
|
||||
}
|
||||
&unlink_file($mtemp);
|
||||
system("rm -rf $mtemp");
|
||||
|
||||
# Work out which pre-requesites are missing
|
||||
@allreqs = &unique(@allreqs);
|
||||
|
||||
44
cpan/lang/uk
44
cpan/lang/uk
@@ -5,36 +5,16 @@ index_version=Версія
|
||||
index_desc=Опис
|
||||
index_date=Дата установки
|
||||
index_installmsg=Виберіть модуль Perl для зборки й установки на вашій системі.
|
||||
index_allmods2=Відсутні модулі, які використовуються Webmin
|
||||
index_cpan=З CPAN за назвою
|
||||
index_refresh=Обновити список модулів CPAN
|
||||
index_local=З локального файлу
|
||||
index_uploaded=Із завантаженого файлу
|
||||
index_delete=Видалення модулів
|
||||
index_ezone=Схоже, що Perl використовується спільно з глобальною зоною, тому тут неможливо встановити модулі. Натомість вони повинні бути встановлені в глобальній зоні.
|
||||
index_forcecpan=Завжди встановлюйте останню версію з сирцевих кодів
|
||||
index_user=$1 (використовується $2)
|
||||
index_wantmods=Модулі для встановлення
|
||||
index_tabsuggest=Пропоновані модулі
|
||||
index_ftp=По URL ftp чи http
|
||||
index_installok=Установити
|
||||
index_return=списку модулів
|
||||
index_none=У вашій системі не знайдено встановлених модулів Perl.
|
||||
index_pversion=Perl версії $1
|
||||
index_recs=Наступні модулі Perl рекомендуються для встановлення Webmin:
|
||||
index_recsgot=Встановлено всі наступні модулі Perl, рекомендовані Webmin: $1
|
||||
index_recsok=Встановити вибрані модулі
|
||||
index_tabinstall=Встановити модуль
|
||||
index_tabmods=Існуючі модулі
|
||||
|
||||
delete_efile=Недійсний файл пакета!
|
||||
|
||||
download_act=Дії по установці
|
||||
download_args=Аргументи <tt>Makefile.PL</tt>
|
||||
download_cont=Продовжити установку
|
||||
download_ebuild=Для створення одного або кількох модулів Perl потрібно $1, але цей модуль Perl не встановлено.
|
||||
download_err=Не удалося установити модуль
|
||||
download_ecpangz=URL-адреса $1 не є списком модулів CPAN. Перевірте конфігурацію модуля.
|
||||
download_elocal=Не зазначений локальний файл
|
||||
download_elocal2='$1' не існує
|
||||
download_eupload=Ваш браузер не підтримує завантаження файлів
|
||||
@@ -42,26 +22,21 @@ download_eurl=Незрозумілий URL '$1'
|
||||
download_edir=Невірний каталог $1
|
||||
download_etar=Не удалося розпакувати файл tar : $1
|
||||
download_emod=Невірний модуль Perl
|
||||
download_fallback=Деякі модулі не вдалося встановити з пакетів, натомість намагаються встановити з сирцевих кодів..
|
||||
download_title=Установка модуля
|
||||
download_header=Настроювання установки модуля Perl
|
||||
download_mod=Назва модуля
|
||||
download_ver=Версія
|
||||
download_act=Дії по установці
|
||||
download_args=Аргументи <tt>Makefile.PL</tt>
|
||||
download_cont=Продовжити установку
|
||||
download_yum=Встановлення модуля Perl $1 з пакета $2
|
||||
download_src=Джерело
|
||||
download_m=Тільки зібрати
|
||||
download_mt=Зібрати і перевірити
|
||||
download_mi=Зібрати й установити
|
||||
download_missing=Відсутні модулі $1
|
||||
download_missingok=У CPAN відсутні модулі
|
||||
download_mods=Назви модулів
|
||||
download_mti=Зібрати, перевірити й установити
|
||||
download_cont=Продовжити установку
|
||||
download_epackages=Невірний URL модулів CPAN
|
||||
download_ecpan=Модуль $1 у списку модулів CPAN не виявлений
|
||||
download_eisperl=Модуль $1 є частиною стандартного дистрибутива Perl
|
||||
download_args=Аргументи <tt>Makefile.PL</tt>
|
||||
download_envs=Перемінні оточення <tt>Makefile.PL</tt>
|
||||
download_name=Ім'я
|
||||
download_value=Значення
|
||||
@@ -73,7 +48,6 @@ install_make=Зборка модуля
|
||||
install_test=Перевірка модуля
|
||||
install_install=Установка модуля
|
||||
install_loop=У висновку виявлене можливе зациклення!
|
||||
install_needunlink=Ви можете спробувати встановити знову, повернувшись на попередню сторінку та вибравши інші параметри. В іншому випадку <a href='$1'>клацніть тут, щоб видалити тимчасові файли пакунків</a>, щоб заощадити місце на диску.
|
||||
install_done_0=Зборка $1 успішно довершена.
|
||||
install_done_1=Зборка і перевірка $1 успішно довершена.
|
||||
install_done_2=Зборка й установка $1 успішно довершена.
|
||||
@@ -89,33 +63,19 @@ cpan_search=Знайти модулі з назвою
|
||||
cpan_match=Модулі, що збігаються з $1 ..
|
||||
cpan_none=Збігів не виявлено.
|
||||
|
||||
uninstall_debian=Модуль буде видалено шляхом видалення пакета $1 Debian.
|
||||
|
||||
edit_title=Інформація про модуль
|
||||
edit_header=Інформація про модуль
|
||||
edit_mod=Назва модуля
|
||||
edit_debian=Пакет Debian $1
|
||||
edit_desc=Опис
|
||||
edit_date=Дата установки
|
||||
edit_subs=Підмодулі
|
||||
edit_header2=Документація модуля
|
||||
edit_file=Файл модуля
|
||||
edit_manual=Ручне встановлення модуля Perl
|
||||
edit_method=Встановлено з
|
||||
edit_none=Немає
|
||||
edit_return=інформації про модуль
|
||||
edit_rpm=Пакет RPM $1
|
||||
edit_uninstall=Видалити модель і підмодулі
|
||||
edit_upgrade=Модуль оновлення від CPAN
|
||||
|
||||
uninstall_title=Видалення модуля
|
||||
uninstall_err=Не вдалося видалити модуль
|
||||
uninstall_rpm=Модуль буде видалено шляхом видалення пакета $1 RPM.
|
||||
uninstall_rusure=Видалити модуль Perl $1 ? Будуть вилучені наступні файли :
|
||||
uninstall_rusure2=Видалити модуль Perl $1 і підмодулі $2 ?<br>Будуть вилучені наступні файли :
|
||||
uninstall_ok=Видалити
|
||||
uninstalls_emod=$1 не вдалося: $2
|
||||
uninstalls_enone=Не вибрано
|
||||
uninstalls_err=Не вдалося видалити модулі
|
||||
uninstalls_rusure=Ви впевнені, що бажаєте видалити вибрані модулі $1? $2 підмодулі та $3 файли буде видалено.
|
||||
uninstalls_title=Видалення модулів
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
line1=Параметри,11
|
||||
refresh_days=Період оновлення списку модулів CPAN (днів),0,5
|
||||
line2=Системні параметри,11
|
||||
packages=Список модулів Perl CPAN,0
|
||||
cpan=Базовий URL модулів CPAN,0
|
||||
|
||||
@@ -1567,31 +1567,28 @@ if (!$gconfig{'tempdelete_days'}) {
|
||||
print STDERR "Temp file clearing is disabled\n";
|
||||
return;
|
||||
}
|
||||
|
||||
# Cleanup files in /tmp/.webmin
|
||||
if ($gconfig{'tempdir'} && !$gconfig{'tempdirdelete'}) {
|
||||
print STDERR "Temp file clearing is not done for the custom directory $gconfig{'tempdir'}\n";
|
||||
}
|
||||
else {
|
||||
local $tempdir = &transname();
|
||||
$tempdir =~ s/\/([^\/]+)$//;
|
||||
if (!$tempdir || $tempdir eq "/") {
|
||||
$tempdir = "/tmp/.webmin";
|
||||
}
|
||||
|
||||
local $cutoff = time() - $gconfig{'tempdelete_days'}*24*60*60;
|
||||
opendir(DIR, $tempdir);
|
||||
foreach my $f (readdir(DIR)) {
|
||||
next if ($f eq "." || $f eq "..");
|
||||
local @st = lstat("$tempdir/$f");
|
||||
if ($st[9] < $cutoff) {
|
||||
&unlink_file("$tempdir/$f");
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
return;
|
||||
}
|
||||
|
||||
# Delete stale lock files
|
||||
local $tempdir = &transname();
|
||||
$tempdir =~ s/\/([^\/]+)$//;
|
||||
if (!$tempdir || $tempdir eq "/") {
|
||||
$tempdir = "/tmp/.webmin";
|
||||
}
|
||||
|
||||
local $cutoff = time() - $gconfig{'tempdelete_days'}*24*60*60;
|
||||
opendir(DIR, $tempdir);
|
||||
foreach my $f (readdir(DIR)) {
|
||||
next if ($f eq "." || $f eq "..");
|
||||
local @st = lstat("$tempdir/$f");
|
||||
if ($st[9] < $cutoff) {
|
||||
&unlink_file("$tempdir/$f");
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
|
||||
my $lockdir = $var_directory."/locks";
|
||||
opendir(DIR, $lockdir);
|
||||
foreach my $f (readdir(DIR)) {
|
||||
@@ -1603,11 +1600,6 @@ foreach my $f (readdir(DIR)) {
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
|
||||
# Cleanup old websockets
|
||||
foreach (&get_miniserv_websockets_modules()) {
|
||||
&cleanup_miniserv_websockets(undef, $_);
|
||||
}
|
||||
}
|
||||
|
||||
=head2 list_cron_files()
|
||||
|
||||
@@ -22,12 +22,12 @@ else {
|
||||
# Check if this user is allowed to execute cron jobs
|
||||
if (&supports_users()) {
|
||||
&can_use_cron($in{'user'}) ||
|
||||
&error(&text('save_eallow', &html_escape($in{'user'})));
|
||||
&error(&text('save_eallow', $in{'user'}));
|
||||
}
|
||||
|
||||
# Check module access control
|
||||
&can_edit_user(\%access, $in{'user'}) ||
|
||||
&error(&text('save_ecannot', &html_escape($in{'user'})));
|
||||
&error(&text('save_ecannot', $in{'user'}));
|
||||
|
||||
@files = &unique((map { $_->{'file'} } @jobs),
|
||||
"$config{'cron_dir'}/$in{'user'}");
|
||||
@@ -42,7 +42,7 @@ if (&supports_users()) {
|
||||
&error($text{'save_euser'});
|
||||
}
|
||||
if (!defined(getpwnam($in{'user'}))) {
|
||||
&error(&text('save_euser2', &html_escape($in{'user'})));
|
||||
&error(&text('save_euser2', $in{'user'}));
|
||||
}
|
||||
}
|
||||
&parse_times_input($job, \%in);
|
||||
|
||||
@@ -8,7 +8,7 @@ lease_refresh=Seconds between refreshing lease list,3,Never
|
||||
show_ip=Show IP addresses for hosts?,1,1-Yes,0-No
|
||||
show_mac=Show MAC addresses for hosts?,1,1-Yes,0-No
|
||||
group_name=Show group names as,1,1-<tt>domain-name</tt> option,0-Name or member count,2-Description
|
||||
desc_name=Show descriptions instead of names?,1,1-Description only,0-Name only,2-Both name and description
|
||||
desc_name=Show other object descriptions instead of names?,1,1-Yes,0-No
|
||||
display_max=Maximum number of subnets and hosts to display,3,Unlimited
|
||||
add_file=Add new subnets, hosts and groups to file,3,Main configuration file
|
||||
line2=System configuration,11
|
||||
|
||||
@@ -7,6 +7,7 @@ lease_refresh=Segons entre refrescs de la llista de préstecs,3,Mai
|
||||
show_ip=Mostra les adreces IP dels hosts,1,1-Sí,0-No
|
||||
show_mac=Mostra les adreces MAC dels hosts,1,1-Sí,0-No
|
||||
group_name=Mostra els noms de grup com,1,1-Opció <tt>domini-nom</tt>,0-Nom o recompte de membres,2-Descripció
|
||||
desc_name=Mostra les descripcions dels altres objectes en lloc dels noms,1,1-Sí,0-No
|
||||
display_max=Nombre màxim de subxarxes i hosts a mostrar,3,Il·limitat
|
||||
add_file=Afegeix subxarxes noves, hosts i grups al fitxer,3,Fitxer de configuració principal
|
||||
line2=Configuració del sistema,11
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=Zobrazit dobu pronájmu v,1,0-GMT,1-Lokálním čase
|
||||
show_ip=Zobrazit IP adresy pro hosty?,1,1-ano,0-ne
|
||||
show_mac=Zobrazit MAC adresy hostů?,1,1-Ano,0-Ne
|
||||
group_name=Zobrazení jmen skupin jako,1,1-<tt>doménová jména</tt>,0-Jména nebo počtu členů,2-Popisu
|
||||
desc_name=Ukázat popisy objektů místo jejich názvů?,1,1-Ano,0-Ne
|
||||
display_max=Počet maximálně zobrazených podsítí a hostů,3,Bezomezení
|
||||
line2=Konfigurace systému,11
|
||||
dhcpd_conf=Konfigurační soubor DHCP serveru,0
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=Vis lease tider i,1,0-GMT,1-Lokal tid
|
||||
show_ip=Vis IP adresser for hosts?,1,1-Ja,0-Nej
|
||||
show_mac=Vis MAC adresser for hosts?,1,1-Ja,0-Nej
|
||||
group_name=Vis gruppenavne som,1,1-<tt>domæne-navne</tt> indstilling,0-Navn eller medlemsantal,2-Beskrivelse
|
||||
desc_name=Vis andre objektbeskrivelse istedet for navne?,1,1-Ja,0-Nej
|
||||
display_max=Maksimalt antal hosts og subnet der skal vises,3,Ubegrænset
|
||||
line2=Systemkonfiguration
|
||||
dhcpd_conf=DHCP server config fil,0
|
||||
|
||||
@@ -7,6 +7,7 @@ lease_refresh=Sekunden zwischen dem Aktualisieren der Leasing-Liste,3,Niemals
|
||||
show_ip=Zeige IP-Adressen für Hosts?,1,1-Ja,0-Nein
|
||||
show_mac=Zeige MAC-Adressen für Hosts?,1,1-Ja,0-Nein
|
||||
group_name=Zeige Gruppennamen als,1,1-<tt>domain-name</tt> Option,0-Name oder Mitglied,2-Beschreibung
|
||||
desc_name=Zeige andere Objektbeschreibungen statt Namen?,1,1-Ja,0-Nein
|
||||
display_max=Maximale Anzahl an Subnetzen und Hosts zum Anzeigen,3,Unbegrenzt
|
||||
add_file=Füge neue Subnetze, Hosts und Gruppen in einer Datei hinzu,3,Haupt-Konfigurationsdatei
|
||||
line2=Systemkonfiguration,11
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=نمايش زمان انتساب داده شدهها براساس,1,
|
||||
show_ip=آيا نشانيهاي IP براي ميزبانها نشان داده شود؟,1,1-بله,0-خير
|
||||
show_mac=آيا نشانيهاي MACبراي ميزبانها نشان داده شود؟,1,1-بله,0-خير
|
||||
group_name=نشاندادن نامهاي گروه بهصورت,1,1- گزينه<tt> دامنه/نام </tt>,0-نام يا تعداد اعضا,2-شرح
|
||||
desc_name=آيا ساير شرحها به جاي نام نشان داده شود؟,1,1-بله,0-خير
|
||||
display_max=حداکثر تعداد زيرشبکهها و ميزبانها جهت نمايش,3,نامحدود
|
||||
line2=پيکربندي سيستم,11
|
||||
dhcpd_conf=پرونده پيکربندي کارساز DHCP,0
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=Afficher les temps de bail en,1,0-GMT,1-Temps local
|
||||
show_ip=Montrer les adresses IP des postes ?,1,1-Oui,0-Non
|
||||
show_mac=Montrer les adresses MAC des postes ?,1,1-Oui,0-Non
|
||||
group_name=Montrer les noms de groupe comme,1,1-Nom de domaine,0-Nom ou numero de membre
|
||||
desc_name=Montrer les descriptions au lieu des noms ?,1,1-Oui,0-Non
|
||||
display_max=Nombre maximum de sous-reseaux et de postes a afficher,3,Illimite
|
||||
line2=Configuration du systeme,11
|
||||
dhcpd_conf=Fichier de configuration du serveur DHCP,0
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=リース時間の表示形式,1,0-GMT,1-ローカル時間
|
||||
show_ip=ホストのIPアドレスを表示しますか?,1,1-はい,0-いいえ
|
||||
show_mac=ホストのMACアドレスを表示しますか?,1,1-はい,0-いいえ
|
||||
group_name=グループ名の表示方法,1,1-<tt>ドメイン-名</tt> オプション,0-名前またはメンバー数
|
||||
desc_name=名称の替わりにオブジェクトの説明を表示しますか?,1,1-はい,0-いいえ
|
||||
display_max=サブネットとホストの表示する最大数,3,無制限
|
||||
line2=システム設定,11
|
||||
dhcpd_conf=DHCPサーバ 設定ファイル,0
|
||||
|
||||
@@ -7,6 +7,7 @@ lease_refresh=Seconden tussen verversen van lease lijst,3,Nooit
|
||||
show_ip=Laat IP adressen zien voor hosts?,1,1-Ja,0-Nee
|
||||
show_mac=Laat MAC adressen zien voor hosts?,1,1-Ja,0-Nee
|
||||
group_name=Laat groep namen zien als,1,1-<tt>domein-naam</tt> optie,0-Naam of Lid van,2-Omschrijving
|
||||
desc_name=Laat andere object omschrijvingen zien in plaats van namen?,1,1-Ja,0-Nee
|
||||
display_max=Maximum aantal subnets en hosts om te laten zien,3,Ongelimiteerd
|
||||
add_file=Toevoegen nieuwe subnetten, host en groepen aan file,3,Hoofd configuratie file
|
||||
line2=Systeem configuratie,11
|
||||
|
||||
@@ -7,6 +7,7 @@ lease_refresh=Sekunder mellom oppfrisking av liste med leieavtaler,3,Aldri
|
||||
show_ip=Vis IP adresser for verter?,1,1-Ja,0-Nei
|
||||
show_mac=Vis MAC adresser for verter?,1,1-Ja,0-Nei
|
||||
group_name=Vis gruppenavn som,1,1-<tt>domene-navn</tt> alternativ,0-Navn eller antall medlemmer,2-Beskrivelse
|
||||
desc_name=Vis andre objektbeskrivelser i stedet for navn,1,1-Ja,0-Nei
|
||||
display_max=Maks antall subnett og verter som skal vises,3,Ubegrenset
|
||||
add_file=Legg til nye subnett, verter og grupper i filen,3,Hoved konfigurasjonsfil
|
||||
line2=System konfigurasjon,11
|
||||
|
||||
@@ -7,6 +7,7 @@ lease_refresh=Sekund pomiędzy odświeżaniem listy dzierżawy,3,Nigdy
|
||||
show_ip=Wyświetlać adres IP hostów?,1,1-Tak,0-Nie
|
||||
show_mac=Wyświetlać adres MAC hostów?,1,1-Tak,0-Nie
|
||||
group_name=Wyświetl nazwy grupy jako,1,1-<tt>domain-name</tt>,0-Ilość lub nazwa użytkowników,2-Opis
|
||||
desc_name=Wyświetlać inne opisy obiektów zamiast nazw,1,1-Tak,0-Nie
|
||||
display_max=Maksymalna liczba wyświetlanych podsieci i hostów,3,Nieograniczona
|
||||
add_file=Dodaj nowe podsieci, hosty i grupy do pliku,3,Główny plik konfiguracyjny
|
||||
line2=Opcje systemowe,11
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=Display leases times in,1,0-GMT,1-Local time
|
||||
show_ip=Mostrar endereço IP para computadores?,1,1-Sim,0-Não
|
||||
show_mac=Mostrar endereço MAC para computadores?,1,1-Sim,0-Não
|
||||
group_name=Mostrar nomes de grupo como,1,1-<tt>nome de-domínio</tt>,0-Nome ou membro
|
||||
desc_name=Mostrar descrição de objetos ao invés de nomes?,1,1-Sim,0-Não
|
||||
display_max=Número máximo de subredes e computadores a serem
|
||||
add_file=Acrescentar novas subredes, hosts e grupos para arquivo,3,Arquivo principal de configuração
|
||||
line2=Configuração do sistema,11
|
||||
|
||||
@@ -6,6 +6,7 @@ lease_tz=Zobraziť časy pridelených adries v,1,0-GMT,1-Lokálnom čase
|
||||
show_ip=Zobraziť IP adresy pre počítače?,1,1-Áno,0-Nie
|
||||
show_mac=Zobraziť MAC adresy pre počítače?,1,1-Áno,0-Nie
|
||||
group_name=Zobraziť skupinové mená ako ,1,1-<tt>doménové mená</tt> ,0-Meno alebo počet členov,2-Popis
|
||||
desc_name=Ukázať popisy objektov namiesto ich názvov?,1,1-Áno,0-Nie
|
||||
display_max=Maximálny počet subnetov a hostiteľov pre zobrazenie,3,Bez limitu
|
||||
line2=Systémové nastavenia,11
|
||||
dhcpd_conf=Konfiguračný súbor DHCP servera,0
|
||||
|
||||
@@ -211,18 +211,14 @@ foreach $u (@subn) {
|
||||
push(@sicons, $i = "images/shared.gif");
|
||||
push(@checkboxids, $u->{'index'});
|
||||
}
|
||||
if ($config{'desc_name'} == 0) {
|
||||
$t = $u->{'values'}->[0];
|
||||
}
|
||||
elsif ($config{'desc_name'} == 1) {
|
||||
$t = $u->{'comment'} || $u->{'values'}->[0];
|
||||
if ($config{'desc_name'} && $u->{'comment'}) {
|
||||
push(@utitles, $t = &html_escape($u->{'comment'}));
|
||||
}
|
||||
else {
|
||||
$t = $u->{'values'}->[0].($u->{'comment'} ? " ($u->{'comment'})" : "");
|
||||
push(@utitles, $t = &html_escape($u->{'values'}->[0]));
|
||||
}
|
||||
push(@utitles, &html_escape($t));
|
||||
push(@uslinks, $l); # so that ordering is preserved
|
||||
push(@ustitles, &html_escape($t));
|
||||
push(@ustitles, $t);
|
||||
push(@usicons, $i);
|
||||
}
|
||||
@checkboxes = map { &ui_checkbox("d", $_) } @checkboxids;
|
||||
@@ -340,16 +336,12 @@ foreach $h (@host) {
|
||||
(defined($subnet{$h}) ? "&uidx=$subnet{$h}" : "").
|
||||
(defined($shared{$h}) ? "&sidx=$shared{$h}" : "") :
|
||||
undef);
|
||||
if ($config{'desc_name'} == 0) {
|
||||
$t = $h->{'values'}->[0];
|
||||
}
|
||||
elsif ($config{'desc_name'} == 1) {
|
||||
$t = $h->{'comment'} || $h->{'values'}->[0];
|
||||
if ($config{'desc_name'} && $h->{'comment'}) {
|
||||
push(@htitles, &html_escape($h->{'comment'}));
|
||||
}
|
||||
else {
|
||||
$t = $h->{'values'}->[0].($h->{'comment'} ? " ($h->{'comment'})" : "");
|
||||
push(@htitles, &html_escape($h->{'values'}->[0]));
|
||||
}
|
||||
push(@htitles, &html_escape($t));
|
||||
if ($config{'show_ip'}) {
|
||||
$fv = &fixedaddr($h);
|
||||
$htitles[$#htitles] .= "<br>".$fv if ($fv);
|
||||
@@ -597,13 +589,7 @@ sub host_table
|
||||
{
|
||||
local ($i, $h, $parent);
|
||||
local @tds = ( "width=5" );
|
||||
my $hascmt;
|
||||
for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
$hascmt++ if ($_[4]->[$i] =~ /\(.*\)/);
|
||||
}
|
||||
print &ui_columns_start([ "",
|
||||
$text{'index_hostgroup'},
|
||||
$hascmt ? ( $text{'index_comment'} ) : ( ),
|
||||
print &ui_columns_start([ "", $text{'index_hostgroup'},
|
||||
$text{'index_parent'}, $text{'index_hardware'},
|
||||
$text{'index_nameip'} ], 100, 0, \@tds);
|
||||
for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
@@ -619,10 +605,6 @@ for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
$firstcol .= $text{'index_group'}." ";
|
||||
$sp = "\ \ ";
|
||||
}
|
||||
my $cmt;
|
||||
if ($_[4]->[$i] =~ s/\s+\((.*)\)//) {
|
||||
$cmt = $1;
|
||||
}
|
||||
if ($_[3]->[$i]) {
|
||||
$firstcol .= &ui_link($_[3]->[$i], $_[4]->[$i]);
|
||||
}
|
||||
@@ -630,7 +612,6 @@ for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
$firstcol .= $_[4]->[$i];
|
||||
}
|
||||
push(@cols, $firstcol);
|
||||
push(@cols, $cmt) if ($hascmt);
|
||||
|
||||
if ($par{$h}->{'name'} eq "group") {
|
||||
$par_type = $text{'index_togroup'};
|
||||
@@ -659,14 +640,7 @@ sub net_table
|
||||
{
|
||||
local ($i, $n);
|
||||
local @tds = ( "width=5" );
|
||||
my $hascmt;
|
||||
for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
$hascmt++ if ($_[4]->[$i] =~ /\(.*\)/);
|
||||
}
|
||||
print &ui_columns_start([ "",
|
||||
$text{'index_net'},
|
||||
$hascmt ? ( $text{'index_comment'} ) : ( ),
|
||||
$text{'index_netmask'},
|
||||
print &ui_columns_start([ "", $text{'index_net'}, $text{'index_netmask'},
|
||||
$text{'index_desc'}, $text{'index_parent'} ], 100,
|
||||
0, \@tds);
|
||||
for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
@@ -679,10 +653,6 @@ for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
else {
|
||||
$sp = "\ \ ";
|
||||
}
|
||||
my $cmt;
|
||||
if ($_[4]->[$i] =~ s/\s+\((.*)\)//) {
|
||||
$cmt = $1;
|
||||
}
|
||||
if ($_[3]->[$i]) {
|
||||
$first .= &ui_link($_[3]->[$i],$_[4]->[$i]);
|
||||
}
|
||||
@@ -690,7 +660,6 @@ for ($i = $_[1]; $i < $_[2]; $i++) {
|
||||
$first .= $_[4]->[$i];
|
||||
}
|
||||
push(@cols, $first);
|
||||
push(@cols, $cmt) if ($hascmt);
|
||||
push(@cols, $_[3]->[$i] ? &netmask($n) : "");
|
||||
push(@cols, $n->{'comment'});
|
||||
push(@cols, $par{$n} ?
|
||||
|
||||
@@ -14,7 +14,6 @@ index_memb=$1 members
|
||||
index_hst=Hosts and Host Groups
|
||||
index_nohst=No hosts or groups have been defined.
|
||||
index_hostgroup=Host/Group
|
||||
index_comment=Description
|
||||
index_parent=Parent
|
||||
index_hardware=Hardware Address
|
||||
index_group=Group:
|
||||
|
||||
@@ -4,10 +4,7 @@ BEGIN { push(@INC, ".."); };
|
||||
use WebminCore;
|
||||
&init_config();
|
||||
|
||||
@supported_auths = ( "anonymous", "plain", "digest-md5", "cram-md5", "apop",
|
||||
"scram-sha-1", "scram-sha-256", "ntlm", "gss-spnego",
|
||||
"gssapi", "rpa", "otp", "skey", "external",
|
||||
"oauthbearer", "xoauth2" );
|
||||
@supported_auths = ( "anonymous", "plain", "digest-md5", "cram-md5", "apop" );
|
||||
@mail_envs = ( undef, "maildir:~/Maildir", "mbox:~/mail/:INBOX=/var/mail/%u",
|
||||
"maildir:~/Maildir:mbox:~/mail/" );
|
||||
|
||||
@@ -95,7 +92,7 @@ foreach (@lines) {
|
||||
}
|
||||
}
|
||||
elsif (/^(\s*)(#?)([a-z0-9\_]+)\s+=\s*(.*)/) {
|
||||
# A directive which may or may not be inside a section
|
||||
# A directive inside a section
|
||||
local $dir = { 'name' => $3,
|
||||
'value' => $4,
|
||||
'enabled' => !$2,
|
||||
@@ -376,9 +373,9 @@ else {
|
||||
}
|
||||
}
|
||||
splice(@$lref, $section->{'line'}, 0, @newlines);
|
||||
$section->{'eline'} = $section->{'line'} + scalar(@newlines) - 1;
|
||||
&renumber($conf, $section->{'eline'}, $section->{'file'},
|
||||
scalar(@newlines)-$oldlen);
|
||||
$section->{'eline'} = $section->{'line'} + scalar(@newlines) - 1;
|
||||
$section->{'file'} = $file;
|
||||
my $i = 1;
|
||||
foreach my $m (@{$section->{'members'}}) {
|
||||
@@ -391,17 +388,6 @@ foreach my $m (@{$section->{'members'}}) {
|
||||
}
|
||||
}
|
||||
|
||||
# delete_section(&conf, §ion)
|
||||
# Remove a section and all it's members from the config file
|
||||
sub delete_section
|
||||
{
|
||||
my ($conf, $section) = @_;
|
||||
my $lref = &read_file_lines($section->{'file'});
|
||||
my $len = $section->{'eline'} - $section->{'line'} + 1;
|
||||
splice(@$lref, $section->{'line'}, $len);
|
||||
&renumber($conf, $section->{'line'}, $section->{'file'}, -$len);
|
||||
}
|
||||
|
||||
# renumber(&conf, line, file, offset)
|
||||
sub renumber
|
||||
{
|
||||
|
||||
@@ -29,9 +29,9 @@ else {
|
||||
"auth", "default"));
|
||||
}
|
||||
print &ui_table_row($text{'login_mechs'},
|
||||
&ui_select("mechs", \@mechs,
|
||||
[ map { [ $_, $text{'login_'.$_} || uc($_) ] } @supported_auths ],
|
||||
4, 1, 1));
|
||||
&ui_select("mechs", \@mechs,
|
||||
[ map { [ $_, $text{'login_'.$_} ] } @supported_auths ],
|
||||
4, 1, 1));
|
||||
|
||||
print &ui_table_hr();
|
||||
|
||||
|
||||
@@ -10,11 +10,11 @@ print &ui_table_start($text{'mail_header'}, "width=100%", 4);
|
||||
|
||||
# Mail file location. Old versions used default_mail_env, new uses mail_location
|
||||
$envmode = 4;
|
||||
if (&find("default_mail_env", $conf, 2)) {
|
||||
$env = &find_value("default_mail_env", $conf);
|
||||
if (&find("mail_location", $conf, 2)) {
|
||||
$env = &find_value("mail_location", $conf);
|
||||
}
|
||||
else {
|
||||
$env = &find_value("mail_location", $conf);
|
||||
$env = &find_value("default_mail_env", $conf);
|
||||
}
|
||||
if ($env =~ s/:INDEX=([^:]+)//) {
|
||||
$index = $1;
|
||||
|
||||
@@ -92,11 +92,6 @@ login_plain=Plain-text
|
||||
login_digest-md5=Digest-MD5
|
||||
login_cram-md5=Cram-MD5
|
||||
login_apop=APOP
|
||||
login_otp=One time password
|
||||
login_skey=Security key
|
||||
login_oauthbearer=OAuth2 bearer authentication
|
||||
login_xoauth2=Google OAuth2 bearer authentication
|
||||
login_external=External SASL authentication
|
||||
login_userdb=Data source for users, homes and IDs
|
||||
login_passwd=Standard Unix user database
|
||||
login_passwdfile=Custom password file $1
|
||||
|
||||
@@ -31,11 +31,11 @@ if ($in{'controlmode'}) {
|
||||
$env .= ":CONTROL=".$in{'control'};
|
||||
}
|
||||
|
||||
if (&find("default_mail_env", $conf, 2)) {
|
||||
&save_directive($conf, "default_mail_env", $env eq "" ? undef : $env);
|
||||
if (&find("mail_location", $conf, 2)) {
|
||||
&save_directive($conf, "mail_location", $env eq "" ? undef : $env);
|
||||
}
|
||||
else {
|
||||
&save_directive($conf, "mail_location", $env eq "" ? undef : $env);
|
||||
&save_directive($conf, "default_mail_env", $env eq "" ? undef : $env);
|
||||
}
|
||||
|
||||
# Idle intervals
|
||||
|
||||
@@ -11,7 +11,6 @@ our (%in, %text);
|
||||
my $conf = &get_config();
|
||||
my ($def) = grep { $_->{'name'} eq 'Definition' } @$conf;
|
||||
$def || &error($text{'config_edef'});
|
||||
my ($DEF) = grep { $_->{'name'} eq 'DEFAULT' } @$conf;
|
||||
|
||||
&ui_print_header(undef, $text{'config_title'}, "");
|
||||
|
||||
@@ -37,52 +36,21 @@ my $logtarget = &find_value("logtarget", $def);
|
||||
my $mode = $logtarget eq "" ? "" :
|
||||
$logtarget =~ /^STDOUT|STDERR|SYSLOG$/ ? $logtarget : "file";
|
||||
print &ui_table_row($text{'config_logtarget'},
|
||||
&ui_radio_row('logtarget_def', $mode,
|
||||
[ [ "", [ $text{'config_default'} ] ],
|
||||
[ "STDOUT", [ "STDOUT" ] ],
|
||||
[ "STDERR", [ "STDERR" ] ],
|
||||
[ "SYSLOG", [ $text{'config_syslog'} ] ],
|
||||
[ "file", [ $text{'config_file'},
|
||||
&ui_radio("logtarget_def", $mode,
|
||||
[ [ "", $text{'config_default'}."<br>" ],
|
||||
[ "STDOUT", "STDOUT<br>" ],
|
||||
[ "STDERR", "STDERR<br>" ],
|
||||
[ "SYSLOG", $text{'config_syslog'}."<br>" ],
|
||||
[ "file", $text{'config_file'}." ".
|
||||
&ui_textbox("logtarget",
|
||||
$mode eq "file" ? $logtarget : "", 50) ] ]
|
||||
], 1));
|
||||
$mode eq "file" ? $logtarget : "", 50) ]
|
||||
]));
|
||||
|
||||
# Socket file
|
||||
my $socket = &find_value("socket", $def);
|
||||
print &ui_table_row($text{'config_socket'},
|
||||
&ui_opt_textbox("socket", $socket, 40, $text{'default'}));
|
||||
|
||||
# DB Purge Age
|
||||
if ($DEF) {
|
||||
my $dbpurgeage = &find_value("dbpurgeage", $DEF);
|
||||
my @dbpurgeages = (
|
||||
[ '', '' ],
|
||||
[ '900', $text{'config_dbpurgeage_15m'} ],
|
||||
[ '1800', $text{'config_dbpurgeage_30m'} ],
|
||||
[ '3600', $text{'config_dbpurgeage_1h'} ],
|
||||
[ '21600', $text{'config_dbpurgeage_6h'} ],
|
||||
[ '43200', $text{'config_dbpurgeage_12h'} ],
|
||||
[ '86400', $text{'config_dbpurgeage_1d'} ],
|
||||
[ '259200', $text{'config_dbpurgeage_3d'} ],
|
||||
[ '604800', $text{'config_dbpurgeage_1w'} ],
|
||||
[ '1209600', $text{'config_dbpurgeage_2w'} ],
|
||||
[ '2629800', $text{'config_dbpurgeage_1mo'} ] );
|
||||
|
||||
# Check of $dbpurgeage is in @dbpurgeages
|
||||
my $time_in_seconds = &time_to_seconds($dbpurgeage);
|
||||
my $dbpurgestd = grep { $_->[0] eq $time_in_seconds } @dbpurgeages;
|
||||
my $dbpurge_def = $time_in_seconds == 86400 ? 1 : $dbpurgestd ? 0 : 2;
|
||||
my $depurgeagelabeled = $dbpurge_def == 2 ? &seconds_to_time($dbpurgeage) : undef;
|
||||
print &ui_table_row($text{'config_dbpurgeage'},
|
||||
&ui_radio_row('dbpurgeage', $dbpurge_def,
|
||||
[ [ 1, [ $text{'config_dbpurgeagedef'} ] ],
|
||||
[ 0, [ $text{'config_dbpurgeagesel'},
|
||||
&ui_select("dbpurgeagesel", $time_in_seconds, \@dbpurgeages) ] ],
|
||||
[ 2, [ $text{'config_dbpurgeagecus'},
|
||||
&ui_textbox("dbpurgeagecus", $depurgeagelabeled, 15) ] ]
|
||||
]));
|
||||
}
|
||||
|
||||
print &ui_table_end();
|
||||
print &ui_form_end([ [ undef, $text{'save'} ] ]);
|
||||
|
||||
|
||||
@@ -30,15 +30,15 @@ print &ui_hidden("new", $in{'new'});
|
||||
print &ui_hidden("old", $in{'name'});
|
||||
print &ui_table_start($text{'jail_header'}, undef, 2);
|
||||
|
||||
# Jail name
|
||||
print &ui_table_row($text{'jail_name'},
|
||||
&ui_textbox("name", $jail->{'name'}, 30));
|
||||
|
||||
# Enabled or disabled?
|
||||
my $enabled = &find_value("enabled", $jail);
|
||||
print &ui_table_row($text{'jail_enabled'},
|
||||
&ui_yesno_radio("enabled", $enabled =~ /true|yes|1/i));
|
||||
|
||||
# Jail name
|
||||
print &ui_table_row($text{'jail_name'},
|
||||
&ui_textbox("name", $jail->{'name'}, 30));
|
||||
|
||||
# Filter to match
|
||||
my @filters = &list_filters();
|
||||
my $filter = &find_value("filter", $jail);
|
||||
@@ -49,22 +49,6 @@ print &ui_table_row($text{'jail_filter'},
|
||||
map { &filename_to_name($_->[0]->{'file'}) } @filters ],
|
||||
1, 0, $filter ? 1 : 0));
|
||||
|
||||
# Backend
|
||||
my $backend = &find_value("backend", $jail);
|
||||
print &ui_table_row($text{'jail_backend'},
|
||||
&ui_select("backend", $backend || "",
|
||||
[ [ "", "" ],
|
||||
[ "auto", $text{'jail_auto'} ],
|
||||
[ "systemd", $text{'jail_systemd'} ],
|
||||
[ "polling", $text{'jail_polling'} ],
|
||||
[ "gamin", $text{'jail_gamin'} ],
|
||||
[ "pyinotify", $text{'jail_pyinotify'} ] ]));
|
||||
|
||||
# Ports to monitor
|
||||
my $port = &find_value("port", $jail);
|
||||
print &ui_table_row($text{'jail_ports'},
|
||||
&ui_textbox("port", $port, 35));
|
||||
|
||||
# Actions to run
|
||||
my $actionlist = &find("action", $jail);
|
||||
my @actions = &list_actions();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user