Compare commits

..

1 Commits

Author SHA1 Message Date
iliajie
fd3e985cf8 Fix to work-around the bug with time offsets #552 2023-04-25 23:04:58 +03:00
2181 changed files with 8065 additions and 31456 deletions

221
.github/build/deb.sh vendored
View File

@@ -1,221 +0,0 @@
#!/usr/bin/env bash
#
# Copyright @iliajie <ilia@webmin.dev>
#
# Automatically builds and updates a repo metadata.
# Pulls latest changes from GitHub, detects release
# version based on what's available in the repo
#
# (Debian)
#
# Usage:
#
# # Pull and build production versions
# # of both Webmin and Usermin
# ./deb.sh
#
# # Pull and build devel versions
# # of both Webmin and Usermin
# ./deb.sh --devel
#
# # Pull and build production Webmin version 2.101, forcing
# # release version 3, displaying detailed output
# ./deb.sh webmin 2.101 3 --debug
#
# # Pull and build production Usermin version 2.000,
# # automatically setting release version to minimal
# ./deb.sh usermin 2.000
#
# shellcheck disable=SC1091
# Source build variables
source ./vars.sh || exit 1
# Source build init
source ./init.sh || exit 1
# Source general build functions
source ./funcs.sh || exit 1
# Build product func
build_prod() {
# Pack with English only in devel builds
local english_only=0
if [[ "'$*'" == *"--devel"* ]]; then
english_only=1
fi
# Always return back to root directory
cd "$root" || exit 1
# Define root
local ver=""
local prod=$1
root_prod="$root/$prod"
root_apt="$root_prod/deb"
# Print build actual date
date=$(get_current_date)
# Print opening header
echo "************************************************************************"
echo " build start date: $date "
echo " package format: DEB "
echo " product: $prod "
(make_prod_repos "$root_prod") &
spinner " package output version:"
# Pull main project first to get the latest tag
cd "$root_prod" || exit 1
cmd="git pull $verbosity_level"
eval "$cmd"
rs1=$?
# Clean and try again
if [ "$rs1" != "0" ]; then
cmd="git checkout \"*\" $verbosity_level && git clean -f -d $verbosity_level && git pull $verbosity_level"
eval "$cmd"
rs1=$?
fi
# Descend to theme dir
cd "authentic-theme" || exit 1
cmd="git pull $verbosity_level"
eval "$cmd"
rs2=$?
# Clean and try again
if [ "$rs2" != "0" ]; then
cmd="git checkout \"*\" $verbosity_level && git clean -f -d $verbosity_level && git pull $verbosity_level"
eval "$cmd"
rs2=$?
fi
if [ "$rs1" != "0" ] || [ "$rs2" != "0" ]; then
rs=1
else
rs=0
fi
# Build number
date_version=$(get_latest_commit_date_version)
# Handle other params
cd "$root_prod" || exit 1
if [[ "'$2'" != *"--"* ]]; then
ver=$2
fi
if [[ "'$3'" != *"--"* ]] && [[ -n "$3" ]]; then
rel=$3
relval="-$3"
else
rel=1
relval=""
fi
if [ -z "$ver" ]; then
ver=$(get_current_repo_tag)
fi
if [[ "'$*'" == *"--devel"* ]]; then
ver="$ver.$date_version"
# Set actual product version
echo "${ver}" >"version"
fi
printf "$ver-$rel\n"
echo "************************************************************************"
echo "Pulling latest changes.."
# We need to pull first to get the latest tag,
# so here we only report an error if any
postcmd $rs
echo
echo "Pre-clean up .."
# Make sure directories exist
make_dir "$root_repos/"
make_dir "$root_apt/"
make_dir "$root_prod/newkey/deb/"
make_dir "$root_prod/umodules/"
make_dir "$root_prod/minimal/"
make_dir "$root_prod/tarballs/"
# Re-create legacy link
rm -rf "$root/webadmin"
ln -s "$root/webmin" "$root/webadmin"
# Purge old files
purge_dir "$root_prod/newkey/deb"
purge_dir "$root_prod/umodules"
purge_dir "$root_prod/minimal"
purge_dir "$root_prod/tarballs"
if [ "$prod" != "" ]; then
# XXXX Need to check for
# product name exactly
rm -f "$root_repos/$prod-latest"*
fi
postcmd $?
echo
# Descend to project dir
cd "$root_prod" || exit 1
if [ "$english_only" = "1" ]; then
echo "Cleaning languages .."
cmd="./bin/language-manager --mode=clean --yes $verbosity_level_with_input"
eval "$cmd"
postcmd $?
echo
else
# Force restore build directory
if [ ! -f "lang/ja" ]; then
echo "Restoring languages .."
cmd="git checkout \"*\" $verbosity_level && git clean -f -d $verbosity_level && git pull $verbosity_level"
eval "$cmd"
postcmd $?
echo
fi
fi
echo "Pre-building package .."
eval "$cmd"
cmd="./makedist.pl \"${ver}${relval}\" $verbosity_level"
eval "$cmd"
postcmd $?
echo
echo "Building package .."
if [ "$relval" == "" ]; then
cmd="./makedebian.pl \"$ver\" $verbosity_level"
else
cmd="./makedebian.pl \"$ver\" \"$rel\" $verbosity_level"
fi
eval "$cmd"
postcmd $?
echo
cd "$root" || exit 1
echo "Preparing built files for upload .."
cmd="cp -f $root_prod/tarballs/${prod}-${ver}*\.tar.gz $root_repos/${prod}-latest.tar.gz $verbosity_level"
eval "$cmd"
cmd="echo $ver-$rel \($date\) > $root_repos/${prod}-latest.version $verbosity_level_to_file"
eval "$cmd"
cmd="find $root_apt -name ${prod}_${ver}${relval}*\.deb -exec mv '{}' $root_repos \; $verbosity_level"
eval "$cmd"
cmd="mv -f $root_repos/${prod}_${ver}${relval}*\.deb $root_repos/${prod}-latest.deb $verbosity_level"
eval "$cmd"
postcmd $?
}
if [ -n "$1" ] && [[ "'$1'" != *"--"* ]]; then
build_prod $@
cloud_upload_list_upload=("$root_repos/$1*")
cloud_upload cloud_upload_list_upload
cloud_repo_sign_and_update
else
build_prod webmin $@
build_prod usermin $@
cloud_upload_list_upload=("$root_repos/*")
cloud_upload cloud_upload_list_upload
cloud_repo_sign_and_update
fi

163
.github/build/funcs.sh vendored
View File

@@ -1,163 +0,0 @@
#!/usr/bin/env bash
#
# Copyright @iliajie <ilia@webmin.dev>
#
# General build functions
#
#
# Upload to cloud
# Usage:
# cloud_upload_list_delete=("$cloud_upload_ssh_dir/repodata")
# cloud_upload_list_upload=("$root_repos/*" "$root_repos/repodata")
# cloud_upload cloud_upload_list_upload cloud_upload_list_delete
cloud_upload() {
# Print new block only if definded
local ssh_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
if [ -n "$1" ]; then
echo
fi
# Delete files on remote if needed
if [ -n "$2" ]; then
echo "Deleting given files in $cloud_upload_ssh_host .."
local -n arr_del=$2
local err=0
for d in "${arr_del[@]}"; do
if [ -n "$d" ]; then
local cmd1="ssh $ssh_args $cloud_upload_ssh_user@$cloud_upload_ssh_host \"rm -rf $d\" $verbosity_level"
eval "$cmd1"
if [ "$?" != "0" ]; then
err=1
fi
fi
done
postcmd $err
echo
fi
# Upload files to remote
if [ -n "$1" ]; then
echo "Uploading built files to $cloud_upload_ssh_host .."
local -n arr_upl=$1
local err=0
for u in "${arr_upl[@]}"; do
if [ -n "$u" ]; then
local cmd2="scp $ssh_args -r $u $cloud_upload_ssh_user@$cloud_upload_ssh_host:$cloud_upload_ssh_dir/ $verbosity_level"
eval "$cmd2"
if [ "$?" != "0" ]; then
err=1
fi
fi
done
postcmd $err
echo
fi
}
# Sign and update repos metadata in remote
cloud_repo_sign_and_update() {
echo "Signing and updating repos metadata in $cloud_upload_ssh_host .."
local ssh_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
local remote_cmd="cd ~/.scripts && ./update-repo-packages-signature.bash $cloud_upload_gpg_passphrase"
local cmd1="ssh $ssh_args $cloud_upload_ssh_user@$cloud_upload_ssh_host \"$remote_cmd\" $verbosity_level"
eval "$cmd1"
postcmd $?
echo
}
# Post command func
postcmd() {
if [ "$1" != "0" ]; then
echo ".. failed"
exit 1
else
echo ".. done"
fi
}
# Get max number from array
max() {
local -n arr_nums=$1
IFS=$'\n'
echo "${arr_nums[*]}" | sort -nr | head -n1
}
# Mkdir and children dirs
make_dir() {
if [ ! -d "$1" ]; then
mkdir -p "$1"
fi
}
# Remove all content in dir
purge_dir() {
for file in "$1"/*; do
rm -rf "$file"
done
}
# Get latest tag version
get_current_repo_tag() {
cd "$root_prod" || exit 1
tg=$(git rev-list --tags --max-count=1)
ds=$(git describe --tags "$tg")
echo "$ds" | sed 's/v//'
}
# Get latest commit date
get_current_date() {
echo $(date +'%Y-%m-%d %H:%M:%S %z')
}
# Get latest commit date version
get_latest_commit_date_version() {
local theme_version
local prod_version
local max_prod
local highest_version
theme_version=$(git log -n1 --pretty='format:%cd' --date=format:'%Y%m%d%H%M')
cd "$root_prod" || exit 1
prod_version=$(git log -n1 --pretty='format:%cd' --date=format:'%Y%m%d%H%M')
max_prod=("$theme_version" "$prod_version")
highest_version=$(max max_prod)
echo "$highest_version"
}
# Pull project repo and theme
make_prod_repos() {
# Webmin or Usermin
if [ ! -d "$1" ]; then
local repo="webmin/$prod.git"
cmd="git clone https://github.com/$repo $verbosity_level"
eval "$cmd"
if [ ! -d "webmin" ]; then
cmd="git clone --depth 1 https://github.com/webmin/webmin $verbosity_level"
eval "$cmd"
fi
fi
# Theme
theme="authentic-theme"
if [ ! -d "$1/$theme" ]; then
cd "$1" || exit 1
local repo="webmin/$theme.git"
cmd="git clone --depth 1 https://github.com/$repo $verbosity_level"
eval "$cmd"
fi
}
spinner() {
local msg=$1
local pid=$!
local spin='-\|/'
local i=0
printf "$msg "
while kill -0 $pid 2>/dev/null; do
(( i = (i + 1) % 4 ))
# No spinner if not an interactive shell
if [ -n "$PS1" ]; then
printf '%c\b' "${spin:i:1}"
fi
sleep .1
done
}

29
.github/build/init.sh vendored
View File

@@ -1,29 +0,0 @@
#!/usr/bin/env bash
#
# Copyright @iliajie <ilia@webmin.dev>
#
# Build init
#
#
# Set up SSH dev keys
if [ -n "$WEBMIN_DEV__SSH_PRV_KEY" ] && [ -n "$WEBMIN_DEV__SSH_PUB_KEY" ]; then
# Generate new pair with right permissions
cmd="ssh-keygen -t rsa -q -f \"$HOME/.ssh/id_rsa\" -N \"\"$verbosity_level"
eval "$cmd"
# Import SSH keys from secrets to be able to connect to the remote host
echo "$WEBMIN_DEV__SSH_PRV_KEY" > "$HOME/.ssh/id_rsa"
echo "$WEBMIN_DEV__SSH_PUB_KEY" > "$HOME/.ssh/id_rsa.pub"
# Set up SSH production keys
elif [ -n "$WEBMIN_PROD__SSH_PRV_KEY" ] && [ -n "$WEBMIN_PROD__SSH_PUB_KEY" ]; then
# Generate new pair with right permissions
cmd="ssh-keygen -t rsa -q -f \"$HOME/.ssh/id_rsa\" -N \"\"$verbosity_level"
eval "$cmd"
# Import SSH keys from secrets to be able to connect to the remote host
echo "$WEBMIN_PROD__SSH_PRV_KEY" > "$HOME/.ssh/id_rsa"
echo "$WEBMIN_PROD__SSH_PUB_KEY" > "$HOME/.ssh/id_rsa.pub"
fi
# Create symlink to Perl
ln -fs /usr/bin/perl /usr/local/bin/perl

243
.github/build/rpm.sh vendored
View File

@@ -1,243 +0,0 @@
#!/usr/bin/env bash
#
# Copyright @iliajie <ilia@webmin.dev>
#
# Automatically builds and updates a repo metadata.
# Pulls latest changes from GitHub, detects release
# version based on what's available in the repo
#
# (RHEL)
#
# Usage:
#
# # Pull and build production versions
# # of both Webmin and Usermin
# ./rpm.sh
#
# # Pull and build devel versions
# # of both Webmin and Usermin
# ./rpm.sh --devel
#
# # Pull and build production Webmin version 2.101, forcing
# # release version 3, displaying detailed output
# ./rpm.sh webmin 2.101 3 --debug
#
# # Pull and build production Usermin version 2.000,
# # automatically setting release version to minimal
# ./rpm.sh usermin 2.000
#
# shellcheck disable=SC1091
# Source build variables
source ./vars.sh || exit 1
# Source build init
source ./init.sh || exit 1
# Source general build functions
source ./funcs.sh || exit 1
# Build product func
build_prod() {
# Pack with English only in devel builds
local english_only=0
if [[ "'$*'" == *"--devel"* ]]; then
english_only=1
fi
# Always return back to root directory
cd "$root" || exit 1
# Define root
local ver=""
local prod=$1
root_prod="$root/$prod"
# Print build actual date
date=$(get_current_date)
# Print opening header
echo "************************************************************************"
echo " build start date: $date "
echo " package format: RPM "
echo " product: $prod "
(make_prod_repos "$root_prod") &
spinner " package output version:"
# Pull main project first to get the latest tag
cd "$root_prod" || exit 1
cmd="git pull $verbosity_level"
eval "$cmd"
rs1=$?
# Clean and try again
if [ "$rs1" != "0" ]; then
cmd="git checkout \"*\" $verbosity_level && git clean -f -d $verbosity_level && git pull $verbosity_level"
eval "$cmd"
rs1=$?
fi
# Pull theme to theme dir
cd "authentic-theme" || exit 1
cmd="git pull $verbosity_level"
eval "$cmd"
rs2=$?
# Clean and try again
if [ "$rs2" != "0" ]; then
cmd="git checkout \"*\" $verbosity_level && git clean -f -d $verbosity_level && git pull $verbosity_level"
eval "$cmd"
rs2=$?
fi
if [ "$rs1" != "0" ] || [ "$rs2" != "0" ]; then
rs=1
else
rs=0
fi
# Build number
date_version=$(get_latest_commit_date_version)
# Handle other params
cd "$root_prod" || exit 1
if [[ "'$2'" != *"--"* ]]; then
ver=$2
fi
if [[ "'$3'" != *"--"* ]] && [[ -n "$3" ]]; then
rel=$3
else
rel=1
fi
if [ -z "$ver" ]; then
ver=$(get_current_repo_tag)
fi
if [[ "'$*'" == *"--devel"* ]]; then
ver="$ver.$date_version"
# Set actual product version
echo "${ver}" >"version"
fi
printf "$ver-$rel\n"
echo "************************************************************************"
echo "Pulling latest changes.."
# We need to pull first to get the latest tag,
# so here we only report an error if any
postcmd $rs
echo
echo "Pre-clean up .."
# Make sure directories exist
make_dir "$root_prod/newkey/rpm/"
make_dir "$root_prod/umodules/"
make_dir "$root_prod/minimal/"
make_dir "$root_prod/tarballs/"
make_dir "$root_build/BUILD/"
make_dir "$root_build/BUILDROOT/"
make_dir "$root_build/RPMS/"
make_dir "$root_build/SOURCES/"
make_dir "$root_build/SPECS/"
make_dir "$root_build/SRPMS/"
make_dir "$root_repos/"
# Re-create legacy link
rm -rf "$root/webadmin"
ln -s "$root/webmin" "$root/webadmin"
# Purge old files
purge_dir "$root_prod/newkey/rpm"
purge_dir "$root_prod/umodules"
purge_dir "$root_prod/minimal"
purge_dir "$root_prod/tarballs"
purge_dir "$root_build/BUILD"
purge_dir "$root_build/BUILDROOT"
purge_dir "$root_build/RPMS"
purge_dir "$root_build/SOURCES"
purge_dir "$root_build/SPECS"
purge_dir "$root_build/SRPMS"
rm -rf "$root_repos/repodata"
if [ "$prod" != "" ]; then
# XXXX Need to check for
# product name exactly
rm -f "$root_repos/$prod-latest"*
fi
postcmd $?
make_dir "$root_build/RPMS/noarch"
echo
# Descend to project dir
cd "$root_prod" || exit 1
if [ "$english_only" = "1" ]; then
echo "Cleaning languages .."
cmd="./bin/language-manager --mode=clean --yes $verbosity_level_with_input"
eval "$cmd"
postcmd $?
echo
else
# Force restore build directory
if [ ! -f "lang/ja" ]; then
echo "Restoring languages .."
cmd="git checkout \"*\" $verbosity_level && git clean -f -d $verbosity_level && git pull $verbosity_level"
eval "$cmd"
postcmd $?
echo
fi
fi
echo "Pre-building package .."
eval "$cmd"
if [ "$rel" = "1" ]; then
args="$ver"
else
args="$ver-$rel"
fi
cmd="./makedist.pl \"$args\" $verbosity_level"
eval "$cmd"
postcmd $?
echo
echo "Building package .."
cmd="./makerpm.pl \"$ver\" \"$rel\" $verbosity_level"
eval "$cmd"
postcmd $?
echo
cd "$root" || exit 1
echo "Preparing built files for upload .."
cmd="cp -f $root_prod/tarballs/$prod-$ver*\.tar.gz $root_repos/${prod}-latest.tar.gz $verbosity_level"
eval "$cmd"
cmd="echo $ver-$rel \($date\) > $root_repos/$prod-latest.version"
eval "$cmd"
cmd="find $root_rpms -name $prod-$ver-$rel*\.rpm -exec mv '{}' $root_repos \; $verbosity_level"
eval "$cmd"
cmd="mv -f $root_repos/$prod-$ver-$rel*\.rpm $root_repos/${prod}-latest.rpm $verbosity_level"
eval "$cmd"
postcmd $?
echo
echo "Post-clean up .."
cd "$root_build" || exit 1
for dir in *; do
cmd="rm -rf \"$dir/*\" $verbosity_level"
eval "$cmd"
done
postcmd $?
}
if [ -n "$1" ] && [[ "'$1'" != *"--"* ]]; then
build_prod $@
cloud_upload_list_upload=("$root_repos/$1*")
cloud_upload cloud_upload_list_upload
cloud_repo_sign_and_update
else
build_prod webmin $@
build_prod usermin $@
cloud_upload_list_upload=("$root_repos/*")
cloud_upload cloud_upload_list_upload
cloud_repo_sign_and_update
fi

27
.github/build/vars.sh vendored
View File

@@ -1,27 +0,0 @@
#!/usr/bin/env bash
#
# Copyright @iliajie <ilia@webmin.dev>
#
# Build variables
#
#
# Set defaults
root="${ENV_BUILD__ROOT:-$HOME}"
root_repos="${ENV_BUILD__ROOT_REPOS:-$root/repo}"
root_build="${ENV_BUILD__ROOT_BUILD:-$root/rpmbuild}"
root_rpms="${ENV_BUILD__ROOT_RPMS:-$root_build/RPMS/noarch}"
# Cloud upload config
cloud_upload_ssh_user="${ENV_BUILD__CLOUD_UPLOAD_SSH_USER:-webmin.dev}"
cloud_upload_ssh_host="${ENV_BUILD__CLOUD_UPLOAD_SSH_HOST:-webmin.dev}"
cloud_upload_ssh_dir="${ENV_BUILD__CLOUD_UPLOAD_SSH_DIR:-~/domains/builds.webmin.dev/public_html}"
cloud_upload_gpg_passphrase="${WEBMIN_DEV__GPG_PH}"
# Define verbosity level
verbosity_level=' >/dev/null 2>&1 </dev/null'
verbosity_level_to_file='2> /dev/null'
verbosity_level_with_input=' >/dev/null 2>&1'
if [[ "'$*'" == *"--debug"* ]]; then
unset verbosity_level verbosity_level_to_file verbosity_level_with_input
fi

View File

@@ -1,30 +0,0 @@
name: "webmin.dev: Deploy Webmin package"
on:
push:
branches:
- master
jobs:
build:
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
version: 1.0
- uses: szenius/set-timezone@v1.2
with:
timezoneLinux: "Europe/Nicosia"
- name: Build and upload packages
env:
WEBMIN_DEV__SSH_PRV_KEY: ${{ secrets.WEBMIN_DEV__SSH_PRV_KEY }}
WEBMIN_DEV__SSH_PUB_KEY: ${{ secrets.WEBMIN_DEV__SSH_PUB_KEY }}
WEBMIN_DEV__GPG_PH: ${{ secrets.WEBMIN_DEV__GPG_PH }}
ENV_BUILD__CLOUD_UPLOAD_SSH_HOST: ${{ secrets.WEBMIN_DEV__IP_ADDR }}
working-directory: ./.github/build
run: |-
./deb.sh webmin --devel
./rpm.sh webmin --devel

1
.gitignore vendored
View File

@@ -21,4 +21,3 @@ core
tarballs/
minimal/
.DS_Store
.vscode/settings.json

View File

@@ -1,79 +1,5 @@
## Changelog
#### 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
* Fix hostname detection on `systemd` systems to avoid excessive logging [#2020](https://github.com/webmin/webmin/issues/2020)
* Fix Webmin version display [#2023](https://github.com/webmin/webmin/issues/2023)
* Fix to check if UI library is loaded before using it [#2021](https://github.com/webmin/webmin/issues/2021)
* Fix the absent init script for legacy systems after the initial installation
* Update the Authentic theme to the latest version with various fixes and improvements
#### 2.103 (October 08, 2023)
* Add support for hostname detection using `hostnamectl` command
* Add support for other ACME services
* Add ability to hide dotfiles in File Manager [#1578](https://github.com/webmin/authentic-theme/issues/1578)
* Add `xz`, `zstd` and plain `tar` support when creating archives in File Manager [#2009](https://github.com/webmin/webmin/issues/2009)
* Add support for English (United States) (military time) locale
* Fix to correctly switch key hash type with ACME services
* Fix bug when `backend` wasn't saved correctly in Fail2Ban module [#1992](https://github.com/webmin/webmin/issues/1992)
* Fix large files download in Upload and Download module
* Fix Google Authentication on RHEL systems derivatives
* Update the Authentic theme to the latest version with various fixes and improvements
#### 2.102 (August 23, 2023)
* Add support for Amazon Linux 2023
* Fix a bug in Network Configuration module when parsing network size [sourceforge.net/discussion#55377]( https://sourceforge.net/p/webadmin/discussion/55377/thread/78e5aa05f3)
* Fix Netplan related bugs in Network Configuration module
* Fix Terminal focus bug
* Fix to correctly compare Webmin semantic versions
* Fix to suppress output from `monitor.pl` command [#1984](https://github.com/webmin/webmin/issues/1984)
#### 2.101 (August 5, 2023)
* Add support for reading gzipped email messages
* Add `error_stderr` API
* Fix to show correct locale for sudo-capable users [webmin/authentic-theme#1663](https://github.com/webmin/authentic-theme/issues/1663)
* Fix new signing key import on Debian and derivatives
* Fix to check if password hash format is valid for `yescrypt` and `SHA512`
* Fix various XSS related issues
* Fix updating Webmin from repository if a package is available
#### 2.100 (July 22, 2023)
* Add support for showing defaults for options in PHP Configuration module
* Add significant improvements to email display, reply and compose
* Add support for WebGL in the Terminal module
* Add screen reader support in Terminal module
* Add full support for NetworkManager in Network Configuration module
* Fix correctly displaying bridges with Netplan in Network Configuration module
* Fix displaying active network interfaces in Network Configuration module
* Fix to consider current drive temperature in `smartctl` output #1881
* Fix to properly stop Usermin https://github.com/webmin/usermin/issues/89
* Fix no to add hashed password to the old password list if it's already in there https://github.com/virtualmin/virtualmin-pro/issues/35
* Fix displaying placeholder on input to reflect strftime-style format
* Update the Authentic theme to the latest version adding new vertical column layout
#### 2.021 (March 19, 2023)
* Add ability to set locale in Webmin Users module for consistency
* Fix an error when `make_date` is called on undefined value #1860

File diff suppressed because one or more lines are too long

View File

@@ -207,7 +207,7 @@ if ($access{'lang'}) {
if ($access{'locale'}) {
# Current locale
eval "use DateTime; use DateTime::Locale; use DateTime::TimeZone;";
if (!$@ && $] > 5.011) {
if (!$@) {
my $locales = &list_locales();
my %localesrev = reverse %{$locales};
my $locale_auto = &parse_accepted_language();

View File

@@ -38,9 +38,7 @@ if ($module_name ne 'htaccess') {
# Need to build list of supported modules
local ($ver, $mods, $fullver) = &httpd_info($httpd);
if ($ver) {
my @allmods = &available_modules();
local @mods = map { "$_/$ver" }
&configurable_modules(\@allmods);
local @mods = map { "$_/$ver" } &configurable_modules();
foreach my $m (@mods) {
if ($m =~ /(\S+)\/(\S+)/) {
$httpd_modules{$1} = $2;
@@ -49,14 +47,10 @@ if ($module_name ne 'htaccess') {
# Call again now that known modules have been set, as
# sometimes there are dependencies due to LoadModule
# statements in an IfModule block
undef(@get_config_cache);
@allmods = &available_modules();
@mods = map { "$_/$ver" }
&configurable_modules(\@allmods);
@mods = map { "$_/$ver" } &configurable_modules();
local %site = ( 'size' => $st[7],
'path' => $httpd,
'modules' => join(' ', @mods),
'allmodules' => join(' ', @allmods),
'version' => $ver,
'fullversion' => $fullver,
'webmin' => &get_webmin_version() );
@@ -78,9 +72,6 @@ if (&read_file($site_file, \%site)) {
$httpd_modules{$1} = $2;
}
}
foreach $m (split(/\s+/, $site{'allmodules'})) {
$all_httpd_modules{$m} = $site{'version'};
}
foreach $m (keys %httpd_modules) {
if (!-r "$module_root_directory/$m.pl") {
delete($httpd_modules{$m});
@@ -1834,46 +1825,46 @@ for(my $i=0; $i<$secs; $i++) {
return 0;
}
# configurable_modules([&all-mods])
# configurable_modules()
# Returns a list of Apaches that are compiled in or dynamically loaded, and
# supported by Webmin.
sub configurable_modules
{
my ($allmods) = @_;
$allmods ||= [ &available_modules() ];
return grep { -r "$module_root_directory/$_.pl" } @$allmods;
}
# available_modules()
# Returns a list of Apaches that are compiled in or dynamically loaded
sub available_modules
{
my ($ver, $mods) = &httpd_info(&find_httpd());
my @rv;
local ($ver, $mods) = &httpd_info(&find_httpd());
local @rv;
local $m;
# Add compiled-in modules
push(@rv, @$mods);
foreach $m (@$mods) {
if (-r "$module_root_directory/$m.pl") {
push(@rv, $m);
}
}
# Add dynamically loaded modules
my $conf = &get_config();
foreach my $l (&find_directive_struct("LoadModule", $conf)) {
if ($l->{'words'}->[1] =~ /(mod_\S+)\.(so|dll)/) {
local $conf = &get_config();
foreach $l (&find_directive_struct("LoadModule", $conf)) {
if ($l->{'words'}->[1] =~ /(mod_\S+)\.(so|dll)/ &&
-r "$module_root_directory/$1.pl") {
push(@rv, $1);
}
elsif ($l->{'words'}->[1] =~ /libssl\.so/) {
elsif ($l->{'words'}->[1] =~ /libssl\.so/ &&
-r "$module_root_directory/mod_apachessl.pl") {
push(@rv, "mod_apachessl");
}
elsif ($l->{'words'}->[1] =~ /lib([^\/\s]+)\.(so|dll)/) {
elsif ($l->{'words'}->[1] =~ /lib([^\/\s]+)\.(so|dll)/ &&
-r "$module_root_directory/mod_$1.pl") {
push(@rv, "mod_$1");
}
}
undef(@get_config_cache); # Cache is no longer valid
# Add dynamically loaded modules
if ($config{'apachectl_path'}) {
&open_execute_command(APACHE,
"$config{'apachectl_path'} -M 2>/dev/null", 1);
while(<APACHE>) {
if (/(\S+)_module/) {
if (/(\S+)_module/ && -r "$module_root_directory/mod_${1}.pl") {
push(@rv, "mod_${1}");
}
}

View File

@@ -1,19 +0,0 @@
show_list=0
httpd_dir=/usr/local
httpd_path=/usr/local/sbin/httpd
apachectl_path=/usr/local/sbin/apachectl
httpd_conf=/usr/local/etc/apache24/httpd.conf
mime_types=/usr/local/etc/apache24/mime.types
srm_conf=/usr/local/etc/apache24/srm.conf
access_conf=/usr/local/etc/apache24/access.conf
show_order=0
max_servers=100
test_config=1
test_manual=0
test_always=0
test_apachectl=1
auto_mods=1
pid_file=/var/run/httpd.pid
show_names=0
allow_virtualmin=0
format_config=1

View File

@@ -5,7 +5,7 @@ mime_types=/etc/apache2/mime.types
httpd_path=/usr/sbin/httpd
start_cmd=systemctl start apache2
stop_cmd=systemctl stop apache2
apply_cmd=systemctl reload apache2
apply_cmd=systemctl restart apache2
show_order=0
max_servers=100
test_config=1

View File

@@ -1,11 +1,11 @@
show_list=0
httpd_dir=/usr/apache2/2.4
httpd_conf=/etc/apache2/2.4/httpd.conf
httpd_path=/usr/apache2/2.4/bin/httpd
apachectl_path=/usr/apache2/2.4/bin/apachectl
pid_file=/var/run/apache2/2.4/httpd.pid
start_cmd=svcadm enable svc:/network/http:apache24
stop_cmd=svcadm disable svc:/network/http:apache24
httpd_dir=/usr/apache2/2.2
httpd_conf=/etc/apache2/2.2/httpd.conf
httpd_path=/usr/apache2/2.2/bin/httpd
apachectl_path=/usr/apache2/2.2/bin/apachectl
pid_file=/var/run/apache2/2.2/httpd.pid
start_cmd=svcadm enable svc:/network/http:apache22
stop_cmd=svcadm disable svc:/network/http:apache22
mime_types=
srm_conf=
access_conf=

View File

@@ -779,23 +779,11 @@ local(@po, $po, @rv);
if ($in{'Options_def'}) { return ( [ ] ); }
@po = ("ExecCGI", "FollowSymLinks", "Includes", "IncludesNOEXEC",
"Indexes", "MultiViews", "SymLinksIfOwnerMatch");
my $abscount = 0;
my $pluscount = 0;
foreach $po (@po) {
if ($in{$po} == 1) {
push(@rv, $po);
$abscount++;
}
elsif ($in{$po} == 2) {
push(@rv, "+$po");
$pluscount++;
}
elsif ($in{$po} == 3) {
push(@rv, "-$po");
$pluscount++;
}
if ($in{$po} == 1) { push(@rv, $po); }
elsif ($in{$po} == 2) { push(@rv, "+$po"); }
elsif ($in{$po} == 3) { push(@rv, "-$po"); }
}
$abscount && $pluscount && &error($text{'core_eoptionsboth'});
return @rv ? ( [ join(' ', @rv) ] ) : ( [ "None" ] );
}
@@ -1053,7 +1041,7 @@ sub edit_LimitRequestBody
{
return (1, $text{'core_maxbody'},
&opt_input($_[0]->{'value'}, "LimitRequestBody", $text{'core_default'}, 8)
.&ui_space(2).$text{'bytes'});
.$text{'bytes'});
}
sub save_LimitRequestBody
{
@@ -1064,7 +1052,7 @@ sub edit_LimitXMLRequestBody
{
return (1, $text{'core_maxxml'},
&opt_input($_[0]->{'value'}, "LimitXMLRequestBody",
$text{'core_default'}, 8).&ui_space(2).$text{'bytes'});
$text{'core_default'}, 8).$text{'bytes'});
}
sub save_LimitXMLRequestBody
{

View File

@@ -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

View File

@@ -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=جميع المستخدمين صالحة

View File

@@ -501,7 +501,6 @@ core_actmod=Актыўныя модулі
core_option=Варыянт
core_setdir=Набор для каталога
core_merge=Зліццё з бацькам
core_eoptionsboth=Параметры каталога : усе актыўныя параметры павінны быць усталяваны для каталога або аб'яднаны з бацькоўскім, але не абодва
core_users=Толькі гэтыя карыстальнікі
core_groups=Толькі гэтыя групы
core_allusers=Усе сапраўдныя карыстальнікі

View File

@@ -9,4 +9,3 @@ core_protocols_http/2=HTTP/2
core_protocols_h2=HTTP/2 криптиран
core_protocols_h2c=HTTP/2 нешифрован
core_eprotcols=Няма избрани протоколи!
core_eoptionsboth=Опции за директория: Всички активни опции трябва да са или Задани за директория, или Обединени с родител, но не и двете

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -9,4 +9,3 @@ core_protocols_http/2=HTTP/2
core_protocols_h2=HTTP/2 κρυπτογραφημένο
core_protocols_h2c=HTTP/2 μη κρυπτογραφημένο
core_eprotcols=Δεν επιλέχθηκαν πρωτόκολλα!
core_eoptionsboth=Επιλογές καταλόγου : Οι ενεργές επιλογές πρέπει να είναι όλες είτε ορισμένες για κατάλογο είτε συγχωνευμένες με γονέα, αλλά όχι και οι δύο

View File

@@ -501,7 +501,6 @@ core_actmod=Active modules
core_option=Option
core_setdir=Set for directory
core_merge=Merge with parent
core_eoptionsboth=Directory options : Active options must be all either Set For Directory or Merged With Parent, but not both
core_users=Only these users
core_groups=Only these groups
core_allusers=All valid users

View File

@@ -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

View File

@@ -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

View File

@@ -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=مالک گروه مطابقت دارد

View File

@@ -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

View File

@@ -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

View File

@@ -501,7 +501,6 @@ core_actmod=מודולים פעילים
core_option=אפשרות
core_setdir=הגדר לספרייה
core_merge=התמזגו עם ההורה
core_eoptionsboth=אפשרויות ספרייה : האפשרויות הפעילות חייבות להיות כולן מוגדרות למדריך או התמזגו עם אב, אך לא שתיהן
core_users=רק משתמשים אלה
core_groups=רק הקבוצות האלה
core_allusers=כל המשתמשים התקפים

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -25,7 +25,6 @@ core_protocols_h2=HTTP/2暗号化
core_protocols_h2c=HTTP/2暗号化されていない
core_eprotcols=プロトコルが選択されていません!
core_minor=マイナーバージョンのみ
core_eoptionsboth=ディレクトリ オプション: アクティブなオプションはすべて、「ディレクトリに設定」または「親とマージ」のいずれかである必要がありますが、両方にすることはできません。
mod_proxy_seconds=秒

View File

@@ -101,7 +101,6 @@ core_minor=부 버전 만
core_maxxml=최대 XML 요청 본문 크기
core_exml=잘못된 XML 요청 본문 크기
core_eerrordir=오류 로그 파일의 디렉토리가 존재하지 않습니다
core_eoptionsboth=디렉터리 옵션: 활성 옵션은 모두 디렉터리에 대해 설정 또는 상위 항목과 병합이어야 하지만 둘 다일 수는 없습니다
core_fileowner=파일 소유자 일치
core_filegroup=그룹 소유자 일치
core_major=메이저 버전 만

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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=Совпадения владельца группы

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -501,7 +501,6 @@ core_actmod=โมดูลที่ใช้งานอยู่
core_option=ตัวเลือก
core_setdir=ตั้งไว้สำหรับไดเรกทอรี
core_merge=รวมกับผู้ปกครอง
core_eoptionsboth=ตัวเลือกไดเร็กทอรี : ตัวเลือกที่ใช้งานอยู่ทั้งหมดจะต้องตั้งค่าสำหรับไดเร็กทอรีหรือผสานกับพาเรนต์ แต่ไม่ใช่ทั้งสองอย่าง
core_users=เฉพาะผู้ใช้เหล่านี้
core_groups=เฉพาะกลุ่มเหล่านี้
core_allusers=ผู้ใช้ที่ถูกต้องทั้งหมด

View File

@@ -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

View File

@@ -73,7 +73,6 @@ core_eprotcols=Протоколи не вибрано!
core_ecandoc=Вам не дозволяється використовувати корінь документа "$1"
core_minor=Тільки незначна версія
core_eerrordir=Каталог файлу журналу помилок не існує
core_eoptionsboth=Параметри каталогу: усі активні параметри мають бути або встановлені для каталогу, або об’єднані з батьківським, але не обидва
core_fileowner=Власник файлу відповідає
core_filegroup=Матчі власників групи
core_major=Тільки основна версія

View File

@@ -501,7 +501,6 @@ core_actmod=فعال ماڈیولز
core_option=آپشن
core_setdir=ڈائریکٹری کے لئے مقرر کریں
core_merge=والدین کے ساتھ ضم کریں
core_eoptionsboth=ڈائرکٹری کے اختیارات: فعال اختیارات تمام یا تو ڈائرکٹری کے لیے سیٹ ہونے چاہئیں یا والدین کے ساتھ ضم ہونے چاہئیں، لیکن دونوں نہیں۔
core_users=صرف یہ صارفین
core_groups=صرف یہ گروہ
core_allusers=تمام درست استعمال کنندہ

View File

@@ -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ệ

View File

@@ -68,7 +68,6 @@ core_eprotcols=未选择任何协议!
core_ecandoc=不允许使用文档根目录'$1'
core_minor=仅次要版本
core_eerrordir=错误日志文件目录不存在
core_eoptionsboth=目录选项:活动选项必须全部为“为目录设置”或“与父级合并”,但不能同时为两者
core_fileowner=文件所有者匹配
core_filegroup=群组拥有者比赛

View File

@@ -56,7 +56,6 @@ core_protocols_h2c=HTTP/2 未加密
core_eprotcols=未選擇任何協議!
core_ecandoc=不允許使用文檔根目錄'$1'
core_minor=僅次要版本
core_eoptionsboth=目錄選項:活動選項必須全部為“設定目錄”或“與父級合併”,但不能同時為兩者
core_fileowner=文件所有者匹配
core_filegroup=群組擁有者比賽

View File

@@ -25,7 +25,6 @@ $rv = [ [ 'ProxyRequests', 0, 13, 'virtual', undef, 11 ],
[ 'ProxyMaxForwards', 0, 13, 'virtual', 2.0 ],
[ 'ProxyPreserveHost', 0, 13, 'virtual', 2.031 ],
[ 'ProxyTimeout', 0, 13, 'virtual', 2.031 ],
[ 'ProxyPreserveHost', 0, 13, 'virtual', 2.3 ],
[ 'ProxyVia', 0, 13, 'virtual', 2.0 ] ];
return &make_directives($rv, $_[0], "mod_proxy");
}
@@ -292,16 +291,7 @@ sub save_ProxyVia
return &parse_choice("ProxyVia", "");
}
sub edit_ProxyPreserveHost
{
return (1, $text{'mod_proxy_preserve'},
&choice_input($_[0]->{'value'}, "ProxyPreserveHost", "",
"$text{'yes'},on", "$text{'no'},off", "$text{'default'},"));
}
sub save_ProxyPreserveHost
{
return &parse_choice("ProxyPreserveHost", "");
}
1;

View File

@@ -13,7 +13,6 @@ sub edit_SuexecUserGroup
local $rv;
$rv .= sprintf "<input type=radio name=SuexecUserGroup_def value=1 %s> %s\n",
$_[0] ? "" : "checked", $text{'suexec_none'};
$rv .= &ui_newline();
$rv .= sprintf "<input type=radio name=SuexecUserGroup_def value=0 %s>\n",
$_[0] ? "checked" : "";
$rv .= sprintf "%s <input name=SuexecUserGroup_u size=8 value='%s'> %s\n",

View File

@@ -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'},

View File

@@ -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

View File

@@ -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

View File

@@ -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=&lt;Livello di compressione predefinito&gt;
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

View File

@@ -2,8 +2,7 @@
# Returns a list of files and directories under some directory
$trust_unknown_referers = 1;
use JSON::PP;
require './bacula-backup-lib.pl';
BEGIN { require './bacula-backup-lib.pl'; }
&ReadParse();
# Input sanitization

View File

@@ -11,7 +11,7 @@ use File::Basename;
use File::Find;
use JSON::PP;
use HTTP::Tiny;
eval "use HTML::Entities";
use HTML::Entities;
use List::MoreUtils qw(any uniq);
use Cwd qw(cwd);
use Encode qw/encode decode/;
@@ -61,8 +61,7 @@ sub main
'allow-symlinks|as!' => \$opt{'allow-symlinks'},
'git-commit|gc!' => \$opt{'git-commit'},
'log|l:s' => \$opt{'log'},
'verbose|v:i' => \$opt{'verbose'},
'yes|y:i' => \$opt{'assumeyes'});
'verbose|v:i' => \$opt{'verbose'});
# Print help and exit
pod2usage(0) if ($opt{'help'});
@@ -71,11 +70,6 @@ sub main
if (!defined($opt{'verbose'})) {
$opt{'verbose'} = 1;
}
# Enforce yes for all questions
if (defined($opt{'assumeyes'})) {
$opt{'assumeyes'} = 1;
}
# Get current path
my $path = cwd;
@@ -238,7 +232,7 @@ sub main
# Just run tests, and exit, without writing anything
if (@{ $opt{'keys-test'} }) {
say CYAN, "Translation testing for selected keys is about to start ..", RESET;
if (prompt('next', \%opt)) {
if (prompt('next')) {
go(\%opt, \%data);
}
} else {
@@ -251,20 +245,11 @@ sub main
talk('affected', \%opt, \%data);
# Run in overwrite mode
if ($opt{'mode'} eq 'clean') {
# # Execute clean
talk('clean-pre', \%opt, \%data);
if (prompt('next', \%opt)) {
go(\%opt, \%data);
}
}
# Run in overwrite mode
elsif ($opt{'mode'} eq 'full') {
if ($opt{'mode'} eq 'full') {
# Execute force transcode/translate
talk('overwrite-pre', \%opt, \%data);
if (prompt('next', \%opt)) {
if (prompt('next')) {
go(\%opt, \%data);
}
}
@@ -289,7 +274,7 @@ sub main
talk('sync-pre', \%opt, \%data);
}
if (prompt('next', \%opt)) {
if (prompt('next')) {
go(\%opt, \%data);
}
}
@@ -552,7 +537,7 @@ sub language_transcode
eval {$string = decode($encoding, $string)};
if ($@) {
say "Error found: $@";
if (!prompt('next', $opt)) {
if (!prompt('next')) {
exit;
}
}
@@ -964,7 +949,6 @@ sub go
my $verbose = $opt->{'verbose'} || @{$keys_test};
my $mode_sync = $opt->{'mode'} ne 'full';
my $mode_transcode = $opt->{'mode'} eq 'transcode';
my $mode_clean = $opt->{'mode'} eq 'clean';
my $allow_symlinks = $opt->{'allow-symlinks'};
my $verbose_silent_mode = $mode_sync && $verbose != 2;
@@ -981,12 +965,6 @@ sub go
# Check if there has been something to process, if not print a message
my $output;
# If cleaning called in this mode, throw an error
if ($mode_clean) {
say RED, "Error: Cleaning can only be performed when the target type is unset!", RESET;
exit;
}
# Build targets first
talk_log(("Transcoding/translating " . CYAN BOLD, $module, RESET . " module's help .."), $data, 1);
@@ -1222,7 +1200,6 @@ sub go
# Set message type
my $message_type_s1 = 'Transcoding/translating';
$message_type_s1 = 'Searching/replacing in' if (@{$values_fix});
$message_type_s1 = 'Cleaning in' if ($mode_clean);
talk_log(("$message_type_s1 " . BLUE BOLD, $module, RESET . " module .."), $data, 1);
foreach $language (@{ $data->{'languages_source_list'} }) {
@@ -1246,51 +1223,6 @@ sub go
my %language;
my %language_auto;
# If in clean mode delete the file and go next
if ($mode_clean) {
# Language files
my $cfile = "$mpath/$code";
my $cfileauto = "$cfile.auto";
unlink($cfile);
unlink($cfileauto);
# Module files
foreach ('module', 'config', 'uconfig') {
my %mdata = %{$data};
$mdata{'type'} = $_;
my (undef, undef, $ffile) = source_data($module, \%mdata, $opt);
$ffile =~ s/\/$_\//\//;
my $cxfile = "$ffile.$code";
my $cxfileauto = "$cxfile.auto";
unlink($cxfile);
unlink($cxfileauto);
}
# Help files
my %hdata = %{$data};
$hdata{'type'} = 'help';
my (undef, $hpath) = source_data($module, \%hdata, $opt);
my @hdelete_targets;
if (-d $hpath) {
find(
{
wanted => sub {
my $found = $File::Find::name;
if ($found =~ /\.$code\./) {
push(@hdelete_targets, $found);
}
},
},
$hpath);
unlink(@hdelete_targets);
}
# Go next, don't translate
$output++;
next;
}
my $message_type_s2 = "Processing";
$message_type_s2 = "Testing translations for selected keys with" if (@{$keys_test});
@@ -1698,10 +1630,8 @@ sub get_google_translate_token
sub prompt
{
my ($q, $opt) = @_;
if ($opt->{'assumeyes'}) {
return 1;
}
my ($q) = @_;
if ($q eq 'next') {
return prompt("Do you want to proceed?");
}
@@ -1802,10 +1732,6 @@ sub talk
say GREEN, "Affected languages" . RESET, DARK . " [$languages_count]" . RESET . ": ", YELLOW BOLD,
"" . $languages . "", RESET;
}
if ($what eq 'clean-pre') {
say RED, "Danger! ", RESET, WHITE,
"The following operation will delete all files related to the affected lang-\nuage, including machine-translated files in all the mentioned modules listed above.",
}
if ($what eq 'overwrite-pre') {
say RED, "Warning! ", RESET, WHITE,
"The following operation will force-translate and overwrite mentioned\nlanguages in all mentioned modules listed above, using ",
@@ -1903,13 +1829,9 @@ Test translations for "index_stopmsg,trusted_warning" keys, in Russian and Germa
- webmin language-manager -m=bind8 -t=ru,de -kt=index_stopmsg,trusted_warning
Clean build directory by removing all kind of language files except English.
- webmin language-manager --mode=clean
=item --mode, -x <sync|full|transcode>
Mode can be either <sync> or <full> or <transcode> or <clean>. Default is set to "sync" and will only keep the keys found on template language file, while missing keys in target languages (translations), will be deleted, and newly added keys to template language file, will be translated. Mode "full" is meant to perform full translation, keeping human translated strings and overwriting all machine translations done in the past (not recommended to run). Mode "transcode" is useful to fix human translated language files, which stored in "utf-8" encoding already, while still having "&#195;&#173;" or "&#195;&#169;" HTML entities. Mode "clean" is useful to clean build package by removing all kind of language files except source language.
Mode can be either <sync> or <full> or <transcode>. Default is set to "sync" and will only keep the keys found on template language file, while missing keys in target languages (translations), will be deleted, and newly added keys to template language file, will be translated. Mode "full" is meant to perform full translation, keeping human translated strings and overwriting all machine translations done in the past (not recommended to run). Mode "transcode" is useful to fix human translated language files, which stored in "utf-8" encoding already, while still having "&#195;&#173;" or "&#195;&#169;" HTML entities.
=item --type, -w <lang|ulang|help|config|uconfig|module>
@@ -1995,4 +1917,4 @@ Verbosely print processed files and provide detailed output. By detault, verbose
=head1 LICENSE AND COPYRIGHT
Copyright 2020 Ilia Rostovtsev <ilia@virtualmin.com>
Copyright 2022 Ilia Rostovtsev <ilia@virtualmin.com>

View File

@@ -5,9 +5,12 @@ use strict;
use warnings;
BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Color'; }
use 5.010; # Version in CentOS 6
use Getopt::Long qw(:config permute pass_through);
use Term::ANSIColor qw(:constants);
use Pod::Usage;
use Term::ANSIColor qw(:constants);
use File::Spec;
use File::Basename;
my $a0 = $ARGV[0];
@@ -35,12 +38,8 @@ sub main {
}
);
# Set defaults
$opt{'config'} ||= "/etc/webmin";
$opt{'commands'} = $a0;
# Load libs
loadlibs(\%opt);
my @remain = @ARGV;
# List commands?
@@ -49,6 +48,7 @@ sub main {
exit 0;
} elsif ($opt{'version'} || $opt{'versions'}) {
# Load libs
my $root = root($opt{'config'});
my $ver_checked = sub {
my ($ver_remote, $ver_curr) = @_;
if ($ver_remote && $ver_curr &&
@@ -82,7 +82,6 @@ sub main {
}
};
my $root = root($opt{'config'});
if ($root && -d $root) {
require("$root/web-lib-funcs.pl");
@@ -208,9 +207,6 @@ exit main( \@ARGV ) if !caller(0);
sub run_command {
my ( $optref, $subcmd, $remainref ) = @_;
# Load libs
loadlibs($optref);
# Figure out the Webmin root directory
my $root = root($optref->{'config'});
@@ -241,10 +237,6 @@ sub run_command {
sub get_command_path {
my ($root, $subcmd, $optref) = @_;
# Load libs
loadlibs($optref);
# Check for a root-level command (in "$root/bin")
my $command_path;
if ($subcmd) {
@@ -382,20 +374,6 @@ sub root {
return $root;
}
# loadlibs - Load libraries from the Webmin vendor dir
# as those may not be installed as dependency, because
# Webmin already provides them from package manager
# perspective.
sub loadlibs {
my ($optref) = @_;
$optref->{'config'} ||= "/etc/webmin";
my $root = root($optref->{'config'});
my $libroot = "$root/vendor_perl";
eval "use lib '$libroot'";
eval "use File::Basename";
eval "use File::Spec";
}
1;
=pod

View File

@@ -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$/ &&
$config{'force_random'} eq '0' &&
if ($gconfig{'os_type'} =~ /-linux$/ &&
-r "/dev/urandom" &&
$bind_version =~ /^9\./ &&
&compare_version_numbers($bind_version, '<', '9.14.2')) {
# Version: 9.14.2 deprecated the use of -r option
!$config{'force_random'} &&
$bind_version &&
&compare_version_numbers($bind_version, '9.14') < 0) {
# Version: 9.14.2 deprecated the use of -r option
# in favor of using /dev/random [bugs:#5370]
$rand_flag = "-r /dev/urandom";
}
@@ -376,22 +376,9 @@ return @rv ? wantarray ? @rv : $rv[0]
sub find_value
{
my @v = &find($_[0], $_[1]);
if (!@v) {
return undef;
}
elsif (wantarray) {
return map { &extract_value($_) } @v;
}
else {
return &extract_value($v[0]);
}
}
sub extract_value
{
my ($dir) = @_;
return defined($dir->{'value'}) ? $dir->{'value'} :
defined($dir->{'values'}) && @{$dir->{'values'}} ? $dir->{'values'}->[0] : undef;
if (!@v) { return undef; }
elsif (wantarray) { return map { $_->{'value'} } @v; }
else { return $v[0]->{'value'}; }
}
# base_directory([&config], [no-cache])
@@ -449,9 +436,6 @@ for(my $i=0; $i<@oldv || $i<@newv; $i++) {
$newv[$i]->{'line'} = $_[0]->{'eline'};
$newv[$i]->{'eline'} =
$_[0]->{'eline'} + scalar(@nl) - 1;
if (!defined($newv[$i]->{'index'})) {
$newv[$i]->{'index'} = @$pm ? $pm->[@$pm - 1]->{'index'} + 1 : 0;
}
&renumber($parent, $_[0]->{'eline'}-1,
$_[0]->{'file'}, scalar(@nl));
}
@@ -472,9 +456,6 @@ for(my $i=0; $i<@oldv || $i<@newv; $i++) {
$newv[$i]->{'line'} = $_[0]->{'line'}+1;
$newv[$i]->{'eline'} =
$_[0]->{'line'} + scalar(@nl);
if (!defined($newv[$i]->{'index'})) {
$newv[$i]->{'index'} = 0;
}
&renumber($parent, $_[0]->{'line'},
$_[0]->{'file'}, scalar(@nl));
}
@@ -519,8 +500,9 @@ for(my $i=0; $i<@oldv || $i<@newv; $i++) {
sub recursive_set_value
{
my ($dir) = @_;
if (!defined($dir->{'value'})) {
$dir->{'value'} = &extract_value($dir);
if ($dir->{'values'}) {
my @v = @{$dir->{'values'}};
$dir->{'value'} = @v ? $v[0] : undef;
}
if ($dir->{'type'} && $dir->{'type'} == 1 && $dir->{'members'}) {
foreach my $m (@{$dir->{'members'}}) {
@@ -1006,7 +988,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 +1318,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 +1474,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 +1490,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 +1501,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 +1830,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 +1927,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;
@@ -1975,31 +1964,21 @@ if (!$file) {
push(@{$dir->{'members'}}, { 'name' => 'file',
'values' => [ $file ] } );
# Allow transfer from slave IPs
my (@notify, @transfer);
foreach my $s (@$slaves) {
push(@notify, { 'name' => $s });
push(@transfer, { 'name' => $s });
}
if (@transfer) {
my $gat = $opts ? &find("allow-transfer", $opts->{'members'}) : undef;
if ($gat) {
push(@transfer, @{$gat->{'members'}});
}
}
if (@notify) {
# Add slave IPs
if (@$slaves) {
my $also = { 'name' => 'also-notify',
'type' => 1,
'members' => \@notify};
push(@{$dir->{'members'}}, $also);
push(@{$dir->{'members'}}, { 'name' => 'notify',
'values' => [ 'yes' ] });
}
if (@transfer) {
'members' => [ ] };
my $allow = { 'name' => 'allow-transfer',
'type' => 1,
'members' => \@transfer };
push(@{$dir->{'members'}}, $allow);
'members' => [ ] };
foreach my $s (@$slaves) {
push(@{$also->{'members'}}, { 'name' => $s });
push(@{$allow->{'members'}}, { 'name' => $s });
}
push(@{$dir->{'members'}}, $also, $allow);
push(@{$dir->{'members'}}, { 'name' => 'notify',
'values' => [ 'yes' ] });
}
# Create the zone file, with records
@@ -2636,7 +2615,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;
}
@@ -2905,7 +2884,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'}));
}
@@ -3031,7 +3010,7 @@ my %on = map { $_, 1 } @{$_[0]};
&remote_error_setup(\&slave_error_handler);
my @slaveerrs;
foreach my $slave (&list_slave_servers()) {
next if (%on && !$on{$slave->{'nsname'}} && !$on{$slave->{'host'}});
next if (%on && !$on{$slave->{'host'}});
# Find the PID file
$slave_error = undef;
@@ -3323,7 +3302,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
{
@@ -3348,15 +3327,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)
@@ -3602,7 +3579,7 @@ for(my $i=$#recs; $i>=0; $i--) {
if ($recs[$i]->{'type'} eq 'NSEC' ||
$recs[$i]->{'type'} eq 'NSEC3' ||
$recs[$i]->{'type'} eq 'RRSIG' ||
$recs[$i]->{'type'} eq 'NSEC3PARAM' ||
$recs[$i]->{'type'} eq 'NSEC3PARAM' && $tools ||
$recs[$i]->{'type'} eq 'DNSKEY') {
&delete_record($fn, $recs[$i]);
}
@@ -3643,7 +3620,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 (!$?);
@@ -3715,11 +3692,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));
@@ -3901,21 +3878,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;
@@ -3930,7 +3907,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) {
@@ -3954,14 +3931,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;
@@ -3994,7 +3971,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
{
@@ -4033,9 +4010,9 @@ sub dt_sign_zone
$recs[$i]->{'type'} eq 'RRSIG' ||
$recs[$i]->{'type'} eq 'DNSKEY') {
&delete_record($z, $recs[$i]);
}
}
}
&copy_source_dest($z_chroot, $usz);
&copy_source_dest($z_chroot, $usz);
$cmd = "$zonesigner $nsec3param".
" -genkeys ".
@@ -4077,13 +4054,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
{
@@ -4104,7 +4081,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' ||
@@ -4113,12 +4090,12 @@ sub dt_resign_zone
$recs[$i]->{'type'} eq 'RRSIG' ||
$recs[$i]->{'type'} eq 'DNSKEY') {
&delete_record($z, $recs[$i]);
}
}
}
&copy_source_dest($z_chroot, $usz);
&copy_source_dest($z_chroot, $usz);
if ($t > 0) {
$threshold = "-threshold ".quotemeta("-$t"."d"." ");
$threshold = "-threshold ".quotemeta("-$t"."d"." ");
}
$cmd = "$zonesigner -verbose -verbose".
@@ -4141,7 +4118,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) = @_;
@@ -4154,7 +4131,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) = @_;
@@ -4167,7 +4144,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) = @_;
@@ -4180,7 +4157,7 @@ sub dt_notify_parentzone
}
# dt_rollerd_restart()
# Restart the rollerd daemon
# Restart the rollerd daemon
sub dt_rollerd_restart
{
my $rollerd;
@@ -4192,7 +4169,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;
@@ -4220,9 +4197,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;
}
&copy_source_dest($key->{$f}, $keydir);
&unlink_file($key->{$f});
@@ -4233,7 +4210,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.".");
}
@@ -4259,7 +4236,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) = @_;
@@ -4309,14 +4286,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
@@ -4483,3 +4460,4 @@ return $r;
}
1;

View File

@@ -5,7 +5,7 @@ use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
# Globals
our (%access, %text, $bind_version);
our (%access, %text);
our $dnssec_dlv_zone;
require './bind8-lib.pl';
@@ -24,12 +24,10 @@ $tkeys ||= { 'members' => [ ] };
print &ui_form_start("save_trusted.cgi", "post");
print &ui_table_start($text{'trusted_header'}, undef, 2);
if (&compare_version_numbers($bind_version, '<', '9.16.0')) {
# DNSSEC enabled?
print &choice_input($text{'trusted_dnssec'}, 'dnssec-enable', $mems,
$text{'yes'}, 'yes', $text{'no'}, 'no',
$text{'default'}, undef);
}
# DNSSEC enabled?
print &choice_input($text{'trusted_dnssec'}, 'dnssec-enable', $mems,
$text{'yes'}, 'yes', $text{'no'}, 'no',
$text{'default'}, undef);
if (&supports_dnssec_client() == 2) {
print &choice_input($text{'trusted_validation'},
'dnssec-validation', $mems,

View File

@@ -17,14 +17,6 @@ my $dom = $zone->{'name'};
&ui_print_header(&zone_subhead($zone), $text{'master_title'}, "",
undef, undef, undef, undef, &restart_links($zone));
my $d = &get_virtualmin_domains($dom);
if ($d && $d->{'alias'}) {
print &ui_alert_box($text{'master_vminalias'}, 'danger');
}
elsif ($d) {
print &ui_alert_box($text{'master_vmin'}, 'warn');
}
# Find the record types
my (@rcodes, @recs);
if (!$config{'largezones'}) {

View File

@@ -147,8 +147,6 @@ master_defttl=Standaard lewendige tyd vir rekords
master_edefttl='$1' is nie 'n geldige standaardtyd vir lewering van rekords nie
master_esoagone=Geen SOA-rekord gevind nie!
master_einclude=Bykomende sjabloonlêer bestaan nie
master_vmin=Hierdie sone word deur Virtualmin bestuur. Rekords moet geredigeer word met behulp van die Virtualmin UI, om te verseker dat dit ooreenstem met ander virtuele bediener instellings.
master_vminalias=Hierdie sone is 'n alias van 'n Virtualmin-domein, wat gesinchroniseer word met sy teiken. Rekords moet nooit hier geredigeer word nie, aangesien enige veranderinge oorgeskryf sal word!
delete_title=Vee sone uit
delete_mesg=Is u seker dat u die sone $1 wil verwyder? Alle rekords en die sone-lêer sal uitgevee word.

View File

@@ -147,8 +147,6 @@ master_defttl=الوقت الافتراضي للعيش للسجلات
master_edefttl='$1' is not a valid default time-to-live for records
master_esoagone=لم يتم العثور على سجل الخدمية!
master_einclude=ملف القالب الإضافي غير موجود
master_vmin=تتم إدارة هذه المنطقة بواسطة Virtualmin. يجب تحرير السجلات باستخدام Virtualmin UI ، للتأكد من أنها متوافقة مع إعدادات الخادم الظاهري الأخرى.
master_vminalias=هذه المنطقة هي اسم مستعار لنطاق Virtualmin ، والذي يتم الاحتفاظ به متزامنًا مع هدفه. يجب عدم تحرير السجلات هنا مطلقًا ، حيث سيتم الكتابة فوق أي تغييرات!
delete_title=حذف المنطقة
delete_mesg=Are you sure you want to delete the zone $1 ? All records and the zone file will be deleted.

View File

@@ -147,8 +147,6 @@ master_defttl=Час жыць да запісаў па змаўчанні
master_edefttl="$1" не з'яўляецца дапушчальным да запісу часу для запісу па змаўчанні
master_esoagone=Запіс SOA не знойдзены!
master_einclude=Дадатковы файл шаблону не існуе
master_vmin=Гэта зона кіруецца Virtualmin. Запісы трэба рэдагаваць з дапамогай інтэрфейсу Virtualmin, каб пераканацца, што яны адпавядаюць наладам іншых віртуальных сервераў.
master_vminalias=Гэтая зона з'яўляецца псеўданімам дамена Virtualmin, які падтрымліваецца ў сінхранізацыі з мэтай. Запісы ніколі не павінны рэдагавацца тут, бо любыя змены будуць перазапісаны!
delete_title=Выдаліць зону
delete_mesg=Вы ўпэўнены, што хочаце выдаліць зону $1? Усе запісы і файл зоны будуць выдаленыя.

View File

@@ -1,6 +1,4 @@
master_inview=$1 с оглед $2
master_vmin=Тази зона се управлява от Virtualmin. Записите трябва да се редактират с помощта на потребителския интерфейс на Virtualmin, за да се гарантира, че са съвместими с други настройки на виртуален сървър.
master_vminalias=Тази зона е псевдоним на домейн Virtualmin, който се поддържа в синхрон със своята цел. Записите никога не трябва да се редактират тук, тъй като всички промени ще бъдат презаписани!
delete_vwarn=Тази зона е свързана с домейна Virtualmin $1 и затова не трябва да се изтрива тук!

View File

@@ -1,6 +1,4 @@
master_inview=$1 a la vista $2
master_vmin=Aquesta zona està gestionada per Virtualmin. Els registres s'han d'editar mitjançant la interfície d'usuari de Virtualmin, per assegurar-se que són coherents amb altres configuracions del servidor virtual.
master_vminalias=Aquesta zona és un àlies d'un domini Virtualmin, que es manté sincronitzat amb el seu objectiu. Els registres no s'han d'editar mai aquí, ja que qualsevol canvi es sobreescriurà!
delete_onslave=També voleu suprimir-lo dels servidors esclaus?
delete_errslave=La zona mestra ha suprimit bé, però s'han produït els errors següents en esclaus : $1

View File

@@ -24,8 +24,6 @@ master_movedesc=Přesune tuto zónu do jiného zobrazení a přitom zachová vš
master_applymsg2=Klepnutím na toto tlačítko použijete změny pouze pro tuto zónu. Toto bude fungovat, pouze pokud byly změny provedeny pro celý server alespoň jednou od vytvoření zóny.
master_esoagone=Nebyl nalezen žádný záznam SOA!
master_einclude=Další soubor šablony neexistuje
master_vmin=Tuto zónu spravuje Virtualmin. Záznamy by měly být upravovány pomocí uživatelského rozhraní Virtualmin, aby bylo zajištěno, že budou konzistentní s ostatními nastaveními virtuálního serveru.
master_vminalias=Tato zóna je alias domény Virtualmin, která je synchronizována s jejím cílem. Záznamy by zde nikdy neměly být upravovány, protože jakékoli změny budou přepsány!
delete_mesg3=Opravdu chcete odstranit zónu $1?
delete_vwarn=Tato zóna je přidružena k doméně Virtualmin $1, a proto by zde neměla být odstraněna!

View File

@@ -147,8 +147,6 @@ master_defttl=Standard tid til live for poster
master_edefttl='$1' er ikke en gyldig standard-tid-til-live for poster
master_esoagone=Ingen SOA-registrering fundet!
master_einclude=Yderligere skabelonfil findes ikke
master_vmin=Denne zone administreres af Virtualmin. Records bør redigeres ved hjælp af Virtualmin UI for at sikre, at de stemmer overens med andre virtuelle serverindstillinger.
master_vminalias=Denne zone er et alias for et Virtualmin-domæne, som holdes synkroniseret med dets mål. Optegnelser bør aldrig redigeres her, da eventuelle ændringer vil blive overskrevet!
delete_title=Slet zone
delete_mesg=Er du sikker på, at du vil slette zonen $1? Alle poster og zonefilen vil blive slettet.

View File

@@ -1,6 +1,4 @@
master_inview=$1 im Blick $2
master_vmin=Diese Zone wird von Virtualmin verwaltet. Datensätze sollten über die Virtualmin-Benutzeroberfläche bearbeitet werden, um sicherzustellen, dass sie mit anderen Einstellungen des virtuellen Servers konsistent sind.
master_vminalias=Diese Zone ist ein Alias einer Virtualmin-Domäne, die mit ihrem Ziel synchron gehalten wird. Datensätze sollten hier niemals bearbeitet werden, da alle Änderungen überschrieben werden!
delete_vwarn=Diese Zone ist der Virtualmin-Domäne $1 zugeordnet und sollte daher hier nicht gelöscht werden!

View File

@@ -147,8 +147,6 @@ master_defttl=Προεπιλεγμένος χρόνος ζωής για αρχε
master_edefttl=Το '$1' δεν είναι έγκυρη προεπιλεγμένη ώρα για ζωντανή εγγραφή
master_esoagone=Δεν βρέθηκε αρχείο SOA!
master_einclude=Δεν υπάρχει πρόσθετο αρχείο προτύπου
master_vmin=Αυτή η ζώνη διαχειρίζεται το Virtualmin. Οι εγγραφές θα πρέπει να επεξεργάζονται χρησιμοποιώντας το Virtualmin UI, για να διασφαλιστεί ότι είναι συνεπείς με άλλες ρυθμίσεις εικονικού διακομιστή.
master_vminalias=Αυτή η ζώνη είναι ένα ψευδώνυμο ενός τομέα Virtualmin, ο οποίος διατηρείται σε συγχρονισμό με τον στόχο του. Οι εγγραφές δεν πρέπει ποτέ να επεξεργάζονται εδώ, καθώς τυχόν αλλαγές θα αντικατασταθούν!
delete_title=Διαγραφή Ζώνης
delete_mesg=Είστε βέβαιοι ότι θέλετε να διαγράψετε τη ζώνη $1; Όλες οι εγγραφές και το αρχείο ζώνης θα διαγραφούν.

View File

@@ -147,8 +147,6 @@ master_defttl=Default time-to-live for records
master_edefttl='$1' is not a valid default time-to-live for records
master_esoagone=No SOA record found!
master_einclude=Additional template file does not exist
master_vmin=This zone is managed by Virtualmin. Records should be edited using the Virtualmin UI, to ensure they are consistent with other virtual server settings.
master_vminalias=This zone is an alias of a Virtualmin domain, which is kept in sync with it's target. Records should never be edited here, as any changes will be overwritten!
delete_title=Delete Zone
delete_mesg=Are you sure you want to delete the zone $1 ? All records and the zone file will be deleted.

View File

@@ -37,8 +37,6 @@ master_defttl=Tiempo de vida predeterminado para registros
master_edefttl='$1' no es un tiempo de vida predeterminado válido para los registros
master_esoagone=¡No se ha encontrado el registro SOA!
master_einclude=El archivo de plantilla adicional no existe
master_vmin=Esta zona es administrada por Virtualmin. Los registros deben editarse mediante la interfaz de usuario de Virtualmin para garantizar que sean coherentes con otras configuraciones del servidor virtual.
master_vminalias=Esta zona es un alias de un dominio de Virtualmin, que se mantiene sincronizado con su objetivo. Los registros nunca deben editarse aquí, ya que cualquier cambio se sobrescribirá
delete_mesg3=¿Está seguro de que desea eliminar la zona $1?
delete_vwarn=Esta zona está asociada con el dominio Virtualmin $1, por lo que no debe eliminarse aquí.

View File

@@ -147,8 +147,6 @@ master_defttl=Erregistroen bizitzeko denbora lehenetsia
master_edefttl='$1' ez da erregistroen denbora bizitzeko balio lehenetsia
master_esoagone=Ez da SOA erregistrorik aurkitu!
master_einclude=Ez da txantiloi fitxategi gehigarririk existitzen
master_vmin=Zona hau Virtualmin-ek kudeatzen du. Erregistroak Virtualmin UI erabiliz editatu behar dira, zerbitzari birtualeko beste ezarpen batzuekin bat datozela ziurtatzeko.
master_vminalias=Zona hau Virtualmin domeinu baten alias bat da, zeina helbururekin sinkronizatuta mantentzen dena. Erregistroak ez dira inoiz hemen editatu behar, edozein aldaketa gainidatzi egingo baita!
delete_title=Ezabatu zona
delete_mesg=Ziur $1 zona ezabatu nahi duzula? Erregistro guztiak eta zona fitxategia ezabatuko dira.

View File

@@ -30,8 +30,6 @@ master_movedesc=این منطقه را به یک نمای دیگر منتقل م
master_applymsg2=برای اعمال تغییرات فقط در این منطقه ، روی این دکمه کلیک کنید. این کار فقط در صورتی انجام می شود که حداقل یک بار از زمان ایجاد منطقه ، برای کل سرور اعمال شود.
master_esoagone=هیچ سابقه SOA یافت نشد!
master_einclude=پرونده الگوی اضافی وجود ندارد
master_vmin=این منطقه توسط Virtualmin مدیریت می شود. رکوردها باید با استفاده از Virtualmin UI ویرایش شوند تا اطمینان حاصل شود که با سایر تنظیمات سرور مجازی سازگار هستند.
master_vminalias=این منطقه نام مستعار یک دامنه Virtualmin است که با هدف خود هماهنگ می شود. سوابق هرگز نباید در اینجا ویرایش شوند، زیرا هر تغییری بازنویسی می شود!
delete_mesg3=Are you sure you want to delete the zone $1 ?
delete_vwarn=این منطقه با دامنه Virtualmin $1 همراه است و بنابراین نباید در اینجا حذف شود!

View File

@@ -147,8 +147,6 @@ master_defttl=Tietueiden oletusaika-aika
master_edefttl='$1' ei ole kelvollinen oletusarvoinen elinaika tietueille
master_esoagone=SOA-tietuetta ei löytynyt!
master_einclude=Muuta mallitiedostoa ei ole
master_vmin=Tätä vyöhykettä hallinnoi Virtualmin. Tietueita tulee muokata Virtualmin-käyttöliittymällä, jotta ne ovat yhdenmukaisia muiden virtuaalipalvelinasetusten kanssa.
master_vminalias=Tämä vyöhyke on Virtualmin-verkkotunnuksen alias, joka pidetään synkronoituna kohteensa kanssa. Tietueita ei saa koskaan muokata täällä, sillä kaikki muutokset korvataan!
delete_title=Poista vyöhyke
delete_mesg=Haluatko varmasti poistaa vyöhykkeen $1? Kaikki tietueet ja vyöhyketiedosto poistetaan.

View File

@@ -1,6 +1,3 @@
master_vmin=Cette zone est gérée par Virtualmin. Les enregistrements doivent être modifiés à l'aide de l'interface utilisateur Virtualmin, pour s'assurer qu'ils sont cohérents avec les autres paramètres du serveur virtuel.
master_vminalias=Cette zone est un alias d'un domaine Virtualmin, qui est synchronisé avec sa cible. Les enregistrements ne doivent jamais être modifiés ici, car toute modification sera écrasée !
slave_format=Format de fichier de zone
slave_raw=Binaire brut
slave_text=Texte brut

View File

@@ -147,8 +147,6 @@ master_defttl=זמן ברירת המחדל לחיים עבור רשומות
master_edefttl='$1' אינו זמן ברירת מחדל תקף לחיות עבור רשומות
master_esoagone=לא נמצאה רשומת SOA!
master_einclude=קובץ תבנית נוסף אינו קיים
master_vmin=אזור זה מנוהל על ידי Virtualmin. יש לערוך את הרשומות באמצעות ממשק המשתמש של Virtualmin, כדי להבטיח שהן עולות בקנה אחד עם הגדרות שרת וירטואלי אחרות.
master_vminalias=אזור זה הוא כינוי של דומיין Virtualmin, אשר נשמר מסונכרן עם היעד שלו. לעולם אין לערוך רשומות כאן, מכיוון שכל השינויים יוחלפו!
delete_title=מחק אזור
delete_mesg=האם אתה בטוח שברצונך למחוק את האזור $1 ? כל הרשומות וקובץ האזור יימחקו.

View File

@@ -147,8 +147,6 @@ master_defttl=Zadano vrijeme za snimanje uživo
master_edefttl="$1" nije valjano zadano vrijeme za izradu zapisa
master_esoagone=Nije pronađen SOA zapis!
master_einclude=Dodatna datoteka predloška ne postoji
master_vmin=Ovom zonom upravlja Virtualmin. Zapise treba uređivati pomoću korisničkog sučelja Virtualmin kako bi se osiguralo da su u skladu s drugim postavkama virtualnog poslužitelja.
master_vminalias=Ova zona je pseudonim Virtualmin domene, koja je sinkronizirana sa svojim ciljem. Zapisi se nikada ne smiju uređivati ovdje, jer će sve promjene biti prebrisane!
delete_title=Izbriši zonu
delete_mesg=Jeste li sigurni da želite izbrisati zonu $1? Svi zapisi i zonska datoteka bit će izbrisani.

View File

@@ -10,8 +10,6 @@ master_inview=$1 a $2 nézetben
master_egone=A $1 zóna egyetlen nézetben sem létezik
master_egone2=A $1 zóna nem létezik!
master_egone3=A $1 zóna a $2 nézetben nem létezik!
master_vmin=Ezt a zónát a Virtualmin kezeli. A rekordokat a Virtualmin UI használatával kell szerkeszteni, hogy konzisztensek legyenek a többi virtuális szerver beállításával.
master_vminalias=Ez a zóna egy Virtualmin tartomány álneve, amely szinkronban van a céljával. A rekordokat soha nem szabad itt szerkeszteni, mert az esetleges változtatások felülíródnak!
delete_vwarn=Ez a zóna a $1 Virtualmin domainhez van társítva, ezért itt nem szabad törölni!

View File

@@ -47,8 +47,6 @@ master_defttl=Tempo di vita predefinito per i record
master_edefttl='$1' non è un time-to-live predefinito valido per i record
master_esoagone=Nessun record SOA trovato!
master_einclude=Non esiste un file modello aggiuntivo
master_vmin=Questa zona è gestita da Virtualmin. I record devono essere modificati utilizzando l'interfaccia utente di Virtualmin, per garantire che siano coerenti con le altre impostazioni del server virtuale.
master_vminalias=Questa zona è un alias di un dominio Virtualmin, che viene mantenuto sincronizzato con la sua destinazione. I record non dovrebbero mai essere modificati qui, poiché qualsiasi modifica verrà sovrascritta!
delete_mesg3=Sei sicuro di voler eliminare la zona $1?
delete_onslave=Eliminare anche dai server slave?

View File

@@ -13,8 +13,6 @@ master_inview=ビュー $2の $1
master_egone=ゾーン$1はどのビューにも存在しません
master_egone2=ゾーン$1は存在しません
master_egone3=ビュー$2のゾーン$1は存在しません
master_vmin=このゾーンは Virtualmin によって管理されます。レコードは、他の仮想サーバー設定との一貫性を確保するために、Virtualmin UI を使用して編集する必要があります。
master_vminalias=このゾーンは Virtualmin ドメインのエイリアスであり、ターゲットとの同期が保たれます。変更が上書きされるため、ここでレコードを編集しないでください。
delete_vwarn=このゾーンはVirtualminドメイン $1に関連付けられているため、ここで削除しないでください
delete_vwarn2=このゾーンはVirtualminドメイン $1および $2に関連付けられているため、ここで削除しないでください

View File

@@ -71,8 +71,6 @@ master_defttl=레코드의 기본 수명
master_edefttl='$1'은 (는) 유효한 기본 유효 기간이 아닙니다.
master_esoagone=SOA 레코드가 없습니다!
master_einclude=추가 템플릿 파일이 없습니다
master_vmin=이 영역은 Virtualmin에서 관리합니다. 다른 가상 서버 설정과 일관성을 유지하려면 Virtualmin UI를 사용하여 레코드를 편집해야 합니다.
master_vminalias=이 영역은 대상과 동기화된 상태로 유지되는 Virtualmin 도메인의 별칭입니다. 모든 변경 사항을 덮어쓰게 되므로 여기에서 레코드를 편집하면 안 됩니다!
delete_mesg2=루트 영역을 삭제 하시겠습니까? DNS 서버가 더 이상 인터넷에서 주소를 조회하지 못할 수 있습니다.
delete_mesg3=영역 $1을 삭제 하시겠습니까?

View File

@@ -147,8 +147,6 @@ master_defttl=Numatytasis įrašų gyvavimo laikas
master_edefttl=„$1“ nėra tinkamas numatytasis įrašų gyvavimo laikas
master_esoagone=Nerastas SOA įrašas.
master_einclude=Papildomo šablono failo nėra
master_vmin=Šią zoną valdo „Virtualmin“. Įrašai turi būti redaguojami naudojant „Virtualmin“ vartotojo sąsają, siekiant užtikrinti, kad jie atitiktų kitus virtualaus serverio nustatymus.
master_vminalias=Ši zona yra „Virtualmin“ domeno slapyvardis, kuris yra sinchronizuojamas su savo taikiniu. Įrašai čia niekada neturėtų būti redaguojami, nes bet kokie pakeitimai bus perrašyti!
delete_title=Ištrinti zoną
delete_mesg=Ar tikrai norite ištrinti $1 zoną? Visi įrašai ir zonos failai bus ištrinti.

View File

@@ -147,8 +147,6 @@ master_defttl=Noklusētais ierakstu dzīves laiks
master_edefttl='$1' nav derīgs ierakstu noklusējuma dzīves laiks
master_esoagone=Nav atrasts neviens SOA ieraksts.
master_einclude=Papildu veidnes fails neeksistē
master_vmin=Šo zonu pārvalda Virtualmin. Ieraksti ir jārediģē, izmantojot Virtualmin UI, lai nodrošinātu to atbilstību citiem virtuālā servera iestatījumiem.
master_vminalias=Šī zona ir Virtualmin domēna aizstājvārds, kas tiek sinhronizēts ar tā mērķi. Ierakstus nekad nevajadzētu rediģēt šeit, jo visas izmaiņas tiks pārrakstītas!
delete_title=Dzēst zonu
delete_mesg=Vai tiešām vēlaties izdzēst zonu $1? Visi ieraksti un zonas fails tiks izdzēsti.

View File

@@ -147,8 +147,6 @@ master_defttl=Waktu untuk hidup untuk rekod lalai
master_edefttl='$1' bukan masa lalai yang sah untuk rekod
master_esoagone=Tiada rekod SOA ditemui!
master_einclude=Fail templat tambahan tidak wujud
master_vmin=Zon ini diuruskan oleh Virtualmin. Rekod hendaklah diedit menggunakan UI Virtualmin, untuk memastikan ia konsisten dengan tetapan pelayan maya yang lain.
master_vminalias=Zon ini ialah alias domain Virtualmin, yang disimpan selari dengan sasarannya. Rekod tidak boleh diedit di sini, kerana sebarang perubahan akan ditimpa!
delete_title=Padamkan Zon
delete_mesg=Adakah anda pasti mahu memadamkan zon $1? Semua rekod dan fail zon akan dihapuskan.

View File

@@ -147,8 +147,6 @@ master_defttl=Żmien tal-għajxien awtomatiku għar-rekords
master_edefttl="$1" m'huwiex il-ħin ta 'l-għajxien validu għar-rekords
master_esoagone=Ma nstab l-ebda rekord SOA!
master_einclude=Fajl mudell addizzjonali ma jeżistix
master_vmin=Din iż-żona hija mmexxija minn Virtualmin. Ir-rekords għandhom jiġu editjati bl-użu ta' Virtualmin UI, biex jiġi żgurat li jkunu konsistenti ma' settings oħra ta' server virtwali.
master_vminalias=Din iż-żona hija alias ta' dominju Virtualmin, li jinżamm sinkronizzat mal-mira tiegħu. Ir-rekords m'għandhom qatt jiġu editjati hawn, peress li kwalunkwe tibdil se jinkiteb fuqhom!
delete_title=Ħassar Żona
delete_mesg=Int żgur li trid tħassar iż-żona $1? Ir-rekords kollha u l-fajl taż-żona se jitħassru.

View File

@@ -9,8 +9,6 @@ master_inview=$1 in zicht $2
master_egone=Zone $1 bestaat in geen enkele weergave
master_egone2=Zone $1 bestaat niet!
master_egone3=Zone $1 in zicht $2 bestaat niet!
master_vmin=Deze zone wordt beheerd door Virtualmin. Records moeten worden bewerkt met behulp van de gebruikersinterface van Virtualmin, om ervoor te zorgen dat ze consistent zijn met andere virtuele serverinstellingen.
master_vminalias=Deze zone is een alias van een Virtualmin-domein, dat synchroon wordt gehouden met zijn doel. Records mogen hier nooit worden bewerkt, omdat eventuele wijzigingen worden overschreven!
delete_vwarn=Deze zone is gekoppeld aan het Virtualmin-domein $1 en mag hier dus niet worden verwijderd!

View File

@@ -1,6 +1,3 @@
master_vmin=Denne sonen administreres av Virtualmin. Oppføringer bør redigeres ved hjelp av Virtualmin-grensesnittet for å sikre at de stemmer overens med andre virtuelle serverinnstillinger.
master_vminalias=Denne sonen er et alias for et Virtualmin-domene, som holdes synkronisert med målet. Poster bør aldri redigeres her, da eventuelle endringer vil bli overskrevet!
slave_format=Sone filformat
slave_raw=Rå binær
slave_text=Ren tekst

View File

@@ -3,8 +3,6 @@ index_eexpired_conf=Automatyczne podpisywanie powinno zostać ponownie włączon
index_eexpired_mod=Użyj modułu $1, aby wyłączyć DNSSEC dla tych domen lub sprawdzić, dlaczego podpisywanie kończy się niepowodzeniem.
master_inview=$1 w widoku $2
master_vmin=Tą strefą zarządza Virtualmin. Rekordy należy edytować za pomocą interfejsu użytkownika Virtualmin, aby zapewnić ich spójność z innymi ustawieniami serwera wirtualnego.
master_vminalias=Ta strefa jest aliasem domeny Virtualmin, która jest synchronizowana z celem. Rekordów nigdy nie należy tutaj edytować, ponieważ wszelkie zmiany zostaną nadpisane!
delete_vwarn=Ta strefa jest powiązana z domeną Virtualmin $1, dlatego nie należy jej tutaj usuwać!

View File

@@ -88,8 +88,6 @@ master_defttl=Tempo de vida padrão para registros
master_edefttl='$1' não é um tempo de vida padrão válido para registros
master_esoagone=Nenhum registro SOA encontrado!
master_einclude=Arquivo de modelo adicional não existe
master_vmin=Esta zona é gerenciada pelo Virtualmin. Os registros devem ser editados usando a IU do Virtualmin, para garantir que sejam consistentes com outras configurações do servidor virtual.
master_vminalias=Esta zona é um alias de um domínio Virtualmin, que é mantido em sincronia com seu alvo. Os registros nunca devem ser editados aqui, pois quaisquer alterações serão substituídas!
delete_title=Excluir zona
delete_mesg=Tem certeza de que deseja excluir a zona $1? Todos os registros e o arquivo de zona serão excluídos.

View File

@@ -11,8 +11,6 @@ master_inview=$1 na visualização $2
master_egone=A zona $1 não existe em nenhuma visualização
master_egone2=A zona $1 não existe!
master_egone3=A zona $1 na exibição $2 não existe!
master_vmin=Esta zona é gerenciada pelo Virtualmin. Os registros devem ser editados usando a IU do Virtualmin, para garantir que sejam consistentes com outras configurações do servidor virtual.
master_vminalias=Esta zona é um alias de um domínio Virtualmin, que é mantido em sincronia com seu destino. Os registros nunca devem ser editados aqui, pois quaisquer alterações serão substituídas!
delete_vwarn=Esta zona está associada ao domínio Virtualmin $1 e, portanto, não deve ser excluída aqui!

Some files were not shown because too many files have changed in this diff Show More