diff --git a/helper_scripts/fixcerts b/helper_scripts/fixcerts new file mode 100644 index 0000000000000000000000000000000000000000..9136d1e7155a01c292218bf7c579f28e826302f2 --- /dev/null +++ b/helper_scripts/fixcerts @@ -0,0 +1,151 @@ + #!/bin/bash +##################################################################################### +# # +# Syntax: fixcerts DOMAIN # +# # +# Use: Extend Letsencrypt SSl certificates for commonly grouped services such as # +# Apache,Postfix,Dovecot using Certbot. Useful for keeping all client # +# applications referencing the same virtual domain name, such as auto-config # +# email clients on phones, i.e. mailuser@mydomain.TLD smtp.mydomain.TLD # +# imaps.mydomain.TLD instead of mailuser@mydomain.TLD mail.ISPmaildomain.TLD # +# Also useful when sending mail through services like Gmail that will # +# validate sender through a negotiated TLS encrypted connection. # +# # +# Ex: sh fixcerts myhosteddomain.com # +# # +# Prerequisites: # +# - A Letsencrypt certificate for the DOMAIN must already exist # +# - A seperate certificate each for Dovecot and Postfix were previously generated # +# - All new host names to add MUST already exist in DNS at least as a CNAME # +# - Edit the Dovecot/Postfix conf to use the alternate certificate # +# - Set the variable wr_file to a directory that certbot can read and write from # +# - Set the dom_cert=,dv_cert=,pf_cert=,dv_file=, and pf_file= variables # +# # +# In my case, I ran: # +# certbot certonly -webroot /usr/local/ispconfig/interface/acme -d dc.hrst.xyz # +# certbot certonly -webroot /usr/local/ispconfig/interface/acme -d pf.hrst.xyz # +# to create the separate Dovecot and Postscript certificates, then edited and # +# ran the script to extend those certificate, once per hosted domain # +# # +# If you use only one alternate certifcate for both mail services, set both dv_file # +# and pf_file to the same file name and set one of _cert files="" and # +# use the other. If you don't wish to add to a particular certificate, set the # +# variable ="", such as dom_cert # +# TODO: Pre-validate desired additions as already existing in DNS # +# Generate SRV Records and add to DNS to autoconfig clients # +# # +# Author: tad.hasse@gmail.com # +# # +##################################################################################### + +#bail out on error +set -e + +# Hostnames to add to the main domain certificate +dom_cert="webmail" + +# Hostnames to add to the Dovecot domain certificate +dv_cert="pop3s imap" + +# Hostnames to add to the Postfix domain certificate +pf_cert="mail smtp smtps" + +# Name of the certificate file that handles Dovecot +dv_file="dc.hrst.xyz" + +# Name of the certificate file that handles Postfix +pf_file="pf.hrst.xyz" + +# Writeable webroot for certbot (I use ISPConfig, +wr_file="/usr/local/ispconfig/interface/acme" + +new_cert="" +nanobot="" +affected_services="" + +if [ -z "$1" ] # Is parameter #1 zero length? + then + echo "-No DOMAIN specified" # Or no parameter passed. + exit 1 + fi + +#live_check='/etc/letsencrypt/live/'$1 +if [[ ! -d '/etc/letsencrypt/live/'$1 ]]; then + echo "- DOMAIN certificate for \"$1\" not found -" + exit 1 + fi + +if [[ ! -d '/etc/letsencrypt/live/'${dv_file} ]]; then + echo "- Dovecot/postoffice certificate" ${dv_file}" for \"$1\" not found -" + exit 1 + fi + +if [[ ! -d '/etc/letsencrypt/live/'${pf_file} ]]; then + echo "- Postfix/mail certificate" ${pf_file}" for \"$1\" not found -" + exit 1 + fi + +# Have certbot generate its current certificate list for use as input +certbot certificates >~/certfile + +# Extend base domain certificate which typically only contains the domain.TLD and www.domain.TLD +if [[ ! -z "${dom_cert}" ]]; then + echo + new_cert=$(echo $dom_cert| sed -e "s/ /.$1 /g" -e 's/ / -d /g' -e "s/$/.$1 /g" -e 's/^/-d /g') + echo "Adding" ${new_cert} " to "$1 + nanobot=$(grep -A1 "Certificate Name: "$1 certfile |awk -F': ' '{ {getline}; $1=""; print }'|sed 's/ / -d /g') + doit_cert=$(echo "certbot certonly --webroot -w ${wr_file}${nanobot} ${new_cert}") + ${doit_cert} + affected_services=${affected_services}+"A" +else + echo "Domain Certificate unaffected" + fi + +# Extend the Dovecot certificate +if [[ ! -z "${dv_cert}" ]]; then + echo + new_cert=$(echo $dv_cert| sed -e "s/ /.$1 /g" -e 's/ / -d /g' -e "s/$/.$1 /g" -e 's/^/-d /g') + echo "Adding" ${new_cert} " to "${dv_file} + nanobot=$(grep -A1 "Certificate Name: "${dv_file} certfile |awk -F': ' '{ {getline}; $1=""; print }'|sed 's/ / -d /g') + doit_cert=$(echo "certbot certonly --webroot -w ${wr_file}${nanobot} ${new_cert}") + ${doit_cert} + affected_services=${affected_services}+"D" +else + echo "Dovecot Certificate unaffected" + fi + +# Extend the Postscript certificate +if [[ ! -z "{$pf_cert}" ]]; then + echo + new_cert=$(echo $pf_cert| sed -e "s/ /.$1 /g" -e 's/ / -d /g' -e "s/$/.$1 /g" -e 's/^/-d /g') + echo "Adding" ${new_cert} " to " ${pf_file} + nanobot=$(grep -A1 "Certificate Name: "${pf_file} certfile |awk -F': ' '{ {getline}; $1=""; print }'|sed 's/ / -d /g') + doit_cert=$(echo "certbot certonly --webroot -w ${wr_file}${nanobot} ${new_cert}") + ${doit_cert} + affected_services=${affected_services}+"P" +else + echo "Postfix Certificate unaffected" + fi + + if [[ $affected_services == *"A"* ]]; then + echo "Remember to restart the httpd service" + fi + if [[ $affected_services == *"D"* ]]; then + echo "Remember to restart the dovecot/postoffice service" + fi + if [[ $affected_services == *"P"* ]]; then + echo "Remember to restart the postfix/sendmail service" + fi + +echo +echo +echo "Add the following SRV records to DNS for client setup for "$1 + if [[ $affected_services == *"D"* ]]; then + echo "_imaps._tcp."$1 "SRV 3600 4 60 993 imaps" + echo "_pop3s._tcp."$1 "SRV 3600 6 60 995 pop3s" + echo "_imap._tcp."$1 " SRV 3600 8 60 143 imap" + fi +if [[ $affected_services == *"P"* ]]; then + echo "_smtps._tcp."$1 "SRV 3600 8 60 465 smtps" + echo "_smtp._tcp."$1 " SRV 3600 10 60 587 smtp" + fi \ No newline at end of file diff --git a/install/dist/conf/centos70.conf.php b/install/dist/conf/centos70.conf.php index a40e88ed70e50d7d0bdffaa6a4235b1b96d0fe48..0465e5618a0a33e6e4dc27813b237356c275d090 100644 --- a/install/dist/conf/centos70.conf.php +++ b/install/dist/conf/centos70.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavisd'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd@amavisd'; diff --git a/install/dist/conf/centos72.conf.php b/install/dist/conf/centos72.conf.php index e7ab6030b7210051697de71425724ceaac4a1119..221cc5d7c40cbaf72a014f61bdb2bb2947f646e8 100644 --- a/install/dist/conf/centos72.conf.php +++ b/install/dist/conf/centos72.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavisd'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd@amavisd'; diff --git a/install/dist/conf/debian100.conf.php b/install/dist/conf/debian100.conf.php new file mode 100644 index 0000000000000000000000000000000000000000..28d82b80794fad567dec6720a890596bd4838bcb --- /dev/null +++ b/install/dist/conf/debian100.conf.php @@ -0,0 +1,234 @@ + diff --git a/install/dist/conf/debian40.conf.php b/install/dist/conf/debian40.conf.php index 613c828d14906474fbda3a3b475508e5b8b2f997..c04a54e998e5224e6d061937527184e18b27cc34 100644 --- a/install/dist/conf/debian40.conf.php +++ b/install/dist/conf/debian40.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debian60.conf.php b/install/dist/conf/debian60.conf.php index 2c26dcb9cbb26ae89f1126ce15440471485b028a..e7c8f59845f5cf4b957c5c5fc791f61990ce493f 100644 --- a/install/dist/conf/debian60.conf.php +++ b/install/dist/conf/debian60.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debian90.conf.php b/install/dist/conf/debian90.conf.php index cdaf7aa9a0f1bba39ea7d0ec367e0c0f36d9a4f0..13fd2306543450d27d88f72319388f3ffe07abd8 100644 --- a/install/dist/conf/debian90.conf.php +++ b/install/dist/conf/debian90.conf.php @@ -153,6 +153,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debiantesting.conf.php b/install/dist/conf/debiantesting.conf.php index 92787bf428c441fdfae359ce967b6a813e42cd53..6ea9112dff854e87e39fac2c521d48cecf5fe840 100644 --- a/install/dist/conf/debiantesting.conf.php +++ b/install/dist/conf/debiantesting.conf.php @@ -28,11 +28,11 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -//*** Ubuntu 16.04 default settings +//*** Debian Testing default settings //* Main $conf['language'] = 'en'; -$conf['distname'] = 'ubuntu1604'; +$conf['distname'] = 'debian100'; $conf['hostname'] = 'server1.domain.tld'; // Full hostname $conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; $conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; @@ -83,8 +83,8 @@ $conf['apache']['version'] = '2.4'; $conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; $conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; $conf['apache']['vhost_port'] = '8080'; -$conf['apache']['php_ini_path_apache'] = '/etc/php/7.0/apache2/php.ini'; -$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.0/cgi/php.ini'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.3/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.3/cgi/php.ini'; //* Website base settings $conf['web']['website_basedir'] = '/var/www'; @@ -99,7 +99,7 @@ $conf['web']['apps_vhost_user'] = 'ispapps'; $conf['web']['apps_vhost_group'] = 'ispapps'; //* Fastcgi -$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.0/cgi/'; +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.3/cgi/'; $conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; $conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; @@ -120,6 +120,10 @@ $conf['mailman']['installed'] = false; // will be detected automatically during $conf['mailman']['config_dir'] = '/etc/mailman'; $conf['mailman']['init_script'] = 'mailman'; +//* mlmmj +$conf['mlmmj']['installed'] = false; // will be detected automatically during installation +$conf['mlmmj']['config_dir'] = '/etc/mlmmj'; + //* Getmail $conf['getmail']['installed'] = false; // will be detected automatically during installation $conf['getmail']['config_dir'] = '/etc/getmail'; @@ -149,6 +153,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; @@ -201,11 +210,11 @@ $conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; $conf['nginx']['init_script'] = 'nginx'; $conf['nginx']['vhost_port'] = '8080'; $conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; -$conf['nginx']['php_fpm_init_script'] = 'php7.0-fpm'; -$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.0/fpm/php.ini'; -$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.0/fpm/pool.d'; +$conf['nginx']['php_fpm_init_script'] = 'php7.3-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.3/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.3/fpm/pool.d'; $conf['nginx']['php_fpm_start_port'] = 9010; -$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.0-fpm'; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.3-fpm'; //* OpenVZ $conf['openvz']['installed'] = false; diff --git a/install/dist/conf/fedora9.conf.php b/install/dist/conf/fedora9.conf.php index 80539a78593827e76bb7828ee684833f557b9dd7..19c9a4f6259600499d493c66718cf64bb7ff0a13 100644 --- a/install/dist/conf/fedora9.conf.php +++ b/install/dist/conf/fedora9.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavisd'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd.amavisd'; diff --git a/install/dist/conf/gentoo.conf.php b/install/dist/conf/gentoo.conf.php index 2955cfa71dd391743f705449ea6849428005a367..24c7d0633e0b5b62db4004f329e83d503fb66aad 100644 --- a/install/dist/conf/gentoo.conf.php +++ b/install/dist/conf/gentoo.conf.php @@ -162,6 +162,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_file'] = '/etc/amavisd.conf'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/conf/opensuse112.conf.php b/install/dist/conf/opensuse112.conf.php index fa0504652e9e75d908186507a6c69c67c271f4b9..378320a144eb645262d39e645a1e994d7d2823d7 100644 --- a/install/dist/conf/opensuse112.conf.php +++ b/install/dist/conf/opensuse112.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/conf/ubuntu1604.conf.php b/install/dist/conf/ubuntu1604.conf.php index 9ac56de3f871479033df0a742554ed6e905a3d39..0d3fe23bada198df3c9aae42b6cb42784973a6c1 100644 --- a/install/dist/conf/ubuntu1604.conf.php +++ b/install/dist/conf/ubuntu1604.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/ubuntu1710.conf.php b/install/dist/conf/ubuntu1710.conf.php index 0c87005910a61f8625735be1a6a130eaaee0cd54..0730f8f2d533c712ee78173ebb28b3fed477c514 100644 --- a/install/dist/conf/ubuntu1710.conf.php +++ b/install/dist/conf/ubuntu1710.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/ubuntu1804.conf.php b/install/dist/conf/ubuntu1804.conf.php index 15cdb1c5ebbb74c45ab1f1df2f1c5caf8a008464..2a09f787db46f5abf8fc7d2e15e4804dfe9d3222 100644 --- a/install/dist/conf/ubuntu1804.conf.php +++ b/install/dist/conf/ubuntu1804.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; @@ -227,4 +232,4 @@ $conf['xmpp']['installed'] = false; $conf['xmpp']['init_script'] = 'metronome'; -?> \ No newline at end of file +?> diff --git a/install/dist/lib/centos_base.lib.php b/install/dist/lib/centos_base.lib.php index 8e6741fd693ec22c06fa1e1a38a54b1af1c5e4cf..0fe988439d8098c255bf216489ab6e0053d99e2e 100644 --- a/install/dist/lib/centos_base.lib.php +++ b/install/dist/lib/centos_base.lib.php @@ -111,6 +111,25 @@ class installer_centos extends installer_dist { removeLine('/etc/sysconfig/freshclam', 'FRESHCLAM_DELAY=disabled-warn # REMOVE ME', 1); replaceLine('/etc/freshclam.conf', 'Example', '# Example', 1); + + // get shell-group for amavis + $amavis_group=exec('grep -o "^amavis:\|^vscan:" /etc/group'); + if(!empty($amavis_group)) { + $amavis_group=rtrim($amavis_group, ":"); + } + // get shell-user for amavis + $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd'); + if(!empty($amavis_user)) { + $amavis_user=rtrim($amavis_user, ":"); + } + + // Create the director for DKIM-Keys + if(!is_dir('/var/lib/amavis')) mkdir('/var/lib/amavis', 0750, true); + if(!empty($amavis_user)) exec('chown '.$amavis_user.' /var/lib/amavis'); + if(!empty($amavis_group)) exec('chgrp '.$amavis_group.' /var/lib/amavis'); + if(!is_dir('/var/lib/amavis/dkim')) mkdir('/var/lib/amavis/dkim', 0750); + if(!empty($amavis_user)) exec('chown -R '.$amavis_user.' /var/lib/amavis/dkim'); + if(!empty($amavis_group)) exec('chgrp -R '.$amavis_group.' /var/lib/amavis/dkim'); } diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 0cd71165684f7baf9a6cf4db29c74eab8938f47a..cc234f132e1fb4a66f4d7e5a1b13866617f4bd88 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -68,7 +68,6 @@ class installer extends installer_base { } //* Reconfigure postfix to use dovecot authentication - // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', 'virtual_transport = '.$virtual_transport, @@ -116,6 +115,38 @@ class installer extends installer_base { file_put_contents($config_dir.'/'.$configfile,$content); unset($content); } + if(version_compare($dovecot_version,2.3) >= 0) { + // Remove deprecated setting(s) + removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); + + // Check if we have a dhparams file and if not, create it + if(!file_exists('/etc/dovecot/dh.pem')) { + swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); + if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) { + // convert existing ssl parameters file + $command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } else { + /* + Create a new dhparams file. We use 2048 bit only as it simply takes too long + on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need + a 4096 bit file, create it manually before you install ISPConfig + */ + $command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + //remove #2.3+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#2.3+','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + + } else { + // remove settings which are not supported in Dovecot < 2.3 + removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); + removeLine($config_dir.'/'.$configfile, 'ssl_dh ='); + } } else { if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian6_dovecot.conf.master')) { copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian6_dovecot.conf.master', $config_dir.'/'.$configfile); diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index f1d57f9c83fdb12327395262570c061feaca865b..3af8746908c796967f118a82f83dffda675667f2 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -401,7 +401,6 @@ class installer_dist extends installer_base { } //* Reconfigure postfix to use dovecot authentication - // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', 'virtual_transport = '.$virtual_transport, @@ -450,6 +449,38 @@ class installer_dist extends installer_base { file_put_contents($config_dir.'/'.$configfile,$content); unset($content); } + if(version_compare($dovecot_version,2.3) >= 0) { + // Remove deprecated setting(s) + removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); + + // Check if we have a dhparams file and if not, create it + if(!file_exists('/etc/dovecot/dh.pem')) { + swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); + if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) { + // convert existing ssl parameters file + $command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } else { + /* + Create a new dhparams file. We use 2048 bit only as it simply takes too long + on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need + a 4096 bit file, create it manually before you install ISPConfig + */ + $command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + //remove #2.3+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#2.3+','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + + } else { + // remove settings which are not supported in Dovecot < 2.3 + removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); + removeLine($config_dir.'/'.$configfile, 'ssl_dh ='); + } replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); } else { @@ -1253,11 +1284,11 @@ class installer_dist extends installer_base { $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_on}', ' on', $content); + $content = str_replace('{ssl_on}', 'ssl', $content); $content = str_replace('{ssl_comment}', '', $content); $content = str_replace('{fastcgi_ssl}', 'on', $content); } else { - $content = str_replace('{ssl_on}', ' off', $content); + $content = str_replace('{ssl_on}', '', $content); $content = str_replace('{ssl_comment}', '#', $content); $content = str_replace('{fastcgi_ssl}', 'off', $content); } diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index af692b16896abdc8d4c6c1107cce3429d59e6003..5bb0d9df1966347d54e9dd1b39d62dc462977560 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -785,7 +785,7 @@ class installer extends installer_base $content = str_replace('{cgi_socket}', $cgi_socket, $content); // SSL in apps vhost is off by default. Might change later. - $content = str_replace('{ssl_on}', 'off', $content); + $content = str_replace('{ssl_on}', 'ssl', $content); $content = str_replace('{ssl_comment}', '#', $content); wf($vhost_conf_dir.'/apps.vhost', $content); @@ -1139,11 +1139,11 @@ class installer extends installer_base $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_on}', ' on', $content); + $content = str_replace('{ssl_on}', 'ssl', $content); $content = str_replace('{ssl_comment}', '', $content); $content = str_replace('{fastcgi_ssl}', 'on', $content); } else { - $content = str_replace('{ssl_on}', ' off', $content); + $content = str_replace('{ssl_on}', '', $content); $content = str_replace('{ssl_comment}', '#', $content); $content = str_replace('{fastcgi_ssl}', 'off', $content); } diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 6856317f934a3cac1451373bd7613071754558e1..21cfd9f2bad9d929e280f9abd5d091444131bff7 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -1264,11 +1264,11 @@ class installer_dist extends installer_base { $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_on}', ' on', $content); + $content = str_replace('{ssl_on}', 'ssl', $content); $content = str_replace('{ssl_comment}', '', $content); $content = str_replace('{fastcgi_ssl}', 'on', $content); } else { - $content = str_replace('{ssl_on}', ' off', $content); + $content = str_replace('{ssl_on}', '', $content); $content = str_replace('{ssl_comment}', '#', $content); $content = str_replace('{fastcgi_ssl}', 'off', $content); } diff --git a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master index 5e1c8ebba6fe2616b76196ffa8a5155dd374c014..7e42c8a362b86f9255fbd46aa16c3a546b727a34 100644 --- a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master +++ b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master @@ -67,7 +67,7 @@ $final_spam_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; -# Default settings, we st this very high to not filter aut emails accidently +# Default settings, we set this very high to not filter out emails accidentally $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 20.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 60.0; # add 'spam detected' headers at that level diff --git a/install/install.php b/install/install.php index a324669867fc1a06bbf8c5acb76f76bc3ed87ef3..9dff3facf2e71a085e1cbc0994eb7cc8e967957b 100644 --- a/install/install.php +++ b/install/install.php @@ -385,7 +385,14 @@ if($install_mode == 'standard' || strtolower($inst->simple_query('Configure Mail $inst->configure_amavis(); } - //* Configure Getmail + //* Configure Rspamd + $force = @($conf['rspamd']['installed']) ? true : $inst->force_configure_app('Rspamd', ($install_mode == 'expert')); + if($force) { + swriteln('Configuring Rspamd'); + $inst->configure_rspamd(); + } + +//* Configure Getmail $force = @($conf['getmail']['installed']) ? true : $inst->force_configure_app('Getmail', ($install_mode == 'expert')); if($force) { swriteln('Configuring Getmail'); @@ -538,20 +545,6 @@ $install_ispconfig_interface_default = ($conf['mysql']['master_slave_setup'] == if($install_mode == 'standard' || strtolower($inst->simple_query('Install ISPConfig Web Interface', array('y', 'n'), $install_ispconfig_interface_default,'install_ispconfig_web_interface')) == 'y') { swriteln('Installing ISPConfig'); - //** We want to check if the server is a module or cgi based php enabled server - //** TODO: Don't always ask for this somehow ? - /* - $fast_cgi = $inst->simple_query('CGI PHP Enabled Server?', array('yes','no'),'no'); - - if($fast_cgi == 'yes') { - $alias = $inst->free_query('Script Alias', '/php/'); - $path = $inst->free_query('Script Alias Path', '/path/to/cgi/bin'); - $conf['apache']['vhost_cgi_alias'] = sprintf('ScriptAlias %s %s', $alias, $path); - } else { - $conf['apache']['vhost_cgi_alias'] = ""; - } - */ - //** Customise the port ISPConfig runs on $ispconfig_vhost_port = $inst->free_query('ISPConfig Port', '8080','ispconfig_port'); $temp_admin_password = str_shuffle(bin2hex(openssl_random_pseudo_bytes(4))); @@ -602,6 +595,7 @@ if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') s if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); +if($conf['rspamd']['installed'] == true && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); if($conf['courier']['installed'] == true){ if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); diff --git a/install/lib/classes/tpl.inc.php b/install/lib/classes/tpl.inc.php index 73ff19230b6b95f83e8e32d26b86f1e8f243fec8..5bd8ded1f8818f2e1bb8b6d473d479facc1a0db0 100644 --- a/install/lib/classes/tpl.inc.php +++ b/install/lib/classes/tpl.inc.php @@ -357,147 +357,6 @@ if (!defined('vlibTemplateClassLoaded')) { return true; } - /** - * [** EXPERIMENTAL **] - * Function to create a loop from a Db result resource link. - * @param string $loopname to commit loop. If not set, will use last loopname set using newLoop() - * @param string $result link to a Db result resource - * @param string $db_type, type of db that the result resource belongs to. - * @return boolean true/false - * @access public - */ - public function setDbLoop($loopname, $result, $db_type = 'MYSQL') - { - /* - $db_type = strtoupper($db_type); - if (!in_array($db_type, $this->allowed_loop_dbs)) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_LOOP_DB', WARNING, $db_type); - return false; - } - - $loop_arr = array(); - // TODO: Are all these necessary as were onyl using mysql and possible postgres ? - pedro - switch ($db_type) { - - case 'MYSQL': - if (get_resource_type($result) != 'mysql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = mysql_fetch_assoc($result)) { - $loop_arr[] = $r; - } - break; - - case 'POSTGRESQL': - if (get_resource_type($result) != 'pgsql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - - $nr = (function_exists('pg_num_rows')) ? pg_num_rows($result) : pg_numrows($result); - - for ($i=0; $i < $nr; $i++) { - $loop_arr[] = pg_fetch_array($result, $i, PGSQL_ASSOC); - } - break; - - case 'INFORMIX': - if (!$result) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = ifx_fetch_row($result, 'NEXT')) { - $loop_arr[] = $r; - } - break; - - case 'INTERBASE': - if (get_resource_type($result) != 'interbase result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = ibase_fetch_row($result)) { - $loop_arr[] = $r; - } - break; - - case 'INGRES': - if (!$result) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = ingres_fetch_array(INGRES_ASSOC, $result)) { - $loop_arr[] = $r; - } - break; - - case 'MSSQL': - if (get_resource_type($result) != 'mssql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = mssql_fetch_array($result)) { - $loop_arr[] = $r; - } - break; - - case 'MSQL': - if (get_resource_type($result) != 'msql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = msql_fetch_array($result, MSQL_ASSOC)) { - $loop_arr[] = $r; - } - break; - - case 'OCI8': - if (get_resource_type($result) != 'oci8 statement') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while(OCIFetchInto($result, &$r, OCI_ASSOC+OCI_RETURN_LOBS)) { - $loop_arr[] = $r; - } - break; - - case 'ORACLE': - if (get_resource_type($result) != 'oracle Cursor') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while(ora_fetch_into($result, &$r, ORA_FETCHINTO_ASSOC)) { - $loop_arr[] = $r; - } - break; - - case 'OVRIMOS': - if (!$result) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while(ovrimos_fetch_into($result, &$r, 'NEXT')) { - $loop_arr[] = $r; - } - break; - - case 'SYBASE': - if (get_resource_type($result) != 'sybase-db result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - - while($r = sybase_fetch_array($result)) { - $loop_arr[] = $r; - } - break; - } - $this->setLoop($loopname, $loop_arr); - return true; - */ - } - /** * Sets the name for the curent loop in the 3 step loop process. * @param string $name string to define loop name diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 9e2afe76c4d6a524165e7d263231086064a07b58..1e49e025ca0360944a5ba6bd0bd12f5a7543dc4f 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -186,7 +186,7 @@ function get_distname() { break; default: $relname = "UNKNOWN"; - $distconfid = 'ubuntu1604'; + $distconfid = 'ubuntu1804'; } $distver = $ver.$lts." ".$relname; swriteln("Operating System: ".$distname.' '.$distver."\n"); @@ -214,19 +214,26 @@ function get_distname() { $distid = 'debian60'; $distbaseid = 'debian'; swriteln("Operating System: Debian 7.0 (Wheezy/Sid) or compatible\n"); - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '8') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '8') { + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,1) == '8') { $distname = 'Debian'; $distver = 'Jessie'; $distid = 'debian60'; $distbaseid = 'debian'; swriteln("Operating System: Debian 8.0 (Jessie) or compatible\n"); - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '9') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '9') { + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,1) == '9') { $distname = 'Debian'; $distver = 'Stretch'; $distconfid = 'debian90'; $distid = 'debian60'; $distbaseid = 'debian'; swriteln("Operating System: Debian 9.0 (Stretch) or compatible\n"); + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,2) == '10') { + $distname = 'Debian'; + $distver = 'Buster'; + $distconfid = 'debian100'; + $distid = 'debian60'; + $distbaseid = 'debian'; + swriteln("Operating System: Debian 10.0 (Buster) or compatible\n"); } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; @@ -238,7 +245,7 @@ function get_distname() { $distname = 'Debian'; $distver = 'Unknown'; $distid = 'debian60'; - $distconfid = 'debian90'; + $distconfid = 'debian100'; $distbaseid = 'debian'; swriteln("Operating System: Debian or compatible, unknown version.\n"); } diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 10cfbaf9654bb5f8e31652069f5a01eb97a7dbc3..513858ca687065a51e9be208bea37e744fb0cab3 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -163,6 +163,7 @@ class installer_base { if(is_installed('dovecot')) $conf['dovecot']['installed'] = true; if(is_installed('saslauthd')) $conf['saslauthd']['installed'] = true; if(is_installed('amavisd-new') || is_installed('amavisd')) $conf['amavis']['installed'] = true; + if(is_installed('rspamd')) $conf['rspamd']['installed'] = true; if(is_installed('clamdscan')) $conf['clamav']['installed'] = true; if(is_installed('pure-ftpd') || is_installed('pure-ftpd-wrapper')) $conf['pureftpd']['installed'] = true; if(is_installed('mydns') || is_installed('mydns-ng')) $conf['mydns']['installed'] = true; @@ -288,11 +289,15 @@ class installer_base { $this->db->query("DROP USER ?@?", $conf['mysql']['ispconfig_user'], $from_host); $this->db->query("DROP DATABASE IF EXISTS ?", $conf['mysql']['database']); - //* Create the ISPConfig database user in the local database - $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ?? TO ?@? IDENTIFIED BY ?'; - if(!$this->db->query($query, $conf['mysql']['database'] . ".*", $conf['mysql']['ispconfig_user'], $from_host, $conf['mysql']['ispconfig_password'])) { + //* Create the ISPConfig database user and grant permissions in the local database + $query = 'CREATE USER ?@? IDENTIFIED BY ?'; + if(!$this->db->query($query, $conf['mysql']['ispconfig_user'], $from_host, $conf['mysql']['ispconfig_password'])) { $this->error('Unable to create database user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); } + $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ?? TO ?@?'; + if(!$this->db->query($query, $conf['mysql']['database'] . ".*", $conf['mysql']['ispconfig_user'], $from_host)) { + $this->error('Unable to grant databse permissions to user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); + } //* Set the database name in the DB library $this->db->setDBName($conf['mysql']['database']); @@ -321,6 +326,8 @@ class installer_base { $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi']; $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; + $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavisd'; + $tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n'; $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir']; @@ -1046,7 +1053,7 @@ class installer_base { $regex = "/^maildrop unix.*pipe flags=DRhu user=vmail argv=\\/usr\\/bin\\/maildrop -d ".$cf['vmail_username']." \\$\{extension} \\$\{recipient} \\$\{user} \\$\{nexthop} \\$\{sender}/"; $configfile = $config_dir.'/master.cf'; if($this->get_postfix_service('maildrop', 'unix')) { - exec ("postconf -M maildrop.unix &> /dev/null", $out, $ret); + exec ("postconf -M maildrop.unix 2> /dev/null", $out, $ret); $change_maildrop_flags = @(preg_match($regex, $out[0]) && $out[0] !='')?false:true; } else { $change_maildrop_flags = @(preg_match($regex, $configfile))?false:true; @@ -1297,6 +1304,38 @@ class installer_base { file_put_contents($config_dir.'/'.$configfile,$content); unset($content); } + if(version_compare($dovecot_version,2.3) >= 0) { + // Remove deprecated setting(s) + removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); + + // Check if we have a dhparams file and if not, create it + if(!file_exists('/etc/dovecot/dh.pem')) { + swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); + if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) { + // convert existing ssl parameters file + $command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } else { + /* + Create a new dhparams file. We use 2048 bit only as it simply takes too long + on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need + a 4096 bit file, create it manually before you install ISPConfig + */ + $command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + //remove #2.3+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#2.3+','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + + } else { + // remove settings which are not supported in Dovecot < 2.3 + removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); + removeLine($config_dir.'/'.$configfile, 'ssl_dh ='); + } } //* dovecot-lmtpd @@ -1422,6 +1461,193 @@ class installer_base { } + public function configure_rspamd() { + global $conf; + + //* These postconf commands will be executed on installation and update + $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . '.server', $conf['server_id']); + $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); + unset($server_ini_rec); + + $mail_config = $server_ini_array['mail']; + if($mail_config['content_filter'] === 'rspamd') { + exec("postconf -X 'receive_override_options'"); + exec("postconf -X 'content_filter'"); + + exec("postconf -e 'smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'non_smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'milter_protocol = 6'"); + exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'"); + exec("postconf -e 'milter_default_action = accept'"); + + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); + + $new_options = array(); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); + foreach ($options as $value) { + if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { + $new_options[] = $value; + } + } + exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + + } + + if(is_user('_rspamd') && is_group('amavis')) { + exec("usermod -G amavis _rspamd"); + } elseif(is_user('rspamd') && is_group('amavis')) { + exec("usermod -G amavis rspamd"); + } + + if(!is_dir('/etc/rspamd/local.d/')){ + mkdir('/etc/rspamd/local.d/', 0755, true); + } + + if(!is_dir('/etc/rspamd/override.d/')){ + mkdir('/etc/rspamd/override.d/', 0755, true); + } + + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { + $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } + $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM ?? WHERE `dkim` = ? ORDER BY `domain` ASC', $conf['mysql']['database'] . '.mail_domain', 'y'); + $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); + $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); + foreach($dkim_domains as $dkim_domain) { + fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); + fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector'] . "\n"); + } + fclose($fpp); + fclose($fps); + unset($dkim_domains); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.conf.master'); + + $whitelist_ips = array(); + $ips = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); + if(is_array($ips) && !empty($ips)){ + foreach($ips as $ip){ + $whitelist_ips[] = array('ip' => $ip['ip_address']); + } + } + $tpl->setLoop('whitelist_ips', $whitelist_ips); + wf('/etc/rspamd/local.d/users.conf', $tpl->grab()); + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); + } else { + exec('cp tpl/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); + } else { + exec('cp tpl/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); + } else { + exec('cp tpl/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); + } else { + exec('cp tpl/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); + } else { + exec('cp tpl/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); + } else { + exec('cp tpl/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); + } else { + exec('cp tpl/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + } else { + exec('cp tpl/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); + } else { + exec('cp tpl/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + } else { + exec('cp tpl/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + } else { + exec('cp tpl/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural.conf.master /etc/rspamd/local.d/neural.conf'); + } else { + exec('cp tpl/rspamd_neural.conf.master /etc/rspamd/local.d/neural.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural_group.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); + } else { + exec('cp tpl/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); + } + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_dkim_signing.conf.master'); + $tpl->setVar('dkim_path', $mail_config['dkim_path']); + wf('/etc/rspamd/local.d/dkim_signing.conf', $tpl->grab()); + + exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); + + $command = 'usermod -a -G amavis _rspamd'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + if(strpos(rf('/etc/rspamd/rspamd.conf'), '.include "$LOCAL_CONFDIR/local.d/users.conf"') === false){ + af('/etc/rspamd/rspamd.conf', '.include "$LOCAL_CONFDIR/local.d/users.conf"'); + } + + if(!isset($mail_config['rspamd_password']) || !$mail_config['rspamd_password']) { + $mail_config['rspamd_password'] = str_shuffle(bin2hex(openssl_random_pseudo_bytes(12))); + + $server_ini_array['mail']['rspamd_password'] = $mail_config['rspamd_password']; + } + + $server_ini_array['mail']['rspamd_available'] = 'y'; + $server_ini_string = array_to_ini($server_ini_array); + if($this->dbmaster != $this->db) { + $this->dbmaster->query('UPDATE `server` SET `config` = ? WHERE `server_id` = ?', $server_ini_string, $conf['server_id']); + } + $this->db->query('UPDATE `server` SET `config` = ? WHERE `server_id` = ?', $server_ini_string, $conf['server_id']); + unset($server_ini_array); + unset($server_ini_string); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_worker-controller.inc.master'); + $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); + wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + chmod('/etc/rspamd/local.d/worker-controller.inc', 0644); + } + public function configure_spamassassin() { global $conf; @@ -2033,7 +2259,10 @@ class installer_base { $tpl->setVar('logging','yes'); } - + if($conf['rspamd']['installed'] == true) { + $tpl->setVar('use_rspamd', 'yes'); + } + // comment out the listen directive if port is 80 or 443 if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) { $tpl->setVar('vhost_port_listen','#'); @@ -2047,8 +2276,8 @@ class installer_base { //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); //* and create the symlink if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost'); - if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost')) { - symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); + if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost') && @is_file($vhost_conf_dir.'/apps.vhost')) { + @symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); } if(!is_file($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter')) { @@ -2101,6 +2330,12 @@ class installer_base { $apps_vhost_ip = $conf['web']['apps_vhost_ip'].':'; } + if($conf['rspamd']['installed'] == true) { + $content = str_replace('{use_rspamd}', '', $content); + } else { + $content = str_replace('{use_rspamd}', '# ', $content); + } + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); @@ -2120,6 +2355,7 @@ class installer_base { || file_exists('/var/run/php/php7.1-fpm.sock') || file_exists('/var/run/php/php7.2-fpm.sock') || file_exists('/var/run/php/php7.3-fpm.sock') + || file_exists('/var/run/php/php7.4-fpm.sock') ){ $use_tcp = '#'; $use_socket = ''; @@ -2131,13 +2367,15 @@ class installer_base { $content = str_replace('{use_socket}', $use_socket, $content); // SSL in apps vhost is off by default. Might change later. - $content = str_replace('{ssl_on}', 'off', $content); + $content = str_replace('{ssl_on}', '', $content); $content = str_replace('{ssl_comment}', '#', $content); // Fix socket path on PHP 7 systems if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); if(file_exists('/var/run/php/php7.2-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.2-fpm.sock', $content); + if(file_exists('/var/run/php/php7.3-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.3-fpm.sock', $content); + if(file_exists('/var/run/php/php7.4-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.4-fpm.sock', $content); wf($vhost_conf_dir.'/apps.vhost', $content); @@ -2564,11 +2802,11 @@ class installer_base { $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_on}', 'on', $content); + $content = str_replace('{ssl_on}', 'ssl', $content); $content = str_replace('{ssl_comment}', '', $content); $content = str_replace('{fastcgi_ssl}', 'on', $content); } else { - $content = str_replace('{ssl_on}', 'off', $content); + $content = str_replace('{ssl_on}', '', $content); $content = str_replace('{ssl_comment}', '#', $content); $content = str_replace('{fastcgi_ssl}', 'off', $content); } diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index 3406b760b0565049562acbfb06200e05ec7f8cc8..4dcb31cff128ddcc5c6f3bd81a4526de13eb5253 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -103,7 +103,7 @@ function checkDbHealth() { $notok = array(); echo "Checking ISPConfig database .. "; - exec("mysqlcheck -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." -r ".escapeshellarg($conf["mysql"]["database"]), $result); + exec("mysqlcheck -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." --auto-repair ".escapeshellarg($conf["mysql"]["database"]), $result); for( $i=0; $isimple_query('Delete obsolete file ' . $file . '?', array('y', 'n', 'a', 'all', 'none'), 'y'); + if($answer == 'n') continue; + elseif($answer == 'a' || $answer == 'all') $del_all = true; + elseif($answer == 'none') break; + } + if(@is_file('/usr/local/ispconfig/' . $file) && !@is_file($curpath . '/' . $file)) { + // be sure this is not a file contained in installation! + @unlink('/usr/local/ispconfig/' . $file); + ilog('Deleted obsolete file /usr/local/ispconfig/' . $file); + $c++; + } + } + ilog($c . 'obsolete files deleted.'); + } +} + +?> diff --git a/install/sql/incremental/upd_0002.sql b/install/sql/incremental/upd_0002.sql index e71e11182641408728d78c38a27114ae0e794905..7802dfa160665ab536a22734754d39bb2646b9b0 100644 --- a/install/sql/incremental/upd_0002.sql +++ b/install/sql/incremental/upd_0002.sql @@ -5,4 +5,4 @@ CREATE TABLE IF NOT EXISTS `sys_session` ( `session_data` longtext, PRIMARY KEY (`session_id`), KEY `last_updated` (`last_updated`) -) ENGINE=MyISAM; \ No newline at end of file +); \ No newline at end of file diff --git a/install/sql/incremental/upd_0004.sql b/install/sql/incremental/upd_0004.sql index 3bba2461a6c6aacff17bddeb3a02fe4aa1f0c75c..6153fc7732807e1b98bd06b35f47ee2a39099bc3 100644 --- a/install/sql/incremental/upd_0004.sql +++ b/install/sql/incremental/upd_0004.sql @@ -11,7 +11,7 @@ CREATE TABLE `help_faq_sections` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; +) AUTO_INCREMENT=1; INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL); @@ -27,7 +27,7 @@ CREATE TABLE `help_faq` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; +) AUTO_INCREMENT=1; INSERT INTO `help_faq` VALUES (1,1,0,'I\'d like to know ...','Yes, of course.',1,1,'riud','riud','r'); diff --git a/install/sql/incremental/upd_0007.sql b/install/sql/incremental/upd_0007.sql index cea38132291576f418117da7517f31147f106b8d..0cdf99e2bcb92a29603d5e50bbaa18e60fe156ed 100644 --- a/install/sql/incremental/upd_0007.sql +++ b/install/sql/incremental/upd_0007.sql @@ -14,6 +14,6 @@ CREATE TABLE IF NOT EXISTS `mail_mailinglist` ( `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`mailinglist_id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; +) AUTO_INCREMENT=1; DROP TABLE `mail_mailman_domain`; \ No newline at end of file diff --git a/install/sql/incremental/upd_0009.sql b/install/sql/incremental/upd_0009.sql index 5be069c735bdfc2730be651087cb5b0549dbab90..43262d65b9063a5d3c5bc197cbb11fad1219a226 100644 --- a/install/sql/incremental/upd_0009.sql +++ b/install/sql/incremental/upd_0009.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS `proxy_reverse` ( `rewrite_url_dst` varchar(100) NOT NULL, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`rewrite_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `firewall_filter` ( @@ -38,7 +38,7 @@ CREATE TABLE IF NOT EXISTS `firewall_filter` ( `active` enum('n','y') NOT NULL default 'y', `client_id` int(11) NOT NULL, PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `firewall_forward` ( `firewall_id` int(11) unsigned NOT NULL auto_increment, @@ -59,7 +59,7 @@ CREATE TABLE IF NOT EXISTS `firewall_forward` ( `active` enum('n','y') NOT NULL default 'y', `client_id` int(11) NOT NULL, PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; alter table `server` add column `proxy_server` tinyint(1) not null after `vserver_server`; alter table `server` add column `firewall_server` tinyint(1) not null after `proxy_server`; diff --git a/install/sql/incremental/upd_0012.sql b/install/sql/incremental/upd_0012.sql index 2ba957f8d9c9d9e39bb5f8dde0c0d82fff5c110b..1fd355160c84eb0fcd77a0f1bcf76d3c5521ba1f 100644 --- a/install/sql/incremental/upd_0012.sql +++ b/install/sql/incremental/upd_0012.sql @@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ip` ( `vm_id` int(11) NOT NULL DEFAULT '0', `reserved` varchar(255) NOT NULL DEFAULT 'n', PRIMARY KEY (`ip_address_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ip` @@ -40,7 +40,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ostemplate` ( `active` varchar(255) NOT NULL DEFAULT 'y', `description` text, PRIMARY KEY (`ostemplate_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ostemplate` @@ -100,7 +100,7 @@ CREATE TABLE IF NOT EXISTS `openvz_template` ( `create_dns` varchar(1) NOT NULL DEFAULT 'n', `capability` varchar(255) DEFAULT NULL, PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_template` @@ -119,7 +119,7 @@ CREATE TABLE IF NOT EXISTS `openvz_traffic` ( `traffic_date` date NOT NULL, `traffic_bytes` bigint(32) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`veid`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -- Dumping data for table `openvz_traffic` @@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` ( `capability` text NOT NULL, `config` mediumtext NOT NULL, PRIMARY KEY (`vm_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_vm` diff --git a/install/sql/incremental/upd_0013.sql b/install/sql/incremental/upd_0013.sql index 9b43d336163a51873bb05c1e5a80cfa7b5e93197..bc38241bb4fc5880e7416816509e8b6cba3d993f 100644 --- a/install/sql/incremental/upd_0013.sql +++ b/install/sql/incremental/upd_0013.sql @@ -16,5 +16,5 @@ CREATE TABLE `iptables` ( `target` varchar(10) DEFAULT NULL COMMENT 'ACCEPT DROP REJECT LOG', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`iptables_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; diff --git a/install/sql/incremental/upd_0019.sql b/install/sql/incremental/upd_0019.sql index 60c464cea71cbd8cb9b2eb70bccb991a2602291d..1bd990c5d01dfbc8b94863d84cdd501b613fd05e 100644 --- a/install/sql/incremental/upd_0019.sql +++ b/install/sql/incremental/upd_0019.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS `help_faq` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `help_faq_sections` ( `hfs_id` int(11) NOT NULL AUTO_INCREMENT, @@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `help_faq_sections` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `web_folder` ( `web_folder_id` bigint(20) NOT NULL AUTO_INCREMENT, @@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS `web_folder` ( `path` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `web_folder_user` ( `web_folder_user_id` bigint(20) NOT NULL AUTO_INCREMENT, @@ -50,7 +50,7 @@ CREATE TABLE IF NOT EXISTS `web_folder_user` ( `password` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; DROP TABLE `mail_greylist`; DROP TABLE `firewall_filter`; diff --git a/install/sql/incremental/upd_0028.sql b/install/sql/incremental/upd_0028.sql index 0020cdd9ac04235b4e5965560563be251e1cdd8d..67023de06730777b7566de54d1d541b58a6659c3 100644 --- a/install/sql/incremental/upd_0028.sql +++ b/install/sql/incremental/upd_0028.sql @@ -9,4 +9,4 @@ CREATE TABLE `web_backup` ( `tstamp` int(10) unsigned NOT NULL, `filename` varchar(255) NOT NULL, PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/install/sql/incremental/upd_0031.sql b/install/sql/incremental/upd_0031.sql index 0fb25a5d407b0bd7d3bc43bfdfd0ac80c0119db4..7ebdef95c05bc48214ab8a19546b14bc8f8e7bd2 100644 --- a/install/sql/incremental/upd_0031.sql +++ b/install/sql/incremental/upd_0031.sql @@ -14,5 +14,5 @@ CREATE TABLE `server_php` ( `php_fpm_ini_dir` varchar(255) DEFAULT NULL, `php_fpm_pool_dir` varchar(255) DEFAULT NULL, PRIMARY KEY (`server_php_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `web_domain` ADD `fastcgi_php_version` VARCHAR( 255 ) NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/incremental/upd_0033.sql b/install/sql/incremental/upd_0033.sql index d4b3c0d6a229e3308336da9cd0b9655e92c25e46..5d2b93cdba847a52b21ca36235c273a27740c47b 100644 --- a/install/sql/incremental/upd_0033.sql +++ b/install/sql/incremental/upd_0033.sql @@ -10,4 +10,4 @@ CREATE TABLE IF NOT EXISTS `client_circle` ( `description` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`circle_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; \ No newline at end of file +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; \ No newline at end of file diff --git a/install/sql/incremental/upd_0034.sql b/install/sql/incremental/upd_0034.sql index 8ae098c011b910d190db6dc74d8df7a5f616abf2..85e49f70bb6e0999852fbebb9cb6a53b17ef8be6 100644 --- a/install/sql/incremental/upd_0034.sql +++ b/install/sql/incremental/upd_0034.sql @@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances` ( `package_id` int(4) NOT NULL, `instance_status` int(4) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -31,7 +31,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances_settings` ( `name` varchar(255) NOT NULL, `value` text NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `aps_packages` ( `package_url` TEXT NOT NULL, `package_status` int(1) NOT NULL DEFAULT '2', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -63,7 +63,7 @@ CREATE TABLE IF NOT EXISTS `aps_settings` ( `value` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- diff --git a/install/sql/incremental/upd_0035.sql b/install/sql/incremental/upd_0035.sql index 5f8031c514a4adfeb4ab25bc374f9fa6a1e63113..1a453e5875660e90a432a39cb8a8bcb6dc764f0d 100644 --- a/install/sql/incremental/upd_0035.sql +++ b/install/sql/incremental/upd_0035.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS `sys_theme` ( `username` varchar(64) NOT NULL, `logo_url` varchar(255) NOT NULL, PRIMARY KEY (`var_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- diff --git a/install/sql/incremental/upd_0039.sql b/install/sql/incremental/upd_0039.sql index af8a5afc5af10f7a2f6a7f81ca5936fc7376e655..b090db4f741ba657cfd3a3978488f062b4d504e1 100644 --- a/install/sql/incremental/upd_0039.sql +++ b/install/sql/incremental/upd_0039.sql @@ -15,7 +15,7 @@ CREATE TABLE IF NOT EXISTS `web_database_user` ( `database_user` varchar(64) DEFAULT NULL, `database_password` varchar(64) DEFAULT NULL, PRIMARY KEY (`database_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- diff --git a/install/sql/incremental/upd_0040.sql b/install/sql/incremental/upd_0040.sql index b39e8f11ffb6cb0a542cc115f5d4494e17573b64..f572a6e73befcb9d2be7acd994744e3e6233bd3c 100644 --- a/install/sql/incremental/upd_0040.sql +++ b/install/sql/incremental/upd_0040.sql @@ -21,4 +21,4 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` ( `snippet` mediumtext, `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`directive_snippets_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/install/sql/incremental/upd_0050.sql b/install/sql/incremental/upd_0050.sql index bc31868a7006584e77465fd1de51167db04a82dc..0ce01b9b4579158de88943b9aa7a88258b3ce578 100644 --- a/install/sql/incremental/upd_0050.sql +++ b/install/sql/incremental/upd_0050.sql @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS `dns_slave` ( PRIMARY KEY (`id`), KEY `origin` (`origin`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `dns_slave` DROP INDEX `origin`; ALTER TABLE `dns_slave` ADD CONSTRAINT `slave` UNIQUE (`origin`,`server_id`); \ No newline at end of file diff --git a/install/sql/incremental/upd_0056.sql b/install/sql/incremental/upd_0056.sql index c7cb5285cec66cbe19fa2c507668a09cf4aebb6d..d9e1e022896afd63f76b297788dbd2219feb2214 100644 --- a/install/sql/incremental/upd_0056.sql +++ b/install/sql/incremental/upd_0056.sql @@ -4,7 +4,7 @@ CREATE TABLE `client_template_assigned` ( `client_template_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`assigned_template_id`), KEY `client_id` (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `client` ADD `gender` enum('','m','f') NOT NULL DEFAULT '' AFTER `company_id`, ADD `locked` enum('n','y') NOT NULL DEFAULT 'n' AFTER `created_at`, diff --git a/install/sql/incremental/upd_0057.sql b/install/sql/incremental/upd_0057.sql index b8452fe6e9fddcbc9df31450f3791cad9367449f..01b2c58de018d19a9585a581f2fb024254de42e0 100644 --- a/install/sql/incremental/upd_0057.sql +++ b/install/sql/incremental/upd_0057.sql @@ -4,4 +4,4 @@ CREATE TABLE IF NOT EXISTS `sys_cron` ( `next_run` datetime NULL DEFAULT NULL, `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; diff --git a/install/sql/incremental/upd_0062.sql b/install/sql/incremental/upd_0062.sql index cee5ff93cc3b28873f8e7ac83b9f68de8314cd58..039a0bd005f5321f1e55cb61fa10fb9898f56af8 100644 --- a/install/sql/incremental/upd_0062.sql +++ b/install/sql/incremental/upd_0062.sql @@ -8,7 +8,7 @@ CREATE TABLE `mail_backup` ( `filename` varchar(255) NOT NULL, `filesize` VARCHAR(10) NOT NULL, PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `mail_user` ADD `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none'; ALTER TABLE `mail_user` ADD `backup_copies` INT NOT NULL DEFAULT '1'; diff --git a/install/sql/incremental/upd_0063.sql b/install/sql/incremental/upd_0063.sql index fc2534ac2435aef808c2b32115f746cbf1a01191..08e2f04f93c51e8d304ebf7d48e1ce402961ba98 100644 --- a/install/sql/incremental/upd_0063.sql +++ b/install/sql/incremental/upd_0063.sql @@ -12,7 +12,7 @@ CREATE TABLE `client_message_template` ( `subject` varchar(255) DEFAULT NULL, `message` text, PRIMARY KEY (`client_message_template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `spamfilter_policy` ADD `policyd_quota_in` int(11) NOT NULL DEFAULT '-1', ADD `policyd_quota_in_period` int(11) NOT NULL DEFAULT '24', ADD `policyd_quota_out` int(11) NOT NULL DEFAULT '-1', diff --git a/install/sql/incremental/upd_0075.sql b/install/sql/incremental/upd_0075.sql index acca4e6ac801dbe3442119a9658d83c506762fc9..ce1bacf2d13dcca908b855aeda08cb6bf6d57f96 100644 --- a/install/sql/incremental/upd_0075.sql +++ b/install/sql/incremental/upd_0075.sql @@ -77,4 +77,4 @@ CREATE TABLE IF NOT EXISTS `dns_slave` ( PRIMARY KEY (`id`), UNIQUE KEY `slave` (`origin`,`server_id`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/install/sql/incremental/upd_0081.sql b/install/sql/incremental/upd_0081.sql index 69236784c7455db0be4671022c74cac942c22405..d24ce19ce941d32a39be18ad74dce80233511e9e 100644 --- a/install/sql/incremental/upd_0081.sql +++ b/install/sql/incremental/upd_0081.sql @@ -126,7 +126,7 @@ CREATE TABLE `xmpp_domain` ( PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Table structure for table `xmpp_user` @@ -146,7 +146,7 @@ CREATE TABLE `xmpp_user` ( PRIMARY KEY (`xmppuser_id`), KEY `server_id` (`server_id`,`jid`), KEY `jid_active` (`jid`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -176,7 +176,7 @@ CREATE TABLE `server_ip_map` ( `destination_ip` varchar(35) DEFAULT '', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`server_ip_map_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `web_domain` ADD COLUMN `rewrite_to_https` ENUM('y','n') NOT NULL DEFAULT 'n' AFTER `seo_redirect`; @@ -199,7 +199,7 @@ CREATE TABLE `ftp_traffic` ( `in_bytes` bigint(32) unsigned NOT NULL, `out_bytes` bigint(32) unsigned NOT NULL, UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `mail_forwarding` ADD COLUMN `allow_send_as` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `active`; UPDATE `mail_forwarding` SET `allow_send_as` = 'y' WHERE `type` = 'alias'; diff --git a/install/sql/incremental/upd_0087.sql b/install/sql/incremental/upd_0087.sql new file mode 100644 index 0000000000000000000000000000000000000000..4d392cc441ee746075277d78dddb08946262ab6f --- /dev/null +++ b/install/sql/incremental/upd_0087.sql @@ -0,0 +1,85 @@ +ALTER TABLE `sys_datalog` ADD `session_id` varchar(64) NOT NULL DEFAULT '' AFTER `error`; +ALTER TABLE `sys_user` CHANGE `sys_userid` `sys_userid` INT(11) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Created by userid'; +ALTER TABLE `sys_user` CHANGE `sys_groupid` `sys_groupid` INT(11) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Created by groupid'; +ALTER TABLE `web_domain` ADD COLUMN `php_fpm_chroot` enum('n','y') NOT NULL DEFAULT 'n' AFTER `php_fpm_use_socket`; + +CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `active` enum('N','Y') NOT NULL DEFAULT 'N', + `ca_name` varchar(255) NOT NULL DEFAULT '', + `ca_issue` varchar(255) NOT NULL DEFAULT '', + `ca_wildcard` enum('Y','N') NOT NULL DEFAULT 'N', + `ca_iodef` text NOT NULL, + `ca_critical` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY (`ca_issue`) +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); + +UPDATE `dns_ssl_ca` SET `ca_issue` = 'comodo.com' WHERE `ca_issue` = 'comodoca.com'; +DELETE FROM `dns_ssl_ca` WHERE `ca_issue` = 'geotrust.com'; +DELETE FROM `dns_ssl_ca` WHERE `ca_issue` = 'thawte.com'; +UPDATE `dns_ssl_ca` SET `ca_name` = 'Symantec / Thawte / GeoTrust' WHERE `ca_issue` = 'symantec.com'; + +ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CAA','CNAME','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; +ALTER TABLE `dns_rr` CHANGE `data` `data` TEXT NOT NULL; +INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `active`, `ca_name`, `ca_issue`, `ca_wildcard`, `ca_iodef`, `ca_critical`) VALUES +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'AC Camerfirma', 'camerfirma.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'ACCV', 'accv.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Actalis', 'actalis.it', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Amazon', 'amazon.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Asseco', 'certum.pl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Buypass', 'buypass.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CA Disig', 'disig.sk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CATCert', 'aoc.cat', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certinomis', 'www.certinomis.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certizen', 'hongkongpost.gov.hk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'e-tugra', 'e-tugra.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'EDICOM', 'edicomgroup.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Entrust', 'entrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Firmaprofesional', 'firmaprofesional.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'FNMT', 'fnmt.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GlobalSign', 'globalsign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GoDaddy', 'godaddy.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Google Trust Services', 'pki.goog', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GRCA', 'gca.nat.gov.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'HARICA', 'harica.gr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'IdenTrust', 'identrust.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Izenpe', 'izenpe.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Kamu SM', 'kamusm.gov.tr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Let''s Encrypt', 'letsencrypt.org', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Microsec e-Szigno', 'e-szigno.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'NetLock', 'netlock.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PKIoverheid', 'www.pkioverheid.nl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PROCERT', 'procert.net.ve', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'QuoVadis', 'quovadisglobal.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SECOM', 'secomtrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sertifitseerimiskeskuse', 'sk.ee', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'StartCom', 'startcomca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SwissSign', 'swisssign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Symantec / Thawte / GeoTrust', 'symantec.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'T-Systems', 'telesec.de', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Telia', 'telia.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Trustwave', 'trustwave.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Web.com', 'web.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); + +ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; +ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; +ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; +ALTER TABLE `firewall` CHANGE `tcp_port` `tcp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; +ALTER TABLE `firewall` CHANGE `udp_port` `udp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/incremental/upd_0088.sql b/install/sql/incremental/upd_0088.sql new file mode 100644 index 0000000000000000000000000000000000000000..5c062603f97be1e5ed81c36855a9b6e095a44af1 --- /dev/null +++ b/install/sql/incremental/upd_0088.sql @@ -0,0 +1,39 @@ +-- rspamd +ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`; + +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4; +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5; +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6; + +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7; + +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7; + +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7; +-- end of rspamd +ALTER TABLE `client` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; + +DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02'; \ No newline at end of file diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 872ebfb4652f343643d360d748f18f8e613dc0e2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1 +0,0 @@ -ALTER TABLE `sys_datalog` ADD `session_id` varchar(64) NOT NULL DEFAULT '' AFTER `error`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index aacd2ecdb69d6a89ed673808bdb4041e03dc83a4..18b3ef57ebad6eac601268db1433e17f040b77af 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -69,7 +69,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances` ( `package_id` int(4) NOT NULL DEFAULT '0', `instance_status` int(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -84,7 +84,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances_settings` ( `name` varchar(255) NOT NULL DEFAULT '', `value` text, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -102,7 +102,7 @@ CREATE TABLE IF NOT EXISTS `aps_packages` ( `package_url` TEXT, `package_status` int(1) NOT NULL DEFAULT '2', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS `aps_settings` ( `value` text, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -128,7 +128,7 @@ CREATE TABLE `attempts_login` ( `ip` varchar(39) NOT NULL DEFAULT '', `times` int(11) DEFAULT NULL, `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -243,7 +243,7 @@ CREATE TABLE `client` ( `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', `parent_client_id` int(11) unsigned NOT NULL DEFAULT '0', `username` varchar(64) DEFAULT NULL, - `password` varchar(64) DEFAULT NULL, + `password` varchar(200) DEFAULT NULL, `language` char(2) NOT NULL DEFAULT 'en', `usertheme` varchar(32) NOT NULL DEFAULT 'default', `template_master` int(11) unsigned NOT NULL DEFAULT '0', @@ -264,7 +264,7 @@ CREATE TABLE `client` ( `risk_score` int(10) unsigned NOT NULL DEFAULT '0', `activation_code` varchar(10) NOT NULL DEFAULT '', PRIMARY KEY (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -284,7 +284,7 @@ CREATE TABLE `client_circle` ( `description` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`circle_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -369,7 +369,7 @@ CREATE TABLE `client_template` ( `limit_openvz_vm` int(11) NOT NULL DEFAULT '0', `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -383,7 +383,7 @@ CREATE TABLE `client_template_assigned` ( `client_template_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`assigned_template_id`), KEY `client_id` (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- @@ -402,7 +402,7 @@ CREATE TABLE `client_message_template` ( `subject` varchar(255) DEFAULT NULL, `message` text, PRIMARY KEY (`client_message_template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Dumping data for table `invoice_message_template` @@ -422,7 +422,7 @@ CREATE TABLE `country` ( `numcode` smallint(6) DEFAULT NULL, `eu` enum('n','y') NOT NULL DEFAULT 'n', PRIMARY KEY (`iso`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -448,7 +448,7 @@ CREATE TABLE `cron` ( `log` enum('n','y') NOT NULL default 'n', `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -471,14 +471,13 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` ( `active` enum('n','y') NOT NULL DEFAULT 'y', `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`directive_snippets_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `dns_rr` -- - CREATE TABLE `dns_rr` ( `id` int(11) unsigned NOT NULL auto_increment, `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', @@ -489,7 +488,7 @@ CREATE TABLE `dns_rr` ( `server_id` int(11) NOT NULL default '1', `zone` int(11) unsigned NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', - `type` enum('A','AAAA','ALIAS','CNAME','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') default NULL, + `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') default NULL, `data` TEXT NOT NULL, `aux` int(11) unsigned NOT NULL default '0', `ttl` int(11) unsigned NOT NULL default '3600', @@ -498,7 +497,7 @@ CREATE TABLE `dns_rr` ( `serial` int(10) unsigned default NULL, PRIMARY KEY (`id`), KEY `rr` (`zone`,`type`,`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -517,11 +516,85 @@ CREATE TABLE `dns_slave` ( `origin` varchar(255) NOT NULL DEFAULT '', `ns` varchar(255) NOT NULL DEFAULT '', `active` enum('N','Y') NOT NULL DEFAULT 'N', - `xfer` varchar(255) NOT NULL DEFAULT '', + `xfer` TEXT NULL, PRIMARY KEY (`id`), UNIQUE KEY `slave` (`origin`,`server_id`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `dns_ssl_ca` +-- + +CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `active` enum('N','Y') NOT NULL DEFAULT 'N', + `ca_name` varchar(255) NOT NULL DEFAULT '', + `ca_issue` varchar(255) NOT NULL DEFAULT '', + `ca_wildcard` enum('Y','N') NOT NULL DEFAULT 'N', + `ca_iodef` text NOT NULL, + `ca_critical` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY (`ca_issue`) +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); + +INSERT INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `active`, `ca_name`, `ca_issue`, `ca_wildcard`, `ca_iodef`, `ca_critical`) VALUES +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'AC Camerfirma', 'camerfirma.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'ACCV', 'accv.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Actalis', 'actalis.it', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Amazon', 'amazon.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Asseco', 'certum.pl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Buypass', 'buypass.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CA Disig', 'disig.sk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CATCert', 'aoc.cat', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certinomis', 'www.certinomis.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certizen', 'hongkongpost.gov.hk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'e-tugra', 'e-tugra.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'EDICOM', 'edicomgroup.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Entrust', 'entrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Firmaprofesional', 'firmaprofesional.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'FNMT', 'fnmt.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GlobalSign', 'globalsign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GoDaddy', 'godaddy.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Google Trust Services', 'pki.goog', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GRCA', 'gca.nat.gov.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'HARICA', 'harica.gr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'IdenTrust', 'identrust.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Izenpe', 'izenpe.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Kamu SM', 'kamusm.gov.tr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Let''s Encrypt', 'letsencrypt.org', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Microsec e-Szigno', 'e-szigno.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'NetLock', 'netlock.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PKIoverheid', 'www.pkioverheid.nl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PROCERT', 'procert.net.ve', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'QuoVadis', 'quovadisglobal.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SECOM', 'secomtrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sertifitseerimiskeskuse', 'sk.ee', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'StartCom', 'startcomca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SwissSign', 'swisssign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Symantec / Thawte / GeoTrust', 'symantec.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'T-Systems', 'telesec.de', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Telia', 'telia.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Trustwave', 'trustwave.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Web.com', 'web.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); -- -------------------------------------------------------- @@ -547,8 +620,8 @@ CREATE TABLE `dns_soa` ( `minimum` int(11) unsigned NOT NULL default '3600', `ttl` int(11) unsigned NOT NULL default '3600', `active` enum('N','Y') NOT NULL DEFAULT 'N', - `xfer` varchar(255) NOT NULL DEFAULT '', - `also_notify` varchar(255) default NULL, + `xfer` TEXT NULL, + `also_notify` TEXT NULL, `update_acl` varchar(255) default NULL, `dnssec_initialized` ENUM('Y','N') NOT NULL DEFAULT 'N', `dnssec_wanted` ENUM('Y','N') NOT NULL DEFAULT 'N', @@ -557,7 +630,7 @@ CREATE TABLE `dns_soa` ( PRIMARY KEY (`id`), UNIQUE KEY `origin` (`origin`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -577,7 +650,7 @@ CREATE TABLE `dns_template` ( `template` text, `visible` enum('N','Y') NOT NULL default 'Y', PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Table structure for table `domain` @@ -593,7 +666,7 @@ CREATE TABLE `domain` ( `domain` varchar(255) NOT NULL default '', PRIMARY KEY (`domain_id`), UNIQUE KEY `domain` (`domain`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -609,11 +682,11 @@ CREATE TABLE `firewall` ( `sys_perm_group` varchar(5) default NULL, `sys_perm_other` varchar(5) default NULL, `server_id` int(11) unsigned NOT NULL default '0', - `tcp_port` varchar(255) default NULL, - `udp_port` varchar(255) default NULL, + `tcp_port` text, + `udp_port` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -632,7 +705,7 @@ CREATE TABLE `ftp_user` ( `parent_domain_id` int(11) unsigned NOT NULL default '0', `username` varchar(64) default NULL, `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) default NULL, + `password` varchar(200) default NULL, `quota_size` bigint(20) NOT NULL default '-1', `active` enum('n','y') NOT NULL default 'y', `uid` varchar(64) default NULL, @@ -651,7 +724,7 @@ CREATE TABLE `ftp_user` ( KEY `server_id` (`server_id`), KEY `username` (`username`), KEY `quota_files` (`quota_files`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -665,7 +738,7 @@ CREATE TABLE `ftp_traffic` ( `in_bytes` bigint(32) unsigned NOT NULL, `out_bytes` bigint(32) unsigned NOT NULL, UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -685,7 +758,7 @@ CREATE TABLE `help_faq` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -703,7 +776,7 @@ CREATE TABLE `help_faq_sections` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -724,7 +797,7 @@ CREATE TABLE `iptables` ( `target` varchar(10) DEFAULT NULL COMMENT 'ACCEPT DROP REJECT LOG', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`iptables_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -746,7 +819,7 @@ CREATE TABLE `mail_access` ( `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`access_id`), KEY `server_id` (`server_id`,`source`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -764,7 +837,7 @@ CREATE TABLE `mail_backup` ( `filename` varchar(255) NOT NULL DEFAULT '', `filesize` VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -786,7 +859,7 @@ CREATE TABLE `mail_content_filter` ( `action` varchar(255) default NULL, `active` varchar(255) NOT NULL default 'y', PRIMARY KEY (`content_filter_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -811,7 +884,7 @@ CREATE TABLE `mail_domain` ( PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -836,7 +909,7 @@ CREATE TABLE `mail_forwarding` ( PRIMARY KEY (`forwarding_id`), KEY `server_id` (`server_id`,`source`), KEY `type` (`type`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -861,7 +934,7 @@ CREATE TABLE `mail_get` ( `destination` varchar(255) default NULL, `active` varchar(255) NOT NULL default 'y', PRIMARY KEY (`mailget_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -882,7 +955,7 @@ CREATE TABLE `mail_mailinglist` ( `email` varchar(255) NOT NULL DEFAULT '', `password` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`mailinglist_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -902,7 +975,7 @@ CREATE TABLE IF NOT EXISTS `mail_relay_recipient` ( `access` varchar(255) NOT NULL DEFAULT 'OK', `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`relay_recipient_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -917,7 +990,7 @@ CREATE TABLE `mail_traffic` ( `traffic` bigint(20) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`traffic_id`), KEY `mailuser_id` (`mailuser_id`,`month`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -940,7 +1013,7 @@ CREATE TABLE `mail_transport` ( PRIMARY KEY (`transport_id`), KEY `server_id` (`server_id`,`transport`), KEY `server_id_2` (`server_id`,`domain`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -993,7 +1066,7 @@ CREATE TABLE `mail_user` ( PRIMARY KEY (`mailuser_id`), KEY `server_id` (`server_id`,`email`), KEY `email_access` (`email`,`access`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1017,7 +1090,7 @@ CREATE TABLE `mail_user_filter` ( `target` varchar(255) default NULL, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`filter_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1032,7 +1105,7 @@ CREATE TABLE `monitor_data` ( `data` mediumtext, `state` enum('no_state','unknown','ok','info','warning','critical','error') NOT NULL DEFAULT 'unknown', PRIMARY KEY (`server_id`,`type`,`created`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1053,7 +1126,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ip` ( `reserved` varchar(255) NOT NULL DEFAULT 'n', `additional` varchar(255) NOT NULL DEFAULT 'n', PRIMARY KEY (`ip_address_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ip` @@ -1079,7 +1152,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ostemplate` ( `active` varchar(255) NOT NULL DEFAULT 'y', `description` text, PRIMARY KEY (`ostemplate_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ostemplate` @@ -1142,7 +1215,7 @@ CREATE TABLE IF NOT EXISTS `openvz_template` ( `iptables` varchar(255) DEFAULT NULL, `custom` text, PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_template` @@ -1161,7 +1234,7 @@ CREATE TABLE IF NOT EXISTS `openvz_traffic` ( `traffic_date` date NULL DEFAULT NULL, `traffic_bytes` bigint(32) unsigned NOT NULL DEFAULT '0', UNIQUE KEY (`veid`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -- Dumping data for table `openvz_traffic` @@ -1210,7 +1283,7 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` ( `config` mediumtext, `custom` text, PRIMARY KEY (`vm_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_vm` @@ -1229,7 +1302,7 @@ CREATE TABLE `remote_session` ( `client_login` tinyint(1) unsigned NOT NULL default '0', `tstamp` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`remote_session`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1250,7 +1323,7 @@ CREATE TABLE `remote_user` ( `remote_ips` TEXT, `remote_functions` text, PRIMARY KEY (`remote_userid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1281,7 +1354,7 @@ CREATE TABLE `server` ( `dbversion` int(11) unsigned NOT NULL default '1', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1303,7 +1376,7 @@ CREATE TABLE `server_ip` ( `virtualhost` enum('n','y') NOT NULL default 'y', `virtualhost_port` varchar(255) default '80,443', PRIMARY KEY (`server_ip_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1323,7 +1396,7 @@ CREATE TABLE `server_ip_map` ( `destination_ip` varchar(35) DEFAULT '', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`server_ip_map_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1348,7 +1421,7 @@ CREATE TABLE `server_php` ( `php_fpm_pool_dir` varchar(255) DEFAULT NULL, `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`server_php_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1367,7 +1440,7 @@ CREATE TABLE `shell_user` ( `parent_domain_id` int(11) unsigned NOT NULL default '0', `username` varchar(64) default NULL, `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) default NULL, + `password` varchar(200) default NULL, `quota_size` bigint(20) NOT NULL default '-1', `active` enum('n','y') NOT NULL default 'y', `puser` varchar(255) default NULL, @@ -1377,7 +1450,7 @@ CREATE TABLE `shell_user` ( `chroot` varchar(255) NOT NULL DEFAULT '', `ssh_rsa` text, PRIMARY KEY (`shell_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1400,7 +1473,7 @@ CREATE TABLE `software_package` ( `package_config` text, PRIMARY KEY (`package_id`), UNIQUE KEY `package_name` (`package_name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1421,7 +1494,7 @@ CREATE TABLE `software_repo` ( `repo_password` varchar(64) default NULL, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`software_repo_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1443,7 +1516,7 @@ CREATE TABLE `software_update` ( `v4` tinyint(1) NOT NULL default '0', `type` enum('full','update') NOT NULL default 'full', PRIMARY KEY (`software_update_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1459,7 +1532,7 @@ CREATE TABLE `software_update_inst` ( `status` enum('none','installing','installed','deleting','deleted','failed') NOT NULL default 'none', PRIMARY KEY (`software_update_inst_id`), UNIQUE KEY `software_update_id` (`software_update_id`,`package_name`,`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1516,8 +1589,13 @@ CREATE TABLE `spamfilter_policy` ( `policyd_quota_out` int(11) NOT NULL DEFAULT '-1', `policyd_quota_out_period` int(11) NOT NULL DEFAULT '24', `policyd_greylist` ENUM( 'Y', 'N' ) NOT NULL DEFAULT 'N', + `rspamd_greylisting` enum('n','y') NOT NULL DEFAULT 'n', + `rspamd_spam_greylisting_level` decimal(5,2) DEFAULT NULL, + `rspamd_spam_tag_level` decimal(5,2) DEFAULT NULL, + `rspamd_spam_tag_method` enum('add_header','rewrite_subject') NOT NULL DEFAULT 'rewrite_subject', + `rspamd_spam_kill_level` decimal(5,2) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1540,7 +1618,7 @@ CREATE TABLE `spamfilter_users` ( `local` varchar(1) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1562,7 +1640,7 @@ CREATE TABLE `spamfilter_wblist` ( `priority` tinyint(3) unsigned NOT NULL DEFAULT '0', `active` enum('y','n') NOT NULL default 'y', PRIMARY KEY (`wblist_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1583,7 +1661,7 @@ CREATE TABLE `support_message` ( `message` text default NULL, `tstamp` int(11) NOT NULL default '0', PRIMARY KEY (`support_message_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1596,7 +1674,7 @@ CREATE TABLE `sys_config` ( `name` varchar(64) NOT NULL DEFAULT '', `value` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`group`, `name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -1611,7 +1689,7 @@ CREATE TABLE IF NOT EXISTS `sys_cron` ( `next_run` datetime NULL DEFAULT NULL, `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -1634,7 +1712,7 @@ CREATE TABLE `sys_datalog` ( `session_id` varchar(64) NOT NULL DEFAULT '', PRIMARY KEY (`datalog_id`), KEY `server_id` (`server_id`,`status`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1658,7 +1736,7 @@ CREATE TABLE `sys_dbsync` ( `last_datalog_id` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `last_datalog_id` (`last_datalog_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1678,7 +1756,7 @@ CREATE TABLE `sys_filesync` ( `wput_options` varchar(255) NOT NULL default '--timestamping --reupload --dont-continue', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1692,7 +1770,7 @@ CREATE TABLE `sys_group` ( `description` text, `client_id` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`groupid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1706,7 +1784,7 @@ CREATE TABLE `sys_ini` ( `default_logo` text NOT NULL, `custom_logo` text NOT NULL, PRIMARY KEY (`sysini_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1722,7 +1800,7 @@ CREATE TABLE `sys_log` ( `tstamp` int(11) unsigned NOT NULL DEFAULT '0', `message` text, PRIMARY KEY (`syslog_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1740,7 +1818,7 @@ CREATE TABLE `sys_remoteaction` ( `response` mediumtext, PRIMARY KEY (`action_id`), KEY `server_id` (`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1756,7 +1834,7 @@ CREATE TABLE `sys_session` ( `session_data` longtext, PRIMARY KEY (`session_id`), KEY `last_updated` (`last_updated`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1775,7 +1853,7 @@ CREATE TABLE IF NOT EXISTS `sys_theme` ( `username` varchar(64) NOT NULL DEFAULT '', `logo_url` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`var_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1785,13 +1863,13 @@ CREATE TABLE IF NOT EXISTS `sys_theme` ( CREATE TABLE `sys_user` ( `userid` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '1', - `sys_groupid` int(11) unsigned NOT NULL default '1', + `sys_userid` int(11) unsigned NOT NULL default '1' COMMENT 'Created by userid', + `sys_groupid` int(11) unsigned NOT NULL default '1' COMMENT 'Created by groupid', `sys_perm_user` varchar(5) NOT NULL default 'riud', `sys_perm_group` varchar(5) NOT NULL default 'riud', `sys_perm_other` varchar(5) NOT NULL default '', `username` varchar(64) NOT NULL default '', - `passwort` varchar(64) NOT NULL default '', + `passwort` varchar(200) NOT NULL default '', `modules` varchar(255) NOT NULL default '', `startmodule` varchar(255) NOT NULL default '', `app_theme` varchar(32) NOT NULL default 'default', @@ -1807,7 +1885,7 @@ CREATE TABLE `sys_user` ( `lost_password_hash` VARCHAR(50) NOT NULL default '', `lost_password_reqtime` DATETIME NULL default NULL, PRIMARY KEY (`userid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1826,11 +1904,11 @@ CREATE TABLE `webdav_user` ( `parent_domain_id` int(11) unsigned NOT NULL DEFAULT '0', `username` varchar(64) DEFAULT NULL, `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) DEFAULT NULL, + `password` varchar(200) DEFAULT NULL, `active` enum('n','y') NOT NULL DEFAULT 'y', `dir` varchar(255) DEFAULT NULL, PRIMARY KEY (`webdav_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1848,7 +1926,7 @@ CREATE TABLE `web_backup` ( `filename` varchar(255) NOT NULL DEFAULT '', `filesize` VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1882,7 +1960,7 @@ CREATE TABLE `web_database` ( PRIMARY KEY (`database_id`), KEY `database_user_id` (`database_user_id`), KEY `database_ro_user_id` (`database_ro_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1903,7 +1981,7 @@ CREATE TABLE IF NOT EXISTS `web_database_user` ( `database_password` varchar(64) DEFAULT NULL, `database_password_mongo` varchar(32) DEFAULT NULL, PRIMARY KEY (`database_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1965,6 +2043,7 @@ CREATE TABLE `web_domain` ( `apache_directives` mediumtext, `nginx_directives` mediumtext, `php_fpm_use_socket` ENUM('n','y') NOT NULL DEFAULT 'y', + `php_fpm_chroot` enum('n','y') NOT NULL DEFAULT 'n', `pm` enum('static','dynamic','ondemand') NOT NULL DEFAULT 'dynamic', `pm_max_children` int(11) NOT NULL DEFAULT '10', `pm_start_servers` int(11) NOT NULL DEFAULT '2', @@ -1994,7 +2073,7 @@ CREATE TABLE `web_domain` ( `log_retention` int(11) NOT NULL DEFAULT '10', PRIMARY KEY (`domain_id`), UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -2014,7 +2093,7 @@ CREATE TABLE IF NOT EXISTS `web_folder` ( `path` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Dumping data for table `web_folder` @@ -2040,7 +2119,7 @@ CREATE TABLE IF NOT EXISTS `web_folder_user` ( `password` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Dumping data for table `web_folder_user` @@ -2057,7 +2136,7 @@ CREATE TABLE `web_traffic` ( `traffic_date` date NULL DEFAULT NULL, `traffic_bytes` bigint(32) unsigned NOT NULL default '0', UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -2116,7 +2195,7 @@ CREATE TABLE `xmpp_domain` ( PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -2138,7 +2217,7 @@ CREATE TABLE `xmpp_user` ( PRIMARY KEY (`xmppuser_id`), KEY `server_id` (`server_id`,`jid`), KEY `jid_active` (`jid`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -2443,13 +2522,13 @@ INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `s -- Dumping data for table `spamfilter_policy` -- -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, ''); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '', 'n', 6.00, 8.00, 'rewrite_subject', 12.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 2.00, 4.00, 'rewrite_subject', 8.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 7.00, 10.00, 'rewrite_subject', 20.00); -- -------------------------------------------------------- diff --git a/install/tpl/amavisd_user_config.master b/install/tpl/amavisd_user_config.master index 8663f07498f187fa1d25d501e73bff43f5964714..344ea9a152de0ab43982c83b18b6bb7e99525d6c 100644 --- a/install/tpl/amavisd_user_config.master +++ b/install/tpl/amavisd_user_config.master @@ -49,7 +49,7 @@ $final_spam_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; -# Default settings, we st this very high to not filter aut emails accidently +# Default settings, we set this very high to not filter out emails accidentally $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 20.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 60.0; # add 'spam detected' headers at that level @@ -83,7 +83,6 @@ $notify_method = 'smtp:127.0.0.1:*'; $interface_policy{'10026'} = 'ORIGINATING'; $policy_bank{'ORIGINATING'} = { originating => 1, - smtpd_discard_ehlo_keywords => ['8BITMIME'], }; # IP-Addresses for internal networks => load policy MYNETS diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index ee1b693097a200505f42c7a7da3313b134d016b9..9cccf8d38ed0e3f6adf7466396803a2856c886cb 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -19,6 +19,12 @@ RequestHeader unset Proxy early + {tmpl_if name="enable_spdy" op="==" value="y"} + + SpdyEnabled on + + {/tmpl_if} + DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -68,6 +74,18 @@ +{tmpl_if name="use_rspamd"} + + Order allow,deny + Allow from all + + RewriteEngine On + RewriteRule ^/rspamd$ /rspamd/ [R,L] + RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P] +{/tmpl_if} + + + diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 55135299f18b17a09c1ca86d2a80add3ac296595..d8c56de22d1163ee7e148192dbd71680f5e4a7d7 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -89,11 +89,11 @@ NameVirtualHost *: # ISPConfig 3.1 currently requires unsafe-line for both scripts and styles, as well as unsafe-eval - Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; object-src 'none'; upgrade-insecure-requests" + Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; object-src 'none'; upgrade-insecure-requests" Header set X-Content-Type-Options: nosniff Header set X-Frame-Options: SAMEORIGIN Header set X-XSS-Protection: "1; mode=block" - Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" + Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" = 2.4.7> Header setifempty Strict-Transport-Security "max-age=15768000" diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index db6e0bfbe2ea115d12cb8760095e7da73ed937c6..777280f044eb6739965d602f7c19122d636b3f86 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -6,7 +6,9 @@ log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = vmail ssl_cert = n bytes in size are not scanned + #max_size = 20000000; + # symbol to add (add it to metric if you want non-zero weight) + symbol = "CLAM_VIRUS"; + # type of scanner: "clamav", "fprot", "sophos" or "savapi" + type = "clamav"; + # For "savapi" you must also specify the following variable + #product_id = 12345; + # You can enable logging for clean messages + #log_clean = true; + # servers to query (if port is unspecified, scanner-specific default is used) + # can be specified multiple times to pool servers + # can be set to a path to a unix socket + # Enable this in local.d/antivirus.conf + #servers = "127.0.0.1:3310"; + servers = "/var/run/clamav/clamd.ctl"; + # if `patterns` is specified virus name will be matched against provided regexes and the related + # symbol will be yielded if a match is found. If no match is found, default symbol is yielded. + patterns { + # symbol_name = "pattern"; + JUST_EICAR = "^Eicar-Test-Signature$"; + } + # `whitelist` points to a map of IP addresses. Mail from these addresses is not scanned. + whitelist = "/etc/rspamd/antivirus.wl"; +} \ No newline at end of file diff --git a/install/tpl/rspamd_classifier-bayes.conf.master b/install/tpl/rspamd_classifier-bayes.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..1688d57e217673cdfa50ff36c31f4beb782aae70 --- /dev/null +++ b/install/tpl/rspamd_classifier-bayes.conf.master @@ -0,0 +1,3 @@ +autolearn = [-0.01, 5.00]; +per_user = true; +per_language = true; \ No newline at end of file diff --git a/install/tpl/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..ed9abe40eebb060bc0a2eeec1da55074dc4eeaf7 --- /dev/null +++ b/install/tpl/rspamd_dkim_signing.conf.master @@ -0,0 +1,3 @@ +try_fallback = false; +path_map = "/etc/rspamd/local.d/dkim_domains.map"; +selector_map = "/etc/rspamd/local.d/dkim_selectors.map"; \ No newline at end of file diff --git a/install/tpl/rspamd_greylist.conf.master b/install/tpl/rspamd_greylist.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..74ea715a22cc6fa76671fd47a3f1bf89cfe92d49 --- /dev/null +++ b/install/tpl/rspamd_greylist.conf.master @@ -0,0 +1 @@ +servers = "127.0.0.1:6379"; \ No newline at end of file diff --git a/install/tpl/rspamd_groups.conf.master b/install/tpl/rspamd_groups.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..62a986533abb66fe28203358f0d6ef5854f9e0e6 --- /dev/null +++ b/install/tpl/rspamd_groups.conf.master @@ -0,0 +1,4 @@ +group "antivirus" { + .include(try=true; priority=1; duplicate=merge) "$LOCAL_CONFDIR/local.d/antivirus_group.conf" + .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/antivirus_group.conf" +} diff --git a/install/tpl/rspamd_milter_headers.conf.master b/install/tpl/rspamd_milter_headers.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..d399bbf4ecc37e39ff900260a4884335767e9957 --- /dev/null +++ b/install/tpl/rspamd_milter_headers.conf.master @@ -0,0 +1,2 @@ +use = ["x-spamd-bar", "x-spam-level", "authentication-results"]; +authenticated_headers = ["authentication-results"]; \ No newline at end of file diff --git a/install/tpl/rspamd_mx_check.conf.master b/install/tpl/rspamd_mx_check.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..0a628f9c8382ee1f0def03883c91b91d7701e625 --- /dev/null +++ b/install/tpl/rspamd_mx_check.conf.master @@ -0,0 +1,9 @@ +enabled = true; +servers = "localhost"; +key_prefix = "rmx"; +symbol_bad_mx = "MX_INVALID"; +symbol_no_mx = "MX_MISSING"; +symbol_good_mx = "MX_GOOD"; +expire = 86400; +expire_novalid = 7200; +greylist_invalid = false; \ No newline at end of file diff --git a/install/tpl/rspamd_neural.conf.master b/install/tpl/rspamd_neural.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..76f8a6d34479f05dfb638d736fdb5c975b31a7a0 --- /dev/null +++ b/install/tpl/rspamd_neural.conf.master @@ -0,0 +1,31 @@ +servers = 127.0.0.1:6379; +enabled = true; + +rules { + "LONG" { + train { + max_trains = 5000; + max_usages = 200; + max_iterations = 25; + learning_rate = 0.01, + spam_score = 10; + ham_score = -2; + } + symbol_spam = "NEURAL_SPAM_LONG"; + symbol_ham = "NEURAL_HAM_LONG"; + ann_expire = 100d; + } + "SHORT" { + train { + max_trains = 100; + max_usages = 2; + max_iterations = 25; + learning_rate = 0.01, + spam_score = 10; + ham_score = -2; + } + symbol_spam = "NEURAL_SPAM_SHORT"; + symbol_ham = "NEURAL_HAM_SHORT"; + ann_expire = 1d; + } +} \ No newline at end of file diff --git a/install/tpl/rspamd_neural_group.conf.master b/install/tpl/rspamd_neural_group.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..5aabdefaff0599b633b5589eb80c6c85f7e4692f --- /dev/null +++ b/install/tpl/rspamd_neural_group.conf.master @@ -0,0 +1,18 @@ +symbols = { + "NEURAL_SPAM_LONG" { + weight = 1.0; # sample weight + description = "Neural network spam (long)"; + } + "NEURAL_HAM_LONG" { + weight = -2.0; # sample weight + description = "Neural network ham (long)"; + } + "NEURAL_SPAM_SHORT" { + weight = 0.5; # sample weight + description = "Neural network spam (short)"; + } + "NEURAL_HAM_SHORT" { + weight = -1.0; # sample weight + description = "Neural network ham (short)"; + } +} diff --git a/install/tpl/rspamd_options.inc.master b/install/tpl/rspamd_options.inc.master new file mode 100644 index 0000000000000000000000000000000000000000..69e40365b7dc653b046b6e3cb3ff0539936a816e --- /dev/null +++ b/install/tpl/rspamd_options.inc.master @@ -0,0 +1,5 @@ +local_addrs = "127.0.0.0/8, ::1"; + +dns { + nameserver = ["127.0.0.1:53:10"]; +} diff --git a/install/tpl/rspamd_override_rbl.conf.master b/install/tpl/rspamd_override_rbl.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..310e722832376f6e049fc2e1ac4c4179a3c3259e --- /dev/null +++ b/install/tpl/rspamd_override_rbl.conf.master @@ -0,0 +1,53 @@ +# RBL +symbols = { + "RBL_SENDERSCORE" { + weight = 4.0; + description = "From address is listed in senderscore.com BL"; + } + "RBL_SPAMHAUS_SBL" { + weight = 2.0; + description = "From address is listed in zen sbl"; + } + "RBL_SPAMHAUS_CSS" { + weight = 2.0; + description = "From address is listed in zen css"; + } + "RBL_SPAMHAUS_XBL" { + weight = 4.0; + description = "From address is listed in zen xbl"; + } + "RBL_SPAMHAUS_XBL_ANY" { + weight = 4.0; + description = "From or receive address is listed in zen xbl (any list)"; + } + "RBL_SPAMHAUS_PBL" { + weight = 2.0; + description = "From address is listed in zen pbl (ISP list)"; + } + "RBL_SPAMHAUS_DROP" { + weight = 7.0; + description = "From address is listed in zen drop bl"; + } + "RECEIVED_SPAMHAUS_XBL" { + weight = 3.0; + description = "Received address is listed in zen xbl"; + one_shot = true; + } + "RBL_MAILSPIKE_WORST" { + weight = 2.0; + description = "From address is listed in RBL - worst possible reputation"; + } + "RBL_MAILSPIKE_VERYBAD" { + weight = 1.5; + description = "From address is listed in RBL - very bad reputation"; + } + "RBL_MAILSPIKE_BAD" { + weight = 1.0; + description = "From address is listed in RBL - bad reputation"; + } + "RBL_SEM" { + weight = 1.0; + description = "Address is listed in Spameatingmonkey RBL"; + } + # /RBL +} diff --git a/install/tpl/rspamd_override_surbl.conf.master b/install/tpl/rspamd_override_surbl.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..30676a46fde75e4e4d21bf3e5cc1e6aabc4e749d --- /dev/null +++ b/install/tpl/rspamd_override_surbl.conf.master @@ -0,0 +1,108 @@ +symbols = { + # SURBL + "PH_SURBL_MULTI" { + weight = 5.5; + description = "SURBL: Phishing sites"; + } + "MW_SURBL_MULTI" { + weight = 5.5; + description = "SURBL: Malware sites"; + } + "ABUSE_SURBL" { + weight = 5.5; + description = "SURBL: ABUSE"; + } + "CRACKED_SURBL" { + weight = 4.0; + description = "SURBL: cracked site"; + } + "RAMBLER_URIBL" { + weight = 4.5; + description = "Rambler uribl"; + one_shot = true; + } + "RAMBLER_EMAILBL" { + weight = 9.5; + description = "Rambler emailbl"; + one_shot = true; + } + "MSBL_EBL" { + weight = 7.5; + description = "MSBL emailbl"; + one_shot = true; + } + "SEM_URIBL" { + weight = 3.5; + description = "Spameatingmonkey uribl"; + } + "SEM_URIBL_FRESH15" { + weight = 3.0; + description = "Spameatingmonkey uribl. Domains registered in the last 15 days (.AERO,.BIZ,.COM,.INFO,.NAME,.NET,.PRO,.SK,.TEL,.US)"; + } + "DBL" { + weight = 0.0; + description = "DBL unknown result"; + } + "DBL_SPAM" { + weight = 6.5; + description = "DBL uribl spam"; + } + "DBL_PHISH" { + weight = 6.5; + description = "DBL uribl phishing"; + } + "DBL_MALWARE" { + weight = 6.5; + description = "DBL uribl malware"; + } + "DBL_BOTNET" { + weight = 5.5; + description = "DBL uribl botnet C&C domain"; + } + "DBL_ABUSE" { + weight = 6.5; + description = "DBL uribl abused legit spam"; + } + "DBL_ABUSE_REDIR" { + weight = 1.5; + description = "DBL uribl abused spammed redirector domain"; + } + "DBL_ABUSE_PHISH" { + weight = 7.5; + description = "DBL uribl abused legit phish"; + } + "DBL_ABUSE_MALWARE" { + weight = 7.5; + description = "DBL uribl abused legit malware"; + } + "DBL_ABUSE_BOTNET" { + weight = 5.5; + description = "DBL uribl abused legit botnet C&C"; + } + "URIBL_BLACK" { + weight = 7.5; + description = "uribl.com black url"; + } + "URIBL_RED" { + weight = 3.5; + description = "uribl.com red url"; + } + "URIBL_GREY" { + weight = 1.5; + description = "uribl.com grey url"; + one_shot = true; + } + "URIBL_SBL" { + weight = 6.5; + description = "Spamhaus SBL URIBL"; + } + "URIBL_SBL_CSS" { + weight = 6.5; + description = "Spamhaus SBL CSS URIBL"; + } + "RBL_SARBL_BAD" { + weight = 2.5; + description = "A domain listed in the mail is blacklisted in SARBL"; + } + # /SURBL +} diff --git a/install/tpl/rspamd_redis.conf.master b/install/tpl/rspamd_redis.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..b908af9f5ebe0e23293797e234eb9dd455838a01 --- /dev/null +++ b/install/tpl/rspamd_redis.conf.master @@ -0,0 +1 @@ +servers = "127.0.0.1"; \ No newline at end of file diff --git a/install/tpl/rspamd_symbols_antivirus.conf.master b/install/tpl/rspamd_symbols_antivirus.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..8c2d93d89eeacf816ad870f5bab97a7d406cc143 --- /dev/null +++ b/install/tpl/rspamd_symbols_antivirus.conf.master @@ -0,0 +1,15 @@ +subject = "***SPAM*** %s"; +symbols = { + "CLAM_VIRUS" { + weight = 50; + description = "Clamav has found a virus."; + } + "JUST_EICAR" { + weight = 50; + description = "Clamav has found a virus."; + } + "R_DUMMY" { + weight = 0.0; + description = "Dummy symbol"; + } +} \ No newline at end of file diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master new file mode 120000 index 0000000000000000000000000000000000000000..3aa7af31851003f5b742ab52de226af706cf7466 --- /dev/null +++ b/install/tpl/rspamd_users.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_users.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_users.inc.conf.master b/install/tpl/rspamd_users.inc.conf.master new file mode 120000 index 0000000000000000000000000000000000000000..30bb52fd8e22d629bca9e28459d4d04e44e08ea0 --- /dev/null +++ b/install/tpl/rspamd_users.inc.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_users.inc.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_wblist.inc.conf.master b/install/tpl/rspamd_wblist.inc.conf.master new file mode 120000 index 0000000000000000000000000000000000000000..1ab3744b99aa456982f0a360377797543aeca60f --- /dev/null +++ b/install/tpl/rspamd_wblist.inc.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_wblist.inc.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_worker-controller.inc.master b/install/tpl/rspamd_worker-controller.inc.master new file mode 120000 index 0000000000000000000000000000000000000000..dae19323690f604babdb0682108b49f420476fb7 --- /dev/null +++ b/install/tpl/rspamd_worker-controller.inc.master @@ -0,0 +1 @@ +../../server/conf/rspamd_worker-controller.inc.master \ No newline at end of file diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 079d6344885c06bd75a389ce38fe4580f8f0c46a..36f157d8e6ef80a5e4029b2c9ac6963e35bc3d60 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -38,6 +38,8 @@ homedir_path=/var/vmail maildir_format=maildir dkim_path=/var/lib/amavis/dkim dkim_strength=1024 +content_filter=amavis +rspamd_password= pop3_imap_daemon=courier mail_filter_syntax=maildrop mailuser_uid=5000 @@ -116,6 +118,7 @@ overquota_db_notify_admin=y overquota_db_notify_client=y overquota_notify_onok=n logging=yes +php_fpm_reload_mode=reload [dns] bind_user=root @@ -140,6 +143,7 @@ jailkit_chroot_home=/home/[username] jailkit_chroot_app_sections=basicshell editors extendedshell netutils ssh sftp scp groups jk_lsh jailkit_chroot_app_programs=/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch /usr/bin/which /usr/lib/x86_64-linux-gnu/libmemcached.so.11 /usr/lib/x86_64-linux-gnu/libmemcachedutil.so.2 /usr/lib/x86_64-linux-gnu/libMagickWand-6.Q16.so.2 /opt/php-5.6.8/bin/php /opt/php-5.6.8/include /opt/php-5.6.8/lib jailkit_chroot_cron_programs=/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php +jailkit_chroot_authorized_keys_template=/root/.ssh/authorized_keys [vlogger] config_dir=/etc diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 42a003b9c1179f236ca2e843470bd457d158e5c7..c916a6254792bb55369f825a462ad9e40b22f997 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -33,6 +33,7 @@ vhost_aliasdomains=n client_username_web_check_disabled=n backups_include_into_web_quota=n reseller_can_use_options=n +web_php_options=no,fast-cgi,mod,php-fpm [tools] diff --git a/install/update.php b/install/update.php index 62e8d5ef4a73f4a18fd32d58108146c3cec25eee..11570aa666ece7bd14c272c521f6c29af2c27536 100644 --- a/install/update.php +++ b/install/update.php @@ -59,6 +59,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. error_reporting(E_ALL|E_STRICT); define('INSTALLER_RUN', true); +define('INSTALLER_UPDATE', true); //** The banner on the command line echo "\n\n".str_repeat('-', 80)."\n"; @@ -292,6 +293,22 @@ if($conf['mysql']['master_slave_setup'] == 'y') { */ checkDbHealth(); + +/* + * Check command line mysql login + */ +if( !empty($conf["mysql"]["admin_password"]) ) { + $cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." -D ".escapeshellarg($conf['mysql']['database'])." -e ". escapeshellarg('SHOW DATABASES'); +} else { + $cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -P ".escapeshellarg($conf['mysql']['port'])." -D ".escapeshellarg($conf['mysql']['database'])." -e ". escapeshellarg('SHOW DATABASES'); +} +$retval = 0; +$retout = array(); +exec($cmd, $retout, $retval); +if($retval != 0) { + die("Unable to call mysql command line with credentials from mysql_clientdb.conf\n"); +} + /* * dump the new Database and reconfigure the server.ini */ @@ -396,6 +413,12 @@ if($reconfigure_services_answer == 'yes' || $reconfigure_services_answer == 'sel $inst->configure_amavis(); } + //** Configure Rspamd + if($conf['rspamd']['installed'] == true && $inst->reconfigure_app('Rspamd', $reconfigure_services_answer)) { + swriteln('Configuring Rspamd'); + $inst->configure_rspamd(); + } + //** Configure Getmail if ($inst->reconfigure_app('Getmail', $reconfigure_services_answer)) { swriteln('Configuring Getmail'); @@ -531,6 +554,7 @@ if($reconfigure_services_answer == 'yes') { if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); + if($conf['rspamd']['installed'] == true && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); if($conf['courier']['installed'] == true){ if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 7af764f92b8b1855dd84a4f7a635907e250c40d1..e341a57943cc65d364cdd7296030fab76dd2c8da 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -68,20 +68,32 @@ class app { $this->db = false; } } + $this->uses('functions'); // we need this before all others! + $this->uses('auth,plugin,ini_parser,getconf'); + + } + public function __get($prop) { + if(property_exists($this, $prop)) return $this->{$prop}; + + $this->uses($prop); + if(property_exists($this, $prop)) return $this->{$prop}; + else trigger_error('Undefined property ' . $prop . ' of class app', E_USER_WARNING); + } + + public function __destruct() { + session_write_close(); + } + + public function initialize_session() { //* Start the session if($this->_conf['start_session'] == true) { - + session_name('ISPCSESS'); $this->uses('session'); $sess_timeout = $this->conf('interface', 'session_timeout'); - $cookie_domain = (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']); - - // Workaround for Nginx servers - if($cookie_domain == '_') { - $tmp = explode(':',$_SERVER["HTTP_HOST"]); - $cookie_domain = $tmp[0]; - unset($tmp); - } + $cookie_domain = $this->get_cookie_domain(); + $this->log("cookie_domain is ".$cookie_domain,0); + $cookie_domain = ''; $cookie_secure = ($_SERVER["HTTPS"] == 'on')?true:false; if($sess_timeout) { /* check if user wants to stay logged in */ @@ -122,23 +134,8 @@ class app { if(empty($_SESSION['s']['language'])) $_SESSION['s']['language'] = $conf['language']; } - $this->uses('functions'); // we need this before all others! - $this->uses('auth,plugin,ini_parser,getconf'); - - } - - public function __get($prop) { - if(property_exists($this, $prop)) return $this->{$prop}; - - $this->uses($prop); - if(property_exists($this, $prop)) return $this->{$prop}; - else return null; } - public function __destruct() { - session_write_close(); - } - public function uses($classes) { $cl = explode(',', $classes); if(is_array($cl)) { @@ -251,7 +248,7 @@ class app { } $this->_language_inc = 1; } - if(isset($this->_wb[$text]) && $this->wb[$text] !== '') { + if(isset($this->_wb[$text]) && $this->_wb[$text] !== '') { $text = $this->_wb[$text]; } else { if($this->_conf['debug_language']) { @@ -336,12 +333,52 @@ class app { $this->tpl->setVar('globalsearch_noresults_limit_txt', $this->lng('globalsearch_noresults_limit_txt')); $this->tpl->setVar('globalsearch_searchfield_watermark_txt', $this->lng('globalsearch_searchfield_watermark_txt')); } + + private function get_cookie_domain() { + $sec_config = $this->getconf->get_security_config('permissions'); + $proxy_panel_allowed = $sec_config['reverse_proxy_panel_allowed']; + if ($proxy_panel_allowed == 'all') { + return ''; + } + /* + * See ticket #5238: It should be ensured, that _SERVER_NAME is always set. + * Otherwise the security improvement doesn't work with nginx. If this is done, + * the check for HTTP_HOST and workaround for nginx is obsolete. + */ + $cookie_domain = (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']); + // Workaround for Nginx servers + if($cookie_domain == '_') { + $tmp = explode(':',$_SERVER["HTTP_HOST"]); + $cookie_domain = $tmp[0]; + unset($tmp); + } + if($proxy_panel_allowed == 'sites') { + $forwarded_host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : null ); + if($forwarded_host !== null && $forwarded_host !== $cookie_domain) { + // Just check for complete domain name and not auto subdomains + $sql = "SELECT domain_id from web_domain where domain = '$forwarded_host'"; + $recs = $this->db->queryOneRecord($sql); + if($recs !== null) { + $cookie_domain = $forwarded_host; + } + unset($forwarded_host); + } + } + + return $cookie_domain; + } } // end class //** Initialize application (app) object //* possible future = new app($conf); $app = new app(); +/* + split session creation out of constructor is IMHO better. + otherwise we have some circular references to global $app like in + getconfig property of App - RA +*/ +$app->initialize_session(); // load and enable PHP Intrusion Detection System (PHPIDS) $ids_security_config = $app->getconf->get_security_config('ids'); diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index 80e011f4af4664256355015e0f63e92ac88e32b1..8a764a9c5c776618156be1023cdb5ca2a9f4f590 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -249,6 +249,15 @@ class ApsGUIController extends ApsBase $settings['main_database_host'] = 'localhost'; $mysql_db_remote_access = 'n'; $mysql_db_remote_ips = ''; + + // If we are dealing with chrooted PHP-FPM, use a network connection instead because the MySQL socket file + // does not exist within the chroot. + $php_fpm_chroot = $app->db->queryOneRecord("SELECT php_fpm_chroot FROM web_domain WHERE domain_id = ?", $websrv['domain_id']); + if ($php_fpm_chroot['php_fpm_chroot'] === 'y') { + $settings['main_database_host'] = '127.0.0.1'; + $mysql_db_remote_access = 'y'; + $mysql_db_remote_ips = '127.0.0.1'; + } } else { //* get the default database server of the client $client = $app->db->queryOneRecord("SELECT default_dbserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $websrv['sys_groupid']); @@ -558,6 +567,16 @@ class ApsGUIController extends ApsBase } else $error[] = $app->lng('error_main_domain'); + if(isset($postinput['admin_password'])) + { + $app->uses('validate_password'); + + $passwordError = $app->validate_password->password_check('', $postinput['admin_password'], ''); + if ($passwordError) { + $error[] = $passwordError; + } + } + // Main location (not obligatory but must be supplied) if(isset($postinput['main_location'])) { diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 6658c4c116366177ca09aefb891885cf0ae7dfa2..2075c7b90d10aaf8f14cc4648bf75a727f14ebb7 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -231,12 +231,27 @@ class auth { if($charset != 'UTF-8') { $cleartext_password = mb_convert_encoding($cleartext_password, $charset, 'UTF-8'); } - $salt="$1$"; - $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for ($n=0;$n<8;$n++) { - $salt.=$base64_alphabet[mt_rand(0, 63)]; + + if(defined('CRYPT_SHA512') && CRYPT_SHA512 == 1) { + $salt = '$6$rounds=5000$'; + $salt_length = 16; + } elseif(defined('CRYPT_SHA256') && CRYPT_SHA256 == 1) { + $salt = '$5$rounds=5000$'; + $salt_length = 16; + } else { + $salt = '$1$'; + $salt_length = 12; + } + + if(function_exists('openssl_random_pseudo_bytes')) { + $salt .= substr(bin2hex(openssl_random_pseudo_bytes($salt_length)), 0, $salt_length); + } else { + $base64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./'; + for($n = 0; $n < $salt_length; $n++) { + $salt .= $base64_alphabet[mt_rand(0, 63)]; + } } - $salt.="$"; + $salt .= "$"; return crypt($cleartext_password, $salt); } @@ -253,16 +268,27 @@ class auth { return array('csrf_id' => $_csrf_id,'csrf_key' => $_csrf_key); } - public function csrf_token_check() { + public function csrf_token_check($method = 'POST') { global $app; - if(isset($_POST) && is_array($_POST)) { + if($method == 'POST') { + $input_vars = $_POST; + } elseif ($method == 'GET') { + $input_vars = $_GET; + } else { + $app->error('Unknown CSRF verification method.'); + } + + //print_r($input_vars); + //die(print_r($_SESSION['_csrf'])); + + if(isset($input_vars) && is_array($input_vars)) { $_csrf_valid = false; - if(isset($_POST['_csrf_id']) && isset($_POST['_csrf_key'])) { - $_csrf_id = trim($_POST['_csrf_id']); - $_csrf_key = trim($_POST['_csrf_key']); + if(isset($input_vars['_csrf_id']) && isset($input_vars['_csrf_key'])) { + $_csrf_id = trim($input_vars['_csrf_id']); + $_csrf_key = trim($input_vars['_csrf_key']); if(isset($_SESSION['_csrf']) && isset($_SESSION['_csrf'][$_csrf_id]) && isset($_SESSION['_csrf_timeout']) && isset($_SESSION['_csrf_timeout'][$_csrf_id])) { - if($_SESSION['_csrf'][$_csrf_id] === $_csrf_key && $_SESSION['_csrf_timeout'] >= time()) $_csrf_valid = true; + if($_SESSION['_csrf'][$_csrf_id] === $_csrf_key && $_SESSION['_csrf_timeout'][$_csrf_id] >= time()) $_csrf_valid = true; } } if($_csrf_valid !== true) { diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index 484d0fa055afbc32843039811e2622763239d6ab..c50d5850278483e6841e8eae202a99d6c4f7a7f1 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -72,7 +72,7 @@ class custom_datasource { $client = $app->db->queryOneRecord("SELECT default_slave_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); $sql = "SELECT server_id,server_name FROM server WHERE server_id = ?"; } else { - $sql = "SELECT server_id,server_name FROM server WHERE dns_server = 1 ORDER BY server_name AND mirror_server_id = 0"; + $sql = "SELECT server_id,server_name FROM server WHERE dns_server = 1 AND mirror_server_id = 0 ORDER BY server_name"; } $records = $app->db->queryAllRecords($sql, $client['default_slave_dnsserver']); $records_new = array(); diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index c4764cb5558539bed8e990b4418798ef24833d77..9c7269e568624cb7ae2f696929130ad1817b9e63 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -272,7 +272,7 @@ class db if(!is_object($this->_iConnId)) { $this->_iConnId = mysqli_init(); } - if(!mysqli_real_connect($this->_isConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { + if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { if(mysqli_connect_errno() == '111') { // server is not available if($try > 9) { @@ -514,16 +514,16 @@ class db public function escape($sString) { global $app; if(!is_string($sString) && !is_numeric($sString)) { - $app->log('NON-String given in escape function! (' . gettype($sString) . ')', LOGLEVEL_INFO); + $app->log('NON-String given in escape function! (' . gettype($sString) . ')', LOGLEVEL_DEBUG); //$sAddMsg = getDebugBacktrace(); - $app->log($sAddMsg, LOGLEVEL_DEBUG); + //$app->log($sAddMsg, LOGLEVEL_DEBUG); $sString = ''; } $cur_encoding = mb_detect_encoding($sString); if($cur_encoding != "UTF-8") { if($cur_encoding != 'ASCII') { - if(is_object($app) && method_exists($app, 'log')) $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_INFO); + if(is_object($app) && method_exists($app, 'log')) $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_DEBUG); if($cur_encoding) $sString = mb_convert_encoding($sString, 'UTF-8', $cur_encoding); else $sString = mb_convert_encoding($sString, 'UTF-8'); } @@ -709,7 +709,7 @@ class db if($diff_num > 0) { $diffstr = serialize($diffrec_full); - if(isset($_SESSION)) { + if(!empty($_SESSION['s']['user']['username'])) { $username = $_SESSION['s']['user']['username']; } else { $username = 'admin'; diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 28ab9ce384da1aad506f2bd7468caa40b0aec7d1..03e331f0f14c22db8632e191e9e6a5346401b693 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -451,9 +451,9 @@ class functions { if(file_exists($id_rsa_file)) unset($id_rsa_file); if(file_exists($id_rsa_pub_file)) unset($id_rsa_pub_file); if(!file_exists($id_rsa_file) && !file_exists($id_rsa_pub_file)) { - exec('ssh-keygen -t rsa -C '.$username.'-rsa-key-'.time().' -f '.$id_rsa_file.' -N ""'); + $app->system->exec_safe('ssh-keygen -t rsa -C ? -f ? -N ""', $username.'-rsa-key-'.time(), $id_rsa_file); $app->db->query("UPDATE client SET created_at = UNIX_TIMESTAMP(), id_rsa = ?, ssh_rsa = ? WHERE client_id = ?", @file_get_contents($id_rsa_file), @file_get_contents($id_rsa_pub_file), $client_id); - exec('rm -f '.$id_rsa_file.' '.$id_rsa_pub_file); + $app->system->exec_safe('rm -f ? ?', $id_rsa_file, $id_rsa_pub_file); } else { $app->log("Failed to create SSH keypair for ".$username, LOGLEVEL_WARN); } diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php index b818e1e44a6732db717bee6560001a6ebba9ef35..522fd1a71b6f0e6bf4beebbff0c9e2ba4a06aac7 100644 --- a/interface/lib/classes/ispcmail.inc.php +++ b/interface/lib/classes/ispcmail.inc.php @@ -599,10 +599,16 @@ class ispcmail { fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf); fgets($this->_smtp_conn, 515); + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_host', false); stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer', false); stream_context_set_option($this->_smtp_conn, 'ssl', 'allow_self_signed', true); - stream_socket_enable_crypto($this->_smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method); } //AUTH LOGIN diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index a13c3fdb739691b6f49f494a1d0de15f1aa406a6..4a463fe01508e196363ed1095a5d41654398164f 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -129,13 +129,19 @@ class listform_actions { // Getting Datasets from DB $records = $app->db->queryAllRecords($this->getQueryString($php_sort)); + + $csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); + $_csrf_id = $csrf_token['csrf_id']; + $_csrf_key = $csrf_token['csrf_key']; $this->DataRowColor = "#FFFFFF"; $records_new = array(); if(is_array($records)) { $this->idx_key = $app->listform->listDef["table_idx"]; - foreach($records as $rec) { - $records_new[] = $this->prepareDataRow($rec); + foreach($records as $key => $rec) { + $records_new[$key] = $this->prepareDataRow($rec); + $records_new[$key]['csrf_id'] = $_csrf_id; + $records_new[$key]['csrf_key'] = $_csrf_key; } } @@ -264,7 +270,7 @@ class listform_actions { foreach($limits as $key => $val){ $options .= ''; } - $app->tpl->setVar('search_limit', ''); + $app->tpl->setVar('search_limit', ''); $app->tpl->setVar('toolsarea_head_txt', $app->lng('toolsarea_head_txt')); $app->tpl->setVar($app->listform->wordbook); diff --git a/interface/lib/classes/plugin_listview.inc.php b/interface/lib/classes/plugin_listview.inc.php index bd0aa0e160105701a956f69780c95daa6b18dc2a..ced308b2e5a23f57bd1962d7a5e5df9337fac7b6 100644 --- a/interface/lib/classes/plugin_listview.inc.php +++ b/interface/lib/classes/plugin_listview.inc.php @@ -123,6 +123,10 @@ class plugin_listview extends plugin_base { $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_".$app->listform->listDef['name']."_list.lng"; include $lng_file; $listTpl->setVar($wb); + + $csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); + $_csrf_id = $csrf_token['csrf_id']; + $_csrf_key = $csrf_token['csrf_key']; // Get the data @@ -157,6 +161,10 @@ class plugin_listview extends plugin_base { // The variable "id" contains always the index field $rec["id"] = $rec[$idx_key]; $rec["delete_confirmation"] = $wb['delete_confirmation']; + + // CSRF Token + $rec["csrf_id"] = $_csrf_id; + $rec["csrf_key"] = $_csrf_key; $records_new[] = $rec; } diff --git a/interface/lib/classes/plugin_system_config_dns_ca.inc.php b/interface/lib/classes/plugin_system_config_dns_ca.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..d9a99496550d82e92e1663c0c383401edf3d45e8 --- /dev/null +++ b/interface/lib/classes/plugin_system_config_dns_ca.inc.php @@ -0,0 +1,91 @@ +newTemplate('templates/system_config_dns_ca_edit.htm'); + include 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_system_config.lng'; + $pluginTpl->setVar($wb); + $ca_id = $app->functions->intval($_GET['id']); + if(isset($_GET['action']) && ($_GET['action'] == 'edit') && $ca_id > 0) { + $pluginTpl->setVar('edit_record', 1); + $rec = $app->db->queryOneRecord("SELECT * FROM dns_ssl_ca WHERE id = ?", $ca_id); + $pluginTpl->setVar('id', $rec['id']); + $pluginTpl->setVar('ca_name', $rec['ca_name']); + $pluginTpl->setVar('ca_issue', $rec['ca_issue']); + $pluginTpl->setVar('ca_wildcard', $rec['ca_wildcard']); + $pluginTpl->setVar('ca_critical', $rec['ca_critical']); + $pluginTpl->setVar('ca_iodef', $rec['ca_iodef']); + $pluginTpl->setVar('active', $rec['active']); + } elseif(isset($_GET['action']) && ($_GET['action'] == 'save') && $ca_id > 0) { + $pluginTpl->setVar('edit_record', 0); + $pluginTpl->setVar('id', $ca_id); + $pluginTpl->setVar('ca_name', $app->functions->htmlentities($_POST['ca_name'])); + $pluginTpl->setVar('ca_issue', $app->functions->htmlentities($_POST['ca_issue'])); + $pluginTpl->setVar('ca_wildcard', $app->functions->htmlentities($_POST['ca_wildcard'])); + $pluginTpl->setVar('ca_critical', $app->functions->htmlentities($_POST['ca_critical'])); + $pluginTpl->setVar('ca_iodef', $app->functions->htmlentities($_POST['ca_iodef'])); + $pluginTpl->setVar('active', $app->functions->htmlentities($_POST['active'])); + } else { + $pluginTpl->setVar('edit_record', 0); + } + + return $pluginTpl->grab(); + + } + + function onUpdate() { + global $app; + + $ca_id = $app->functions->intval($_GET['id']); + if(isset($_GET['action']) && $_GET['action'] == 'save') { + if($ca_id > 0) { + $app->db->query("UPDATE dns_ssl_ca SET ca_name = ?, ca_issue = ?, ca_wildcard = ?, ca_iodef = ?, active = ? WHERE id = ?", $_POST['ca_name'], $_POST['ca_issue'], $_POST['ca_wildcard'], $_POST['ca_iodef'], $_POST['active'], $ca_id); + } else { + $app->db->query("INSERT INTO (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, ca_name, ca_issue, ca_wildcard, ca_iodef, active) VALUES(1, 1, 'riud', 'riud', '', ?, ?, ?, ?, ?", $_POST['ca_name'], $_POST['ca_issue'], $_POST['ca_wildcard'], $_POST['ca_iodef'], $_POST['active']); + } + } + } + +} + +?> diff --git a/interface/lib/classes/plugin_system_config_dns_ca_list.inc.php b/interface/lib/classes/plugin_system_config_dns_ca_list.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..6b82c06043bcb4942b9d03ad394675d9339690d1 --- /dev/null +++ b/interface/lib/classes/plugin_system_config_dns_ca_list.inc.php @@ -0,0 +1,81 @@ +newTemplate('templates/system_config_dns_ca_list.htm'); + + //* Loading language file + $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_system_config.lng'; + include $lng_file; + $listTpl->setVar($wb); + if($_SESSION['s']['user']['typ'] == 'admin') { + if(isset($_GET['action'])) { + $ca_id = $app->functions->intval($_GET['id']); + if($_GET['action'] == 'delete' && $ca_id > 0) { + $app->db->query("DELETE FROM dns_ssl_ca WHERE id = ?", $ca_id); + } + } + } + + if(isset($_GET['action']) && $_GET['action'] == 'edit' && $_GET['id'] > 0) $listTpl->setVar('edit_record', 1); + + // Getting Datasets from DB + $ca_records = $app->db->queryAllRecords("SELECT * FROM dns_ssl_ca ORDER BY ca_name ASC"); + $records=array(); + if(is_array($ca_records) && count($ca_records) > 0) { + foreach($ca_records as $ca) { + $rec['ca_id'] = $ca['id']; + $rec['name'] = $ca['ca_name']; + $rec['active'] = $ca['active']; + $records[] = $rec; + unset($rec); + } + $listTpl->setLoop('ca_records', @$records); + } + $listTpl->setVar('parent_id', $this->form->id); + + return $listTpl->grab(); + } + +} + +?> diff --git a/interface/lib/classes/remote.d/aps.inc.php b/interface/lib/classes/remote.d/aps.inc.php index 50dda4825577555eac85e0ca56891b866db1352f..c2f8789ed132f94d53d3b67168df2cb3cbc0ec22 100644 --- a/interface/lib/classes/remote.d/aps.inc.php +++ b/interface/lib/classes/remote.d/aps.inc.php @@ -43,8 +43,7 @@ class remoting_aps extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - - require_once '../../../lib/config.inc.php'; + $app->load('aps_crawler'); $aps = new ApsCrawler($app, true); // true = Interface mode, false = Server mode @@ -238,6 +237,9 @@ class remoting_aps extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } + + $app->uses('remoting_lib'); + $app->remoting_lib->loadUserProfile(0); $app->load('aps_guicontroller'); $gui = new ApsGUIController($app); diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php index b91909c9d3cf85aca4353217b293d09d4bebe65f..e07e227e60626c3dca9fdc4c4a078fee28db195c 100644 --- a/interface/lib/classes/remote.d/client.inc.php +++ b/interface/lib/classes/remote.d/client.inc.php @@ -604,11 +604,9 @@ class remoting_client extends remoting { if($user) { $saved_password = stripslashes($user['password']); - if(substr($saved_password, 0, 3) == '$1$') { - //* The password is crypt-md5 encrypted - $salt = '$1$'.substr($saved_password, 3, 8).'$'; - - if(crypt(stripslashes($password), $salt) != $saved_password) { + if(preg_match('/^\$[156]\$/', $saved_password)) { + //* The password is crypt encrypted + if(crypt(stripslashes($password), $saved_password) !== $saved_password) { $user = false; } } else { @@ -636,11 +634,9 @@ class remoting_client extends remoting { if($user) { $saved_password = stripslashes($user['passwort']); - if(substr($saved_password, 0, 3) == '$1$') { + if(preg_match('/^\$[156]\$/', $saved_password)) { //* The password is crypt-md5 encrypted - $salt = '$1$'.substr($saved_password, 3, 8).'$'; - - if(crypt(stripslashes($password), $salt) != $saved_password) { + if(crypt(stripslashes($password), $saved_password) != $saved_password) { $user = false; } } else { diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index faae06dc2e2f456baa496966dc134cad78a3edd8..434af6a98364c134e993575281a2a5e7fcfde481 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -42,8 +42,7 @@ class remoting_dns extends remoting { // DNS Function -------------------------------------------------------------------------------------------------- //* Create Zone with Template - public function dns_templatezone_add($session_id, $client_id, $template_id, $domain, $ip, $ns1, $ns2, $email) - { + public function dns_templatezone_add($session_id, $client_id, $template_id, $domain, $ip, $ns1, $ns2, $email) { global $app, $conf; if(!$this->checkPerm($session_id, 'dns_templatezone_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); @@ -57,7 +56,9 @@ class remoting_dns extends remoting { $tform_def_file = "../../web/dns/form/dns_soa.tform.php"; $app->uses('tform'); $app->tform->loadFormDef($tform_def_file); - $app->uses('tpl,validate_dns'); + $app->uses('tpl,validate_dns,remoting_lib'); + + $app->remoting_lib->loadUserProfile($client_id); //* replace template placeholders $tpl_content = $template_record['template']; @@ -114,6 +115,7 @@ class remoting_dns extends remoting { if($vars['expire'] == '') $error .= $app->lng('error_expire_empty').'
'; if($vars['minimum'] == '') $error .= $app->lng('error_minimum_empty').'
'; if($vars['ttl'] == '') $error .= $app->lng('error_ttl_empty').'
'; + if(!isset($vars['xfer'])) $vars['xfer'] = ''; if($error == '') { // Insert the soa record @@ -184,8 +186,7 @@ class remoting_dns extends remoting { //* Get record details - public function dns_zone_get($session_id, $primary_id) - { + public function dns_zone_get($session_id, $primary_id) { global $app; if(!$this->checkPerm($session_id, 'dns_zone_get')) { @@ -198,8 +199,7 @@ class remoting_dns extends remoting { } //* Get slave zone details - public function dns_slave_get($session_id, $primary_id) - { + public function dns_slave_get($session_id, $primary_id) { global $app; if(!$this->checkPerm($session_id, 'dns_zone_get')) { @@ -213,8 +213,7 @@ class remoting_dns extends remoting { //* Add a slave zone - public function dns_slave_add($session_id, $client_id, $params) - { + public function dns_slave_add($session_id, $client_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -223,8 +222,7 @@ class remoting_dns extends remoting { } //* Update a slave zone - public function dns_slave_update($session_id, $client_id, $primary_id, $params) - { + public function dns_slave_update($session_id, $client_id, $primary_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_update')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -234,8 +232,7 @@ class remoting_dns extends remoting { } //* Delete a slave zone - public function dns_slave_delete($session_id, $primary_id) - { + public function dns_slave_delete($session_id, $primary_id) { if(!$this->checkPerm($session_id, 'dns_zone_delete')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -244,8 +241,7 @@ class remoting_dns extends remoting { } //* Get record id by origin - public function dns_zone_get_id($session_id, $origin) - { + public function dns_zone_get_id($session_id, $origin) { global $app; if(!$this->checkPerm($session_id, 'dns_zone_get_id')) { @@ -268,8 +264,7 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_zone_add($session_id, $client_id, $params) - { + public function dns_zone_add($session_id, $client_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -278,8 +273,7 @@ class remoting_dns extends remoting { } //* Update a record - public function dns_zone_update($session_id, $client_id, $primary_id, $params) - { + public function dns_zone_update($session_id, $client_id, $primary_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_update')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -289,8 +283,7 @@ class remoting_dns extends remoting { } //* Delete a record - public function dns_zone_delete($session_id, $primary_id) - { + public function dns_zone_delete($session_id, $primary_id) { if(!$this->checkPerm($session_id, 'dns_zone_delete')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -301,563 +294,312 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- - //* Get record details - public function dns_aaaa_get($session_id, $primary_id) - { + private function dns_rr_get($session_id, $primary_id, $rr_type = 'A') { global $app; - - if(!$this->checkPerm($session_id, 'dns_aaaa_get')) { + + $rr_type = strtolower($rr_type); + if(!preg_match('/^[a-z]+$/', $rr_type)) { + throw new SoapFault('permission denied', 'Invalid rr type'); + } + + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_get')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; } $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_aaaa.tform.php'); + $app->remoting_lib->loadFormDef('../dns/form/dns_' . $rr_type . '.tform.php'); return $app->remoting_lib->getDataRecord($primary_id); } - + //* Add a record - public function dns_aaaa_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_aaaa_add')) { + private function dns_rr_add($session_id, $client_id, $params, $update_serial=false, $rr_type = 'A') { + $rr_type = strtolower($rr_type); + if(!preg_match('/^[a-z]+$/', $rr_type)) { + throw new SoapFault('permission denied', 'Invalid rr type'); + } + + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_aaaa.tform.php', $client_id, $params); + if($update_serial) { + $this->increase_serial($session_id, $client_id, $params); + } + return $this->insertQuery('../dns/form/dns_' . $rr_type . '.tform.php', $client_id, $params); } //* Update a record - public function dns_aaaa_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_aaaa_update')) { + private function dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial=false, $rr_type = 'A') { + $rr_type = strtolower($rr_type); + if(!preg_match('/^[a-z]+$/', $rr_type)) { + throw new SoapFault('permission denied', 'Invalid rr type'); + } + + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_update')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - $affected_rows = $this->updateQuery('../dns/form/dns_aaaa.tform.php', $client_id, $primary_id, $params); - if($update_serial) $this->increase_serial($session_id, $client_id, $params); + $affected_rows = $this->updateQuery('../dns/form/dns_' . $rr_type . '.tform.php', $client_id, $primary_id, $params); + if($update_serial) { + $this->increase_serial($session_id, $client_id, $params); + } return $affected_rows; } - + //* Delete a record - public function dns_aaaa_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_aaaa_delete')) { + private function dns_rr_delete($session_id, $primary_id, $update_serial=false, $rr_type = 'A') { + $rr_type = strtolower($rr_type); + if(!preg_match('/^[a-z]+$/', $rr_type)) { + throw new SoapFault('permission denied', 'Invalid rr type'); + } + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_delete')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; } - $affected_rows = $this->deleteQuery('../dns/form/dns_aaaa.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); + if($update_serial) { + $this->increase_serial($session_id, 0, array('dns_rr_id' => $primary_id)); + } + $affected_rows = $this->deleteQuery('../dns/form/dns_' . $rr_type . '.tform.php', $primary_id); return $affected_rows; } + + // ---------------------------------------------------------------------------------------------------------------- + + //* Get record details + public function dns_aaaa_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'AAAA'); + } + + //* Add a record + public function dns_aaaa_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'AAAA'); + } + + //* Update a record + public function dns_aaaa_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'AAAA'); + } + + //* Delete a record + public function dns_aaaa_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'AAAA'); + } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_a_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_a_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_a.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_a_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'A'); } //* Add a record - public function dns_a_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_a_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_a.tform.php', $client_id, $params); + public function dns_a_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'A'); } //* Update a record - public function dns_a_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_a_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_a.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_a_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'A'); } //* Delete a record - public function dns_a_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_a_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_a.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_a_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'A'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_alias_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_alias_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_alias.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_alias_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'ALIAS'); } //* Add a record - public function dns_alias_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_alias_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_alias.tform.php', $client_id, $params); + public function dns_alias_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'ALIAS'); } //* Update a record - public function dns_alias_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_alias_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_alias.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_alias_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'ALIAS'); } //* Delete a record - public function dns_alias_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_alias_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_alias.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_alias_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'ALIAS'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_cname_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_cname_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_cname.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_cname_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'CNAME'); } //* Add a record - public function dns_cname_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_cname_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_cname.tform.php', $client_id, $params); + public function dns_cname_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'CNAME'); } //* Update a record - public function dns_cname_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_cname_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_cname.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_cname_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'CNAME'); } //* Delete a record - public function dns_cname_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_cname_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_cname.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_cname_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'CNAME'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_hinfo_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_hinfo_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_hinfo.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_hinfo_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'HINFO'); } //* Add a record - public function dns_hinfo_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_hinfo_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_hinfo.tform.php', $client_id, $params); + public function dns_hinfo_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'HINFO'); } //* Update a record - public function dns_hinfo_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_hinfo_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_hinfo.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_hinfo_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'HINFO'); } //* Delete a record - public function dns_hinfo_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_hinfo_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_hinfo.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_hinfo_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'HINFO'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_mx_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_mx_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_mx.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_mx_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'MX'); } //* Add a record - public function dns_mx_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_mx_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_mx.tform.php', $client_id, $params); + public function dns_mx_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'MX'); } //* Update a record - public function dns_mx_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_mx_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_mx.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_mx_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'MX'); } //* Delete a record - public function dns_mx_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_mx_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_mx.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_mx_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'MX'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_ns_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_ns_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_ns.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_ns_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'NS'); } //* Add a record - public function dns_ns_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_ns_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_ns.tform.php', $client_id, $params); + public function dns_ns_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'NS'); } //* Update a record - public function dns_ns_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_ns_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_ns.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_ns_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'NS'); } //* Delete a record - public function dns_ns_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_ns_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_ns.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_ns_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'NS'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_ptr_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_ptr_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_ptr.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_ptr_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'PTR'); } //* Add a record - public function dns_ptr_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_ptr_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_ptr.tform.php', $client_id, $params); + public function dns_ptr_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'PTR'); } //* Update a record - public function dns_ptr_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_ptr_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_ptr.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_ptr_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'PTR'); } //* Delete a record - public function dns_ptr_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_ptr_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_ptr.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_ptr_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'PTR'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_rp_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_rp_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_rp.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_rp_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'RP'); } //* Add a record - public function dns_rp_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_rp_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_rp.tform.php', $client_id, $params); + public function dns_rp_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'RP'); } //* Update a record - public function dns_rp_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_rp_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_rp.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_rp_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'RP'); } //* Delete a record - public function dns_rp_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_rp_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_rp.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_rp_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'RP'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_srv_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_srv_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_srv.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_srv_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'SRV'); } //* Add a record - public function dns_srv_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_srv_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_srv.tform.php', $client_id, $params); + public function dns_srv_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'SRV'); } //* Update a record - public function dns_srv_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_srv_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_srv.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_srv_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'SRV'); } //* Delete a record - public function dns_srv_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_srv_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_srv.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_srv_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'SRV'); } // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_txt_get($session_id, $primary_id) - { - global $app; - - if(!$this->checkPerm($session_id, 'dns_txt_get')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../dns/form/dns_txt.tform.php'); - return $app->remoting_lib->getDataRecord($primary_id); + public function dns_txt_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'TXT'); } //* Add a record - public function dns_txt_add($session_id, $client_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_txt_add')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - return $this->insertQuery('../dns/form/dns_txt.tform.php', $client_id, $params); + public function dns_txt_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'TXT'); } //* Update a record - public function dns_txt_update($session_id, $client_id, $primary_id, $params, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_txt_update')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - if($update_serial) $this->increase_serial($session_id, $client_id, $params); - $affected_rows = $this->updateQuery('../dns/form/dns_txt.tform.php', $client_id, $primary_id, $params); - return $affected_rows; + public function dns_txt_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'TXT'); } //* Delete a record - public function dns_txt_delete($session_id, $primary_id, $update_serial=false) - { - if(!$this->checkPerm($session_id, 'dns_txt_delete')) { - throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; - } - $affected_rows = $this->deleteQuery('../dns/form/dns_txt.tform.php', $primary_id); - if($update_serial) $this->increase_serial($session_id, $client_id, array('dns_rr_id' => $primary_id)); - return $affected_rows; + public function dns_txt_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'TXT'); } /** @@ -957,5 +699,3 @@ class remoting_dns extends remoting { $this->dns_zone_update($session_id, $client_id, $soa['id'], $soa); } } - -?> diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php index bda7e861ed429f1c9c985c3dcf6d180aef843281..477743dfc3f52c839765ee8180e805c67f66a857 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -710,7 +710,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* czarna lista e-mail + //* Add a new spamfilter blacklist public function mail_spamfilter_blacklist_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_add')) @@ -810,7 +810,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* polityki filtrów spamu e-mail + //* Add a spam policy public function mail_policy_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_policy_add')) @@ -860,7 +860,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* fetchmail + //* Add fetchmail public function mail_fetchmail_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_fetchmail_add')) @@ -960,7 +960,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* wpisy białej listy + //* Add blacklist public function mail_blacklist_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_blacklist_add')) @@ -1010,7 +1010,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* wpisy filtrow e-mail + //* Add mail filter public function mail_filter_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_filter_add')) diff --git a/interface/lib/classes/remote.d/monitor.inc.php b/interface/lib/classes/remote.d/monitor.inc.php index d3689b94caaa0e40ea65b3b906950ab114f9688f..3df681f9ba2f0202a3e2d350e938bd1f8e6ae2e1 100644 --- a/interface/lib/classes/remote.d/monitor.inc.php +++ b/interface/lib/classes/remote.d/monitor.inc.php @@ -39,7 +39,6 @@ class remoting_monitor extends remoting { if(!$this->checkPerm($session_id, 'monitor_jobqueue_count')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; } $server_id = intval($server_id); @@ -48,7 +47,7 @@ class remoting_monitor extends remoting { $servers = $app->db->queryAllRecords("SELECT server_id, updated FROM server"); $sql = 'SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE '; foreach($servers as $sv) { - $sql .= " (datalog_id > ".$sv['updated']." AND server_id = ".$sv['server_id'].") OR "; + $sql .= " (datalog_id > ".$sv['updated']." AND server_id IN (0,".$sv['server_id'].")) OR "; } $sql = substr($sql, 0, -4); $tmp = $app->db->queryOneRecord($sql); @@ -56,7 +55,7 @@ class remoting_monitor extends remoting { } else { $server = $app->db->queryOneRecord("SELECT updated FROM server WHERE server_id = ?",$server_id); - $tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ?',$server['updated']); + $tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ? AND server_id IN ?',$server['updated'], array(0, $server_id)); return $tmp['jobqueue_count']; } } diff --git a/interface/lib/classes/remote.d/server.inc.php b/interface/lib/classes/remote.d/server.inc.php index 4962cb4c59e0a35575fcf4562c11322ae32fd07c..77649d1bb4c9385dc26cbfffdc175d79ffb026b0 100644 --- a/interface/lib/classes/remote.d/server.inc.php +++ b/interface/lib/classes/remote.d/server.inc.php @@ -288,6 +288,4 @@ class remoting_server extends remoting { return false; } } -} - -?> +} \ No newline at end of file diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php index a2f15d6f9d4f73c5bcd67c21ca407c20dfde052c..59c2e371f34f89a7d25714e610cc7a252b761980 100644 --- a/interface/lib/classes/remote.d/sites.inc.php +++ b/interface/lib/classes/remote.d/sites.inc.php @@ -1017,6 +1017,56 @@ class remoting_sites extends remoting { return $app->quota_lib->get_databasequota_data($client_id, false); } + // ---------------------------------------------------------------------------------------------------------- + + //* Get record details + public function sites_webdav_user_get($session_id, $primary_id) + { + global $app; + + if(!$this->checkPerm($session_id, 'sites_webdav_user_get')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $app->uses('remoting_lib'); + $app->remoting_lib->loadFormDef('../sites/form/webdav_user.tform.php'); + return $app->remoting_lib->getDataRecord($primary_id); + } + + //* Add a record + public function sites_webdav_user_add($session_id, $client_id, $params) + { + if(!$this->checkPerm($session_id, 'sites_webdav_user_add')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + return $this->insertQuery('../sites/form/webdav_user.tform.php', $client_id, $params); + } + + //* Update a record + public function sites_webdav_user_update($session_id, $client_id, $primary_id, $params) + { + if(!$this->checkPerm($session_id, 'sites_webdav_user_update')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $affected_rows = $this->updateQuery('../sites/form/webdav_user.tform.php', $client_id, $primary_id, $params); + return $affected_rows; + } + + //* Delete a record + public function sites_webdav_user_delete($session_id, $primary_id) + { + global $app; + if(!$this->checkPerm($session_id, 'sites_webdav_user_delete')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + $affected_rows = $this->deleteQuery('../sites/form/webdav_user.tform.php', $primary_id); + return $affected_rows; + } + } diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 6e551355a690536aa8e938395c110476914ceb3d..e1fc1ada863f1cdc02c89a68dafe6f703096dee9 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -99,28 +99,22 @@ class remoting { if($user) { $saved_password = stripslashes($user['passwort']); - if(substr($saved_password, 0, 3) == '$1$') { + if(preg_match('/^\$[156]\$/', $saved_password)) { //* The password is crypt-md5 encrypted - $salt = '$1$'.substr($saved_password, 3, 8).'$'; - - if(crypt(stripslashes($password), $salt) != $saved_password) { + if(crypt(stripslashes($password), $saved_password) != $saved_password) { throw new SoapFault('client_login_failed', 'The login failed. Username or password wrong.'); - return false; } } else { //* The password is md5 encrypted if(md5($password) != $saved_password) { throw new SoapFault('client_login_failed', 'The login failed. Username or password wrong.'); - return false; } } } else { throw new SoapFault('client_login_failed', 'The login failed. Username or password wrong.'); - return false; } if($user['active'] != 1) { throw new SoapFault('client_login_failed', 'The login failed. User is blocked.'); - return false; } // now we need the client data diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index cef9424a75d61203e57060fb8aee39eb85a14435..0be2b6b1e9a7c774601c95caf94b5ad12f9282d3 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -31,6 +31,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class system { var $client_service = null; + private $_last_exec_out = null; + private $_last_exec_retcode = null; public function has_service($userid, $service) { global $app; @@ -52,8 +54,48 @@ class system { return false; } } -} //* End Class - -?> - + public function last_exec_out() { + return $this->_last_exec_out; + } + + public function last_exec_retcode() { + return $this->_last_exec_retcode; + } + + public function exec_safe($cmd) { + $arg_count = func_num_args(); + if($arg_count != substr_count($cmd, '?') + 1) { + trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); + return false; + } + if($arg_count > 1) { + $args = func_get_args(); + array_shift($args); + + $pos = 0; + $a = 0; + foreach($args as $value) { + $a++; + + $pos = strpos($cmd, '?', $pos); + if($pos === false) { + break; + } + $value = escapeshellarg($value); + $cmd = substr_replace($cmd, $value, $pos, 1); + $pos += strlen($value); + } + } + + $this->_last_exec_out = null; + $this->_last_exec_retcode = null; + return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); + } + + public function system_safe($cmd) { + call_user_func_array(array($this, 'exec_safe'), func_get_args()); + return implode("\n", $this->_last_exec_out); + } + +} //* End Class diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index f277c51274f3e8e4f9c5f03814f07367c7a8fcf2..d83ec0d3d78a89bebedb1e1011158ed22aae7b5c 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -297,6 +297,9 @@ class tform_actions { */ function onDelete() { global $app, $conf, $list_def_file, $tform_def_file; + + // Check CSRF Token + $app->auth->csrf_token_check('GET'); include_once $list_def_file; diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index 36de1371ab25fabe07d908f431ce8bb9016a8833..e6174d2da763556a2a3f94f8ad4ccb57fba3cbbd 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -336,69 +336,84 @@ class tform_base { } //* If the parameter 'valuelimit' is set - function applyValueLimit($limit, $values) { + function applyValueLimit($limit, $values, $current_value = '') { global $app; + + // we mas have multiple limits, therefore we explode by ; first + // Example: "system:sites:web_php_options;client:web_php_options" + $limits = explode(';',$limit); + + + foreach($limits as $limit) { - $limit_parts = explode(':', $limit); + $limit_parts = explode(':', $limit); - //* values are limited to a comma separated list - if($limit_parts[0] == 'list') { - $allowed = explode(',', $limit_parts[1]); - } - - //* values are limited to a field in the client settings - if($limit_parts[0] == 'client') { - if($_SESSION["s"]["user"]["typ"] == 'admin') { - return $values; - } else { - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - $allowed = explode(',', $client['lm']); + //* values are limited to a comma separated list + if($limit_parts[0] == 'list') { + $allowed = explode(',', $limit_parts[1]); } - } - //* values are limited to a field in the reseller settings - if($limit_parts[0] == 'reseller') { - if($_SESSION["s"]["user"]["typ"] == 'admin') { - return $values; - } else { - //* Get the limits of the client that is currently logged in - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - //echo "SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"; - //* If the client belongs to a reseller, we will check against the reseller Limit too - if($client['parent_client_id'] != 0) { - - //* first we need to know the groups of this reseller - $tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ?", $client['parent_client_id']); - $reseller_groups = $tmp["groups"]; - $reseller_userid = $tmp["userid"]; - - // Get the limits of the reseller of the logged in client - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $reseller = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM client WHERE client_id = ?", $client['parent_client_id']); - $allowed = explode(',', $reseller['lm']); - } else { + //* values are limited to a field in the client settings + if($limit_parts[0] == 'client') { + if($_SESSION["s"]["user"]["typ"] == 'admin') { return $values; + } else { + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $client = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + $allowed = explode(',', $client['lm']); } - } // end if admin - } // end if reseller - - //* values are limited to a field in the system settings - if($limit_parts[0] == 'system') { - $app->uses('getconf'); - $tmp_conf = $app->getconf->get_global_config($limit_parts[1]); - $tmp_key = $limit_parts[2]; - $allowed = $tmp_conf[$tmp_key]; - } + } + + //* values are limited to a field in the reseller settings + if($limit_parts[0] == 'reseller') { + if($_SESSION["s"]["user"]["typ"] == 'admin') { + return $values; + } else { + //* Get the limits of the client that is currently logged in + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + //echo "SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"; + //* If the client belongs to a reseller, we will check against the reseller Limit too + if($client['parent_client_id'] != 0) { + + //* first we need to know the groups of this reseller + $tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ?", $client['parent_client_id']); + $reseller_groups = $tmp["groups"]; + $reseller_userid = $tmp["userid"]; + + // Get the limits of the reseller of the logged in client + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $reseller = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM client WHERE client_id = ?", $client['parent_client_id']); + $allowed = explode(',', $reseller['lm']); + } else { + return $values; + } + } // end if admin + } // end if reseller + + //* values are limited to a field in the system settings + if($limit_parts[0] == 'system') { + $app->uses('getconf'); + $tmp_conf = $app->getconf->get_global_config($limit_parts[1]); + $tmp_key = $limit_parts[2]; + $allowed = $allowed = explode(',',$tmp_conf[$tmp_key]); + } + + // add the current value to the allowed array + $allowed[] = $current_value; + + // remove all values that are not allowed + $values_new = array(); + foreach($values as $key => $val) { + if(in_array($key, $allowed)) $values_new[$key] = $val; + } + + $values = $values_new; - $values_new = array(); - foreach($values as $key => $val) { - if(in_array($key, $allowed)) $values_new[$key] = $val; } - return $values_new; + return $values; } @@ -464,7 +479,7 @@ class tform_base { // If a limitation for the values is set if(isset($field['valuelimit']) && is_array($field["value"])) { - $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"]); + $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"], $val); } switch ($field['formtype']) { @@ -599,7 +614,7 @@ class tform_base { // If a limitation for the values is set if(isset($field['valuelimit']) && is_array($field["value"])) { - $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"]); + $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"], $field['default']); } switch ($field['formtype']) { diff --git a/interface/lib/classes/validate_autoresponder.inc.php b/interface/lib/classes/validate_autoresponder.inc.php index 8fefa33b301ad707c3eca7ada45591122f979a6d..25db68bdd97226ea9be48d3e93c1e064b676666f 100755 --- a/interface/lib/classes/validate_autoresponder.inc.php +++ b/interface/lib/classes/validate_autoresponder.inc.php @@ -53,8 +53,8 @@ class validate_autoresponder extends validate_datetime // Parse date $datetimeformat = (isset($app->remoting_lib) ? $app->remoting_lib->datetimeformat : $app->tform->datetimeformat); - $start_date_array = date_parse_from_format($datetimeformat,$start_date); - $end_date_array = date_parse_from_format($datetimeformat,$field_value); + $start_date_array = date_parse_from_format($datetimeformat, $start_date); + $end_date_array = date_parse_from_format($datetimeformat, $field_value); //calculate timestamps $start_date_tstamp = mktime($start_date_array['hour'], $start_date_array['minute'], $start_date_array['second'], $start_date_array['month'], $start_date_array['day'], $start_date_array['year']); diff --git a/interface/lib/classes/validate_dkim.inc.php b/interface/lib/classes/validate_dkim.inc.php index 443fe76d7ff7d2012c1c10db90198bfc1024a52e..3fbc28a0a1928809fab86c49b0cdb3117a1f81a4 100644 --- a/interface/lib/classes/validate_dkim.inc.php +++ b/interface/lib/classes/validate_dkim.inc.php @@ -49,10 +49,13 @@ class validate_dkim { * Validator function for private DKIM-Key */ function check_private_key($field_name, $field_value, $validator) { + global $app; + $dkim_enabled=$_POST['dkim']; if ($dkim_enabled == 'y') { if (empty($field_value)) return $this->get_error($validator['errmsg']); - exec('echo '.escapeshellarg($field_value).'|openssl rsa -check', $output, $result); + $app->system->exec_safe('echo ?|openssl rsa -check', $field_value); + $result = $app->system->last_exec_retcode(); if($result != 0) return $this->get_error($validator['errmsg']); } } diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng index 7db654bd05b2ecd8cccdddc501d0f0a7bb56d5e1..60a0dcf9109eab72c233cbf2be1309f1bf0679b1 100644 --- a/interface/lib/lang/br.lng +++ b/interface/lib/lang/br.lng @@ -1,45 +1,48 @@ diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index 6bd61dd6d970c365f39c0445af0224c9033d928b..eeb0819292eac0260fbfdc5121b8c5a252640a73 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -33,7 +33,7 @@ $wb['top_menu_monitor'] = 'Monitor'; $wb['top_menu_sites'] = 'Stránky'; $wb['top_menu_dns'] = 'DNS'; $wb['top_menu_tools'] = 'Nástroje'; -$wb['top_menu_help'] = 'Pomoc'; +$wb['top_menu_help'] = 'Podpora'; $wb['toolsarea_head_txt'] = 'Nástroje'; $wb['top_menu_billing'] = 'Fakturace'; $wb['top_menu_domain'] = 'Doména'; diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 115bc890bb97fb7536a4960bc705b0e05d37a46c..cf4491ad5d963701364a3f3005ca24a36b0d695a 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -36,10 +36,10 @@ $wb['top_menu_dns'] = 'DNS'; $wb['top_menu_tools'] = 'Araçlar'; $wb['top_menu_help'] = 'Yardım'; $wb['top_menu_billing'] = 'Faturalama'; -$wb['top_menu_mailuser'] = 'Posta Kullanıcısı'; +$wb['top_menu_mailuser'] = 'E-posta Kullanıcısı'; $wb['top_menu_domain'] = 'Alan Adları'; $wb['top_menu_dashboard'] = 'Açılış'; -$wb['top_menu_vm'] = 'SSunucu'; +$wb['top_menu_vm'] = 'sSunucu'; $wb['toolsarea_head_txt'] = 'Araçlar'; $wb['latest_news_txt'] = 'Haberler'; $wb['logout_txt'] = 'Oturumu Kapat'; @@ -74,65 +74,72 @@ $wb['datepicker_prevText'] = 'Önceki'; $wb['submit_confirmation'] = 'Bu işlemi yapmak istiyor musunuz?'; $wb['globalsearch_resultslimit_of_txt'] = '/'; $wb['globalsearch_resultslimit_results_txt'] = 'sonuç'; -$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.'; +$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.'; $wb['globalsearch_noresults_limit_txt'] = '0 sonuç'; $wb['globalsearch_searchfield_watermark_txt'] = 'Arama'; $wb['globalsearch_suggestions_text_txt'] = 'Öneriler'; -$wb['global_tabchange_warning_txt'] = 'Bu sekmedeki değişiklikler Tamam düğmesine tıklandığında kaydedilir. İptal düğmesine tıklandığında yoksayılır.'; -$wb['global_tabchange_discard_txt'] = 'Bu sekmede kaydedilmemiş değişiklikler var. Devam ederseniz değişiklikler yoksayılacak.'; +$wb['global_tabchange_warning_txt'] = 'Bu sekmedeki değişiklikler Tamam düğmesine tıklandığında kaydedilir. İptal düğmesine tıklandığında yok sayılır.'; +$wb['global_tabchange_discard_txt'] = 'Bu sekmede kaydedilmemiş değişiklikler var. Devam ederseniz değişiklikler yok sayılacak.'; + $wb['datalog_changes_txt'] = 'Şu değişiklikler henüz tüm sunuculara dağıtılmadı:'; $wb['datalog_changes_end_txt'] = 'Güncellemelerin kaydedilmesi bir dakika kadar sürecek. Lütfen bekleyin.'; -$wb['datalog_status_i_web_database'] = 'Veritabanı ekle'; -$wb['datalog_status_u_web_database'] = 'Veritabanını güncelle'; -$wb['datalog_status_d_web_database'] = 'Veritabanını sil'; -$wb['datalog_status_i_web_database_user'] = 'Veritabanı kullanıcısı ekle'; -$wb['datalog_status_u_web_database_user'] = 'Veritabanı kullanıcısını güncelle'; -$wb['datalog_status_d_web_database_user'] = 'Veritabanı kullanıcısını sil'; -$wb['datalog_status_i_web_domain'] = 'Web sitesi ekle'; -$wb['datalog_status_u_web_domain'] = 'Web sitesi ayarlarını güncelle'; -$wb['datalog_status_d_web_domain'] = 'Web sitesini sil'; -$wb['datalog_status_i_ftp_user'] = 'FTP kullanıcısı ekle'; -$wb['datalog_status_u_ftp_user'] = 'FTP kullanıcısını güncelle'; -$wb['datalog_status_d_ftp_user'] = 'FTP kullanıcısını sil'; -$wb['datalog_status_i_mail_domain'] = 'E-posta alan adı ekle'; -$wb['datalog_status_u_mail_domain'] = 'E-posta alan adını güncelle'; -$wb['datalog_status_d_mail_domain'] = 'E-posta alan adını sil'; -$wb['datalog_status_i_mail_user'] = 'E-posta kullanıcısı ekle'; -$wb['datalog_status_u_mail_user'] = 'E-posta kullanıcısını güncelle'; -$wb['datalog_status_d_mail_user'] = 'E-posta kullanıcısını sil'; -$wb['datalog_status_i_spamfilter_users'] = 'Spam süzgeci ayarları ekle'; -$wb['datalog_status_u_spamfilter_users'] = 'Spam süzgeci ayarlarını güncelle'; -$wb['datalog_status_d_spamfilter_users'] = 'Spam süzgeci ayarlarını sil'; -$wb['datalog_status_i_mail_forwarding'] = 'E-posta adresi ekle'; -$wb['datalog_status_u_mail_forwarding'] = 'E-posta adresini güncelle'; -$wb['datalog_status_d_mail_forwarding'] = 'E-posta adresini sil'; -$wb['datalog_status_i_dns_rr'] = 'DNS kaydı ekle'; -$wb['datalog_status_u_dns_rr'] = 'DNS kaydını güncelle'; -$wb['datalog_status_d_dns_rr'] = 'DNS kaydını sil'; -$wb['datalog_status_i_dns_soa'] = 'DNS bölgesi ekle'; -$wb['datalog_status_u_dns_soa'] = 'DNS bölgesini güncelle'; -$wb['datalog_status_d_dns_soa'] = 'DNS bölgesini sil'; -$wb['datalog_status_i_cron'] = 'Zamanlanmış görev ekle'; -$wb['datalog_status_u_cron'] = 'Zamanlanmış görevi güncelle'; -$wb['datalog_status_d_cron'] = 'Zamanlanmış görevi sil'; -$wb['datalog_status_i_mail_get'] = 'E-posta alma hesabı ekle'; -$wb['datalog_status_u_mail_get'] = 'E-posta alma hesabını güncelle'; -$wb['datalog_status_d_mail_get'] = 'E-posta alma hesabını sil'; -$wb['datalog_status_i_mail_mailinglist'] = 'E-posta listesi ekle'; -$wb['datalog_status_u_mail_mailinglist'] = 'E-posta listesini güncelle'; -$wb['datalog_status_d_mail_mailinglist'] = 'E-posta listesini sil'; -$wb['datalog_status_i_shell_user'] = 'Kabuk kullanıcısı ekle'; -$wb['datalog_status_u_shell_user'] = 'Kabuk kullanıcısını güncelle'; -$wb['datalog_status_d_shell_user'] = 'Kabuk kullanıcısını sil'; -$wb['datalog_status_i_web_folder'] = 'Klasör koruması ekle'; -$wb['datalog_status_u_web_folder'] = 'Klasör korumasını güncelle'; -$wb['datalog_status_d_web_folder'] = 'Klasör korumasını sil'; -$wb['datalog_status_i_web_folder_user'] = 'Klasör koruma kullanıcısı ekle'; -$wb['datalog_status_u_web_folder_user'] = 'Klasör koruma kullanıcısını güncelle'; -$wb['datalog_status_d_web_folder_user'] = 'Klasör koruma kullanıcısını sil'; +$wb['datalog_status_i_web_database'] = 'Veritabanı Ekle'; +$wb['datalog_status_u_web_database'] = 'Veritabanını Güncelle'; +$wb['datalog_status_d_web_database'] = 'Veritabanını Sil'; +$wb['datalog_status_i_web_database_user'] = 'Veritabanı Kullanıcısı Ekle'; +$wb['datalog_status_u_web_database_user'] = 'Veritabanı Kullanıcısını Güncelle'; +$wb['datalog_status_d_web_database_user'] = 'Veritabanı Kullanıcısını Sil'; +$wb['datalog_status_i_web_domain'] = 'Web Sitesi Ekle'; +$wb['datalog_status_u_web_domain'] = 'Web Sitesi Ayarlarını Güncelle'; +$wb['datalog_status_d_web_domain'] = 'Web Sitesini Sil'; +$wb['datalog_status_i_ftp_user'] = 'FTP Kullanıcısı Ekle'; +$wb['datalog_status_u_ftp_user'] = 'FTP Kullanıcısını Güncelle'; +$wb['datalog_status_d_ftp_user'] = 'FTP Kullanıcısını Sil'; +$wb['datalog_status_i_mail_domain'] = 'E-posta Etki Alanı Ekle'; +$wb['datalog_status_u_mail_domain'] = 'E-posta Etki Alanını Güncelle'; +$wb['datalog_status_d_mail_domain'] = 'E-posta Etki Alanını Sil'; +$wb['datalog_status_i_mail_user'] = 'E-posta Kullanıcısı Ekle'; +$wb['datalog_status_u_mail_user'] = 'E-posta Kullanıcısını Güncelle'; +$wb['datalog_status_d_mail_user'] = 'E-posta Kullanıcısını Sil'; +$wb['datalog_status_i_spamfilter_users'] = 'Spam Süzgeci Ayarları Ekle'; +$wb['datalog_status_u_spamfilter_users'] = 'Spam Süzgeci Ayarlarını Güncelle'; +$wb['datalog_status_d_spamfilter_users'] = 'Spam Süzgeci Ayarlarını Sil'; +$wb['datalog_status_i_mail_forwarding'] = 'E-posta Adresi Ekle'; +$wb['datalog_status_u_mail_forwarding'] = 'E-posta Adresini Güncelle'; +$wb['datalog_status_d_mail_forwarding'] = 'E-posta Adresini Sil'; +$wb['datalog_status_i_dns_rr'] = 'DNS Kaydı Ekle'; +$wb['datalog_status_u_dns_rr'] = 'DNS Kaydını Güncelle'; +$wb['datalog_status_d_dns_rr'] = 'DNS Kaydını Sil'; +$wb['datalog_status_i_dns_soa'] = 'DNS Bölgesi Ekle'; +$wb['datalog_status_u_dns_soa'] = 'DNS Bölgesini Güncelle'; +$wb['datalog_status_d_dns_soa'] = 'DNS Bölgesini Sil'; +$wb['datalog_status_i_cron'] = 'Zamanlanmış Görev Ekle'; +$wb['datalog_status_u_cron'] = 'Zamanlanmış Görevi Güncelle'; +$wb['datalog_status_d_cron'] = 'Zamanlanmış Görevi Sil'; +$wb['datalog_status_i_mail_get'] = 'E-posta Alma Hesabı Ekle'; +$wb['datalog_status_u_mail_get'] = 'E-posta Alma Hesabını Güncelle'; +$wb['datalog_status_d_mail_get'] = 'E-posta Alma Hesabını Sil'; +$wb['datalog_status_i_mail_mailinglist'] = 'E-posta Listesi Ekle'; +$wb['datalog_status_u_mail_mailinglist'] = 'E-posta Listesini Güncelle'; +$wb['datalog_status_d_mail_mailinglist'] = 'E-posta Listesini Sil'; +$wb['datalog_status_i_shell_user'] = 'Kabuk Kullanıcısı Ekle'; +$wb['datalog_status_u_shell_user'] = 'Kabuk Kullanıcısını Güncelle'; +$wb['datalog_status_d_shell_user'] = 'Kabuk Kullanıcısını Sil'; +$wb['datalog_status_i_web_folder'] = 'Klasör Koruması Ekle'; +$wb['datalog_status_u_web_folder'] = 'Klasör Korumasını Güncelle'; +$wb['datalog_status_d_web_folder'] = 'Klasör Korumasını Sil'; +$wb['datalog_status_i_web_folder_user'] = 'Klasör Koruma Kullanıcısı Ekle'; +$wb['datalog_status_u_web_folder_user'] = 'Klasör Koruma Kullanıcısını Güncelle'; +$wb['datalog_status_d_web_folder_user'] = 'Klasör Koruma Kullanıcısını Sil'; +$wb['datalog_status_i_xmpp_domain'] = 'XMPP etki alanı ekle'; +$wb['datalog_status_u_xmpp_domain'] = 'XMPP etki alanını düzenle'; +$wb['datalog_status_d_xmpp_domain'] = 'XMPP etki alanını sil'; +$wb['datalog_status_i_xmpp_user'] = 'XMPP kullanıcısı ekle'; +$wb['datalog_status_u_xmpp_user'] = 'XMPP kullanıcısını güncelle'; +$wb['datalog_status_d_xmpp_user'] = 'XMPP kullanıcısını sil'; $wb['err_csrf_attempt_blocked'] = 'CSRF girişimi engellendi.'; $wb['login_as_txt'] = 'Müşteri adıyla oturum aç'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; $wb['no_destination_perm'] = 'Bu hedef için izniniz yok.'; $wb['client_you_are_locked'] = 'Herhangi bir ayarı değiştirme izniniz yok.'; $wb['gender_m_txt'] = 'Bay'; @@ -146,16 +153,10 @@ $wb['strength_2'] = 'Yeterli'; $wb['strength_3'] = 'İyi'; $wb['strength_4'] = 'Güçlü'; $wb['strength_5'] = 'Çok Güçlü'; -$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda ve \\"{strength}\\" güçlüğünde olmalı.'; +$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda ve "{strength}" güçlüğünde olmalı.'; $wb['weak_password_length_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun değil. Parola en az {chars} karakter uzunluğunda olmalı.'; $wb['security_check1_txt'] = 'Güvenlik iznini denetle:'; $wb['security_check2_txt'] = 'başarısız.'; -$wb['select_directive_snippet_txt'] = 'Directive Snippets'; -$wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets'; -$wb['datalog_status_i_xmpp_domain'] = 'Create XMPP domain'; -$wb['datalog_status_u_xmpp_domain'] = 'Update XMPP domain'; -$wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain'; -$wb['datalog_status_i_xmpp_user'] = 'Create XMPP user'; -$wb['datalog_status_u_xmpp_user'] = 'Update XMPP user'; -$wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user'; +$wb['select_directive_snippet_txt'] = 'Yönerge Kod Parçaları'; +$wb['select_master_directive_snippet_txt'] = 'Ana Komut Parçaları'; ?> diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php index e72c4aa06b2d8ce82fce9e895db40aba5f331a20..598fe74f09bb75c843b4a9a66a322e454a471957 100644 --- a/interface/lib/plugins/mail_mail_domain_plugin.inc.php +++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php @@ -26,6 +26,8 @@ class mail_mail_domain_plugin { */ function mail_mail_domain_edit($event_name, $page_form) { global $app, $conf; + + $domain = $app->functions->idn_encode($page_form->dataRecord['domain']); // make sure that the record belongs to the client group and not the admin group when a dmin inserts it // also make sure that the user can not delete entry created by an admin @@ -57,7 +59,7 @@ class mail_mail_domain_plugin { } //** If the domain name or owner has been changed, change the domain and owner in all mailbox records - if($page_form->oldDataRecord && ($page_form->oldDataRecord['domain'] != $page_form->dataRecord['domain'] || + if($page_form->oldDataRecord && ($page_form->oldDataRecord['domain'] != $domain || (isset($page_form->dataRecord['client_group_id']) && $page_form->oldDataRecord['sys_groupid'] != $page_form->dataRecord['client_group_id']))) { $app->uses('getconf'); $mail_config = $app->getconf->get_server_config($page_form->dataRecord["server_id"], 'mail'); @@ -71,9 +73,9 @@ class mail_mail_domain_plugin { foreach($mailusers as $rec) { // setting Maildir, Homedir, UID and GID $mail_parts = explode("@", $rec['email']); - $maildir = str_replace("[domain]", $page_form->dataRecord['domain'], $mail_config["maildir_path"]); + $maildir = str_replace("[domain]", $domain, $mail_config["maildir_path"]); $maildir = str_replace("[localpart]", $mail_parts[0], $maildir); - $email = $mail_parts[0].'@'.$page_form->dataRecord['domain']; + $email = $mail_parts[0].'@'.$domain; $app->db->datalogUpdate('mail_user', array("maildir" => $maildir, "email" => $email, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailuser_id', $rec['mailuser_id']); } } @@ -82,8 +84,8 @@ class mail_mail_domain_plugin { $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $page_form->oldDataRecord['domain'], "%@" . $page_form->oldDataRecord['domain']); if(is_array($forwardings)) { foreach($forwardings as $rec) { - $destination = str_replace($page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $rec['destination']); - $source = str_replace($page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $rec['source']); + $destination = str_replace($page_form->oldDataRecord['domain'], $domain, $rec['destination']); + $source = str_replace($page_form->oldDataRecord['domain'], $domain, $rec['source']); $app->db->datalogUpdate('mail_forwarding', array("source" => $source, "destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'forwarding_id', $rec['forwarding_id']); } } @@ -100,20 +102,30 @@ class mail_mail_domain_plugin { $mail_gets = $app->db->queryAllRecords("SELECT mailget_id, destination FROM mail_get WHERE destination LIKE ?", "%@" . $page_form->oldDataRecord['domain']); if(is_array($mail_gets)) { foreach($mail_gets as $rec) { - $destination = str_replace($page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $rec['destination']); + $destination = str_replace($page_form->oldDataRecord['domain'], $domain, $rec['destination']); $app->db->datalogUpdate('mail_get', array("destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailget_id', $rec['mailget_id']); } } - if ($page_form->oldDataRecord["domain"] != $page_form->dataRecord['domain']) { + if ($page_form->oldDataRecord["domain"] != $domain) { //* Delete the old spamfilter record $tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", "@" . $page_form->oldDataRecord["domain"]); $app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]); unset($tmp); } - $app->db->query("UPDATE spamfilter_users SET email=REPLACE(email, ?, ?), sys_userid = ?, sys_groupid = ? WHERE email LIKE ?", $page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $client_user_id, $sys_groupid, "%@" . $page_form->oldDataRecord['domain']); + $app->db->query("UPDATE spamfilter_users SET email=REPLACE(email, ?, ?), sys_userid = ?, sys_groupid = ? WHERE email LIKE ?", $page_form->oldDataRecord['domain'], $domain, $client_user_id, $sys_groupid, "%@" . $page_form->oldDataRecord['domain']); } // end if domain name changed + + //* Force-update the aliases (required for spamfilter changes) + $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); + + if(is_array($forwardings)) { + foreach($forwardings as $rec) { + $app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true); + } + } + } } diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php index 5afd1c004494fc96062d253d3aa8f8779e6a235b..26c0b02b83dcc646495a0056a79b20f71a72cc53 100644 --- a/interface/lib/plugins/mail_user_filter_plugin.inc.php +++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php @@ -55,9 +55,9 @@ class mail_user_filter_plugin { /* - function to create the mail filter rule and insert it into the custom rules - field when a new mail filter is added or modified. - */ + * Render the mail filter rule in the desired format and insert it into the custom rules + * field when a new mail filter is added or modified. + */ function mail_user_filter_edit($event_name, $page_form) { global $app, $conf; @@ -91,6 +91,9 @@ class mail_user_filter_plugin { } + /* + * Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted + */ function mail_user_filter_del($event_name, $page_form) { global $app, $conf; diff --git a/interface/lib/plugins/system_config_dns_ca_plugin.inc.php b/interface/lib/plugins/system_config_dns_ca_plugin.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..c35934e5bfa542b9d5540802100eec148306f74c --- /dev/null +++ b/interface/lib/plugins/system_config_dns_ca_plugin.inc.php @@ -0,0 +1,103 @@ +plugin->registerEvent('dns:dns_caa:on_after_update', 'system_config_dns_ca_plugin', 'caa_update'); + $app->plugin->registerEvent('dns:dns_caa:on_after_insert', 'system_config_dns_ca_plugin', 'caa_update'); + + $app->plugin->registerEvent('sites:web_vhost_domain:on_after_insert', 'system_config_dns_ca_plugin', 'web_vhost_domain_edit'); + $app->plugin->registerEvent('sites:web_vhost_domain:on_after_update', 'system_config_dns_ca_plugin', 'web_vhost_domain_edit'); + } + + function caa_update($event_name, $page_form) { + global $app; + + if(trim($page_form->dataRecord['additional'] != '')) { + $rec = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE id = ?", $page_form->id); + unset($rec['id']); + $zone = $app->db->queryOneRecord("SELECT origin FROM dns_soa WHERE id = ?", $rec['zone']); + $host=str_replace($zone['origin'], '', $page_form->dataRecord['name']); + $host=rtrim($host,'.'); + $page_form->dataRecord['additional']=str_replace($host, '', $page_form->dataRecord['additional']); + $additional=explode(',', $page_form->dataRecord['additional']); + foreach($additional as $new) { + if($new != '') { + $insert_data = $rec; + $insert_data['name'] = $new.'.'.$zone['origin']; + $app->db->datalogInsert('dns_rr', $insert_data, 'id'); + } + } + } + } + + function web_vhost_domain_edit($event_name, $page_form) { + global $app; + + if($page_form->dataRecord['ssl_letsencrypt'] == 'y') { + $domain = $page_form->dataRecord['domain']; + $subdomain = $page_form->dataRecord['subdomain']; + $temp=$app->db->queryAllRecords("SELECT * FROM dns_rr WHERE type = 'CAA' AND (name = ? OR name = ?) AND data like ?", $domain.'.', $subdomain.'.'.$domain.'.', '%letsencrypt%'); + if(count($temp) == 0) { + $caa = $app->db->queryOneRecord("SELECT * FROM dns_ssl_ca WHERE ca_issue = 'letsencrypt.org' AND active = 'Y'"); + $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE origin = ?", $domain.'.'); + if(is_array($caa) && is_array($soa)) { + $records = array(); + $records[] = $domain.'.';; + if($subdomain != '' && $subdomain != 'www') $records[] = $subdomain.'.'.$domain; + foreach($records as $record) { + $new_rr = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE name = ?", $soa['origin']); + unset($new_rr['id']); + $new_rr['type'] = 'CAA'; + $new_rr['name'] = $record; + $new_rr['data'] = "0 issue \"$caa[ca_issue]\""; + $new_rr['ttl'] = $soa['ttl']; + $new_rr['active'] = 'Y'; + $new_rr['stamp'] = date('Y-m-d H:i:s'); + $new_rr['serial'] = $app->validate_dns->increase_serial($new_rr['serial']); + $app->db->datalogInsert('dns_rr', $new_rr, 'id', $new_rr['zone']); + $zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ?", $new_rr['zone']); + $new_serial = $app->validate_dns->increase_serial($zone['serial']); + $app->db->datalogUpdate('dns_soa', array("serial" => $new_serial), 'id', $zone['id']); + } + } + } + } + } + +} // End class + +?> diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php index 544cb8b85537df42206ea5c861f20d0050bfb69b..d451a5079594eb41fe5ba10bbdee36b90324e387 100644 --- a/interface/web/admin/form/directive_snippets.tform.php +++ b/interface/web/admin/form/directive_snippets.tform.php @@ -123,7 +123,7 @@ $form["tabs"]['directive_snippets'] = array ( 'separator' => ',', ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/firewall.tform.php b/interface/web/admin/form/firewall.tform.php index ce7d2dbd09f1c891a78a17471e18b27f9fc906e2..e136b345be40b4cc6e48d0c16d1f98d1ef48a104 100644 --- a/interface/web/admin/form/firewall.tform.php +++ b/interface/web/admin/form/firewall.tform.php @@ -79,7 +79,7 @@ $form["tabs"]['firewall'] = array ( 'regex' => '/^[\s0-9\,\:]{0,255}$/', 'errmsg'=> 'tcp_ports_error_regex'), ), - 'default' => '20,21,22,25,53,80,110,143,443,587,993,995,3306,8080,8081,10000', + 'default' => '20,21,22,25,53,80,110,143,443,465,587,993,995,3306,8080,8081,10000', 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -103,7 +103,7 @@ $form["tabs"]['firewall'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php index 895d9418a9489e95466272cb5d6e44ed17cb0b67..3b920ccb4af36588f6a7460536fcc401bd73d56c 100644 --- a/interface/web/admin/form/remote_user.tform.php +++ b/interface/web/admin/form/remote_user.tform.php @@ -151,7 +151,7 @@ $form["tabs"]['remote_user'] = array ( ) //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/server.tform.php b/interface/web/admin/form/server.tform.php index 95dca6c33b5cb552b29692b3c0f27f2e76924024..f205758a8dfc30017fd406c7362db06a0c958e56 100644 --- a/interface/web/admin/form/server.tform.php +++ b/interface/web/admin/form/server.tform.php @@ -135,7 +135,7 @@ $form["tabs"]['services'] = array ( 'value' => array(0 => 'No', 1 => 'Yes') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -160,7 +160,7 @@ $form["tabs"]['config'] = array ( 'maxlength' => '' ), ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ) ); diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index a127430494aa9add0b29e7959e6e1414d69af929..2663cdd0e0ee38dab40e37ede0a4b5ff96c86869 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -413,7 +413,7 @@ $form["tabs"]['server'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -466,6 +466,29 @@ $form["tabs"]['mail'] = array( 'width' => '40', 'maxlength' => '255' ), + 'content_filter' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'rspamd', + 'value' => array('amavisd' => 'Amavisd', 'rspamd' => 'Rspamd') + ), + 'rspamd_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), + ), + 'rspamd_available' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'dkim_path' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -676,7 +699,7 @@ $form["tabs"]['mail'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -704,7 +727,7 @@ $form["tabs"]['getmail'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1211,6 +1234,12 @@ $form["tabs"]['web'] = array( 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), 'searchable' => 2 ), + 'php_fpm_incron_reload' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), 'nginx_cgi_socket' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -1370,8 +1399,16 @@ $form["tabs"]['web'] = array( 1 => 'y' ) ), + 'php_fpm_reload_mode' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'reload', + 'value' => array('reload' => 'Reload', 'restart' => 'Restart'), + 'width' => '40', + 'maxlength' => '255' + ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1461,7 +1498,7 @@ $form["tabs"]['dns'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1578,7 +1615,7 @@ $form["tabs"]['fastcgi'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1741,7 +1778,7 @@ $form["tabs"]['jailkit'] = array( 'maxlength' => '1000' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1804,7 +1841,7 @@ $form["tabs"]['ufw_firewall'] = array ( 'value' => array('low' => 'low', 'medium' => 'medium', 'high' => 'high') ) ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ) ); @@ -1833,7 +1870,7 @@ $form["tabs"]['vlogger'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1891,7 +1928,7 @@ $form["tabs"]['cron'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1935,8 +1972,14 @@ $form["tabs"]['rescue'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); -?> + +/*$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); +if(!isset($mail_config['rspamd_available']) || $mail_config['rspamd_available'] != 'y') { + $form['tabs']['mail']['fields']['content_filter']['default'] = 'amavisd'; + unset($form['tabs']['mail']['fields']['content_filter']['value']['rspamd']); + unset($form['tabs']['mail']['fields']['rspamd_password']); +}*/ \ No newline at end of file diff --git a/interface/web/admin/form/server_php.tform.php b/interface/web/admin/form/server_php.tform.php index 67e54ec6b5dacd7d085100e11dcd60d400b347be..6d443e8d50a939f5807e1ec2c9d08de382e9ba04 100644 --- a/interface/web/admin/form/server_php.tform.php +++ b/interface/web/admin/form/server_php.tform.php @@ -174,7 +174,7 @@ $form["tabs"]['php_fastcgi'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -230,7 +230,7 @@ $form["tabs"]['php_fpm'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index fb2f1f72643d1d27045e8824020841cdbfffb1d0..84c586da89b2fa290a240fc47532632a47928958 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -206,7 +206,7 @@ $form["tabs"]['sites'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), - 'default_remote_dbserver' => array ( + 'default_remote_dbserver' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', @@ -218,9 +218,19 @@ $form["tabs"]['sites'] = array ( 'value' => '', 'width' => '60', 'searchable' => 2 + ), + 'web_php_options' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOXARRAY', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'web_php_options_notempty'), + ), + 'default' => '', + 'separator' => ',', + 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -406,7 +416,7 @@ $form["tabs"]['mail'] = array ( 'name' => 'default_mailserver' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -442,7 +452,7 @@ $form["tabs"]['dns'] = array ( 'name' => 'default_slave_dnsserver' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -472,7 +482,7 @@ $form["tabs"]['domains'] = array ( 'value' => '' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -744,10 +754,26 @@ $form["tabs"]['misc'] = array ( 'value' => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5') ) //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); +$form['tabs']['dns_ca'] = array ( + 'title' => 'DNS CAs', + 'width' => 100, + 'template' => 'templates/system_config_dns_ca.htm', + 'fields' => array (), + 'plugins' => array ( + 'dns_ca' => array ( + 'class' => 'plugin_system_config_dns_ca', + 'options' => array() + ), + 'dns_ca_list' => array ( + 'class' => 'plugin_system_config_dns_ca_list', + 'options' => array() + ) + ) +); ?> \ No newline at end of file diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php index 6a23559f1273b5113bb0165a3862905b5ab3b582..be77122b103a1cae9f0f9bc9f6fa0bf86a514598 100644 --- a/interface/web/admin/form/users.tform.php +++ b/interface/web/admin/form/users.tform.php @@ -199,6 +199,12 @@ $form['tabs']['users'] = array ( 'startmodule' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'startmodule_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'startmodule_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => '', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index b7e75ffd44f11d21e65905ae2cb309e83b9ba328..bccdcc42c05cd94a624c6e6e04ad1aff5f93811a 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ar_server_php_list.lng b/interface/web/admin/lib/lang/ar_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/ar_server_php_list.lng +++ b/interface/web/admin/lib/lang/ar_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 45fb0fa9e9a26d796f1b91a8697e84bbd4af64e7..0a830014d8459104d5d61eccab6720f609b1bdd6 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 37f654d5a6d3ce57b7f05fb63166ce003225842e..39531461c3cfcaceff6bc6f57570584e434bfb0e 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_php_list.lng b/interface/web/admin/lib/lang/bg_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/bg_server_php_list.lng +++ b/interface/web/admin/lib/lang/bg_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 2f4eb86d3c33b4dd414a8b76e97593903f11f949..130cb596aabd7c6bf2b268293d0fbb16cd12f335 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/br.lng b/interface/web/admin/lib/lang/br.lng index c4df3fe58bcaf2acb7aa86fb208e245366be4383..b558a1510ea75b28c592710886d259ca93be5366 100644 --- a/interface/web/admin/lib/lang/br.lng +++ b/interface/web/admin/lib/lang/br.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/admin/lib/lang/br_directive_snippets.lng b/interface/web/admin/lib/lang/br_directive_snippets.lng index ae56153844be644104305f26eff795c5ddeb05fb..43c46c69b972189158871e363aed78e153f57121 100644 --- a/interface/web/admin/lib/lang/br_directive_snippets.lng +++ b/interface/web/admin/lib/lang/br_directive_snippets.lng @@ -2,11 +2,11 @@ $wb['Directive Snippets'] = 'Diretiva de trechos de código'; $wb['name_txt'] = 'Nome da diretiva'; $wb['type_txt'] = 'Tipo'; -$wb['snippet_txt'] = 'Diretiva'; +$wb['snippet_txt'] = 'Trecho de código'; $wb['active_txt'] = 'Ativo'; -$wb['directive_snippets_name_empty'] = 'Por favor, insira um nome para a diretiva'; -$wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva de trechos de código com este nome.'; +$wb['directive_snippets_name_empty'] = 'Por favor, insira um nome para a diretiva.'; +$wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva com este nome.'; $wb['variables_txt'] = 'Variáveis'; -$wb['customer_viewable_txt'] = 'Visualizada pelo cliente'; -$wb['required_php_snippets_txt'] = 'Diretiva obrigatória para PHP'; +$wb['customer_viewable_txt'] = 'Visualização personalizada'; +$wb['required_php_snippets_txt'] = 'Trecho de código exige php'; ?> diff --git a/interface/web/admin/lib/lang/br_directive_snippets_list.lng b/interface/web/admin/lib/lang/br_directive_snippets_list.lng index 8e08580ad2c1a431ad9e14fe8dc331c81452683c..70af844dd6fe7bba21c201e79ce7c9427e0a95d6 100644 --- a/interface/web/admin/lib/lang/br_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/br_directive_snippets_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/admin/lib/lang/br_firewall.lng b/interface/web/admin/lib/lang/br_firewall.lng index 0bd3cdc74f50647b023bf2f0cc5bda9eb91911e4..da0936b007ed9c79766690839374599ecd208e37 100644 --- a/interface/web/admin/lib/lang/br_firewall.lng +++ b/interface/web/admin/lib/lang/br_firewall.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/admin/lib/lang/br_firewall_list.lng b/interface/web/admin/lib/lang/br_firewall_list.lng index 8ff52ee2410f4e0732f2e55ab8c4f27d6deb8f4f..94ef3aab7d61e48ec2d428211bb97357bb00072a 100644 --- a/interface/web/admin/lib/lang/br_firewall_list.lng +++ b/interface/web/admin/lib/lang/br_firewall_list.lng @@ -4,5 +4,5 @@ $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['tcp_port_txt'] = 'Portas tcp abertas'; $wb['udp_port_txt'] = 'Portas udp abertas'; -$wb['add_new_record_txt'] = 'Adicionar regra de firewall'; +$wb['add_new_record_txt'] = 'Adicionar nova regra'; ?> diff --git a/interface/web/admin/lib/lang/br_groups.lng b/interface/web/admin/lib/lang/br_groups.lng index 735bd864a9243321619bc99026faa376424f5b3d..22a1a5c63dda5fd91fdd9435c0c4ab51b447678f 100644 --- a/interface/web/admin/lib/lang/br_groups.lng +++ b/interface/web/admin/lib/lang/br_groups.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/admin/lib/lang/br_groups_list.lng b/interface/web/admin/lib/lang/br_groups_list.lng index f31a85d12618761f6358e1b0cafc1d8f2a5c8a54..74a414f52d54be8206805124d1ebbae0cf54537f 100644 --- a/interface/web/admin/lib/lang/br_groups_list.lng +++ b/interface/web/admin/lib/lang/br_groups_list.lng @@ -1,7 +1,7 @@ AVISO: Não modifique ou edite qualquer configuração de usuário aqui. Use o módulo de clientes ou revendas. Modificar ou alterar usuários e grupos aqui pode ocasionar perda de dados!'; +$wb['add_new_record_txt'] = 'Adicionar novo grupo'; +$wb['warning_txt'] = 'ALERTA: Não editar ou alterar qualquer configuração de usuário aqui. Use o módulo de clientes e revendas para isso. Editar ou alterar usuários ou grupos aqui pode causar perda de dados!'; ?> diff --git a/interface/web/admin/lib/lang/br_iptables.lng b/interface/web/admin/lib/lang/br_iptables.lng index e44fcf1e68b74fc2942adc9349ec3714af11ccd4..f899d53178891b5e0c96685bbd6c1890b247accf 100644 --- a/interface/web/admin/lib/lang/br_iptables.lng +++ b/interface/web/admin/lib/lang/br_iptables.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/admin/lib/lang/br_iptables_list.lng b/interface/web/admin/lib/lang/br_iptables_list.lng index 2cd7fdfb53b4f6785098c0b4979b22ff978927d5..3326ac060aa85f4cb29484fe0337bfcefa872aa3 100644 --- a/interface/web/admin/lib/lang/br_iptables_list.lng +++ b/interface/web/admin/lib/lang/br_iptables_list.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/admin/lib/lang/br_language_add.lng b/interface/web/admin/lib/lang/br_language_add.lng index eaa080819915c12a88633cdd287bc273a138b194..f63441c55dea31b4a503f78a564a5ceb514a9cfe 100644 --- a/interface/web/admin/lib/lang/br_language_add.lng +++ b/interface/web/admin/lib/lang/br_language_add.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/admin/lib/lang/br_language_complete.lng b/interface/web/admin/lib/lang/br_language_complete.lng index 84d5e3393cc5a23142c2f3cd4a00c11e9464cd7e..cb0ea2eb241110c83d7d0630f5c5166c137d3db1 100644 --- a/interface/web/admin/lib/lang/br_language_complete.lng +++ b/interface/web/admin/lib/lang/br_language_complete.lng @@ -1,5 +1,5 @@ Isto permite completar qualquer falha de tradução, com o arquivo principal original em inglês.'; $wb['language_select_txt'] = 'Selecionar idioma'; $wb['btn_save_txt'] = 'Mesclar arquivos agora'; diff --git a/interface/web/admin/lib/lang/br_language_edit.lng b/interface/web/admin/lib/lang/br_language_edit.lng index 887080b6d58f0d0d9b140df5cdb950fed1f63ee4..ed0e6bb84d57124d82ebd3cee9a2a62e1acb4762 100644 --- a/interface/web/admin/lib/lang/br_language_edit.lng +++ b/interface/web/admin/lib/lang/br_language_edit.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/admin/lib/lang/br_language_import.lng b/interface/web/admin/lib/lang/br_language_import.lng index e99756b376af951c2dafc08f22b9f078e8047d2b..99db3398125213340740f71d3a97dd7020c6bd8e 100644 --- a/interface/web/admin/lib/lang/br_language_import.lng +++ b/interface/web/admin/lib/lang/br_language_import.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/admin/lib/lang/br_language_list.lng b/interface/web/admin/lib/lang/br_language_list.lng index cd00833419a3aef6a99b87f0c0d4e668bb2576ca..37941c4472d18eda4e1ce419a55e81e6d63ae0e5 100644 --- a/interface/web/admin/lib/lang/br_language_list.lng +++ b/interface/web/admin/lib/lang/br_language_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/admin/lib/lang/br_package_install.lng b/interface/web/admin/lib/lang/br_package_install.lng index 5b54c3080a049d334f22d959cbb248462779963c..bbe518549aed1e40a5cf8395cbf2110b21508a9e 100644 --- a/interface/web/admin/lib/lang/br_package_install.lng +++ b/interface/web/admin/lib/lang/br_package_install.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/admin/lib/lang/br_remote_action.lng b/interface/web/admin/lib/lang/br_remote_action.lng index e06a6382b95629d8e08b4468d05bd441b86b41d5..80d3a05c53a19e767bd43ed2ea1d9cd4b3651173 100644 --- a/interface/web/admin/lib/lang/br_remote_action.lng +++ b/interface/web/admin/lib/lang/br_remote_action.lng @@ -1,12 +1,12 @@
UTILIZE POR SUA CONTA E RISCO!'; -$wb['do_ispcupdate_caption'] = 'Atualização do ISPConfig 3 no servidor'; -$wb['do_ispcupdate_desc'] = 'Esta ação fará uma atualização do ISPConfig3 no servidor selecionado.

UTILIZE POR SUA CONTA E RISCO!'; -$wb['action_scheduled'] = 'Esta ação está agendada para execução'; +$wb['do_osupdate_caption'] = 'Atualizar sistema operacional no servidor remoto'; +$wb['do_osupdate_desc'] = 'Esta ação fará o comando \'aptitude -y upgrade\' no servidor selecionado.

UTILIZE POR SUA CONTA E RISCO!'; +$wb['do_ispcupdate_caption'] = 'Atualizar ISPConfig 3 - Atualizar o servidor remoto'; +$wb['do_ispcupdate_desc'] = 'Esta ação atualizará o ISPConfig3 no servidor selecionado.

UTILIZE POR SUA CONTA E RISCO!'; +$wb['action_scheduled'] = 'A ação foi agendada.'; $wb['select_all_server'] = 'Todos os servidores'; $wb['ispconfig_update_title'] = 'Instruções de atualização do ISPConfig'; -$wb['ispconfig_update_text'] = 'Acesse como root no shell do seu servidor e execute os seguintes comandos

ispconfig_update.sh

para iniciar a atualização do ISPConfig.

Clique aqui para instruções detalhadas sobre atualização'; +$wb['ispconfig_update_text'] = 'Acesse com o usuário root no shell do servidor e execute o comando

ispconfig_update.sh

para iniciar a atualização do ISPConfig.

Clique aqui para instruções detalhadas'; ?> diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index 95657a283d4c41f737d5915bec2529742bd6a787..fcaa6732c86aa2ce527b9ac796bd69c2f7b99d0a 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -1,50 +1,68 @@ um)'; -$wb['remote_user_error_ips'] = 'Ao menos um endereço IP ou nome do servidor é inválido.'; -$wb['Mail mailing list functions'] = 'Mail mailinglist functions'; +$wb['DNS alias functions'] = 'Funções de ALIAS dns'; +$wb['DNS cname functions'] = 'Funções de CNAME dns'; +$wb['DNS hinfo functions'] = 'Funções de HINFO dns'; +$wb['DNS mx functions'] = 'Funções de MX dns'; +$wb['DNS ns functions'] = 'Funções de NS dns'; +$wb['DNS ptr functions'] = 'Funções de PTR dns'; +$wb['DNS rp functions'] = 'Funções de RP dns'; +$wb['DNS srv functions'] = 'Funções de SVR dns'; +$wb['DNS txt functions'] = 'Funções de TXT dns'; +$wb['DNS ds functions'] = 'Funções de DS dns'; +$wb['DNS loc functions'] = 'Funções de LOC dns'; +$wb['DNS tlsa functions'] = 'Funções de TLSA dns'; +$wb['OpenVZ VM functions'] = 'Funções do openvz'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['remote_access_txt'] = 'Acesso Remoto'; +$wb['remote_ips_txt'] = 'Endereços IPs ou nome(s) do(s) host(s) para acesso remoto (separado por vírgula e deixar em branco para qualquer um)'; +$wb['remote_user_error_ips'] = 'Ao menos um endereço IP ou nome do host informado é inválido.'; ?> diff --git a/interface/web/admin/lib/lang/br_remote_user_list.lng b/interface/web/admin/lib/lang/br_remote_user_list.lng index f95d782ce6c4e83f98bfe17c95beb71abcdd4e41..0f0381a6f4a87b81abc7b6672669a835c5ea79d7 100644 --- a/interface/web/admin/lib/lang/br_remote_user_list.lng +++ b/interface/web/admin/lib/lang/br_remote_user_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/admin/lib/lang/br_server.lng b/interface/web/admin/lib/lang/br_server.lng index 930b990f42f8cb1e7b98561a27708a8f3b47bc5e..a896d0b49ae377aad39c6737e51ebca246aaf1ff 100644 --- a/interface/web/admin/lib/lang/br_server.lng +++ b/interface/web/admin/lib/lang/br_server.lng @@ -2,15 +2,15 @@ $wb['config_txt'] = 'Configuração'; $wb['server_name_txt'] = 'Nome do servidor'; $wb['mail_server_txt'] = 'Servidor de e-mails'; -$wb['web_server_txt'] = 'Servidor de páginas'; +$wb['web_server_txt'] = 'Servidor web'; $wb['dns_server_txt'] = 'Servidor dns'; -$wb['file_server_txt'] = 'Servidor de arquivo'; +$wb['file_server_txt'] = 'Servidor ftp'; $wb['db_server_txt'] = 'Servidor de banco de dados'; -$wb['vserver_server_txt'] = 'Servidor virtual'; -$wb['active_txt'] = 'Ativo'; -$wb['mirror_server_id_txt'] = 'É um espelho de servidor?'; -$wb['- None -'] = '- Nenhum -'; +$wb['vserver_server_txt'] = 'Servidor de virtualização'; $wb['proxy_server_txt'] = 'Servidor proxy'; -$wb['firewall_server_txt'] = 'Servidor de firewall'; -$wb['xmpp_server_txt'] = 'Servidor XMPP'; +$wb['firewall_server_txt'] = 'Servidor firewall'; +$wb['active_txt'] = 'Ativo'; +$wb['mirror_server_id_txt'] = 'É um espelho de servidor'; +$wb['- None -'] = '-Nenhum-'; +$wb['xmpp_server_txt'] = 'Servidor xmpp'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index b016ad04c30a1f93750e29b8b0390b9d0c3cc1c5..f57a2310f23c0ceddc43495d9750377163affa7d 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -1,296 +1,303 @@ Informação: Se você deseja desligar o MySQL deverá selecionar \'Desabilitar monitoramento do MySQL\' e aguardar em torno de 2 a 3 minutos...
se não aguardar em torno de 2 a 3 minutos, o serviço tentará reiniciar o MySQL!'; +$wb['fastcgi_alias_error_empty'] = 'Alias do FastCGI está em branco.'; +$wb['fastcgi_phpini_path_error_empty'] = 'O caminho do php.ini do FastCGI está em branco.'; +$wb['fastcgi_children_error_empty'] = 'Os processos filhos do FastCGI está em branco.'; +$wb['fastcgi_max_requests_error_empty'] = 'O limite de requisições FastCGI está em branco.'; +$wb['fastcgi_bin_error_empty'] = 'O binário do FastCGI está em branco.'; +$wb['jailkit_chroot_home_error_empty'] = 'O home em chroot do jailkit está em branco.'; +$wb['jailkit_chroot_app_sections_error_empty'] = 'Seções de aplicações no jailkit está em branco.'; +$wb['jailkit_chroot_app_programs_error_empty'] = 'Aplicações no jailkit está em branco.'; +$wb['jailkit_chroot_cron_programs_error_empty'] = 'Tarefas de aplicações no jailkit está em branco.'; +$wb['vlogger_config_dir_error_empty'] = 'Diretório de configuração está em branco.'; +$wb['cron_init_script_error_empty'] = 'Script de inicialização do cron está em branco.'; +$wb['crontab_dir_error_empty'] = 'Caminho para tarefas individuais no cron está em branco.'; +$wb['cron_wget_error_empty'] = 'Caminho do binário wget está em branco.'; +$wb['php_fpm_init_script_txt'] = 'Script de inicialização do php-fpm'; +$wb['php_fpm_init_script_error_empty'] = 'Script de inicialização do php-fpm está em branco.'; +$wb['php_fpm_ini_path_txt'] = 'Caminho do php.ini do php-fpm'; +$wb['php_fpm_ini_path_error_empty'] = 'Caminho do php.ini do php-fpm está em branco.'; +$wb['php_fpm_pool_dir_txt'] = 'Diretório de faixas do php-fpm'; +$wb['php_fpm_pool_dir_error_empty'] = 'Diretório de faixas do php-fpm está em branco.'; +$wb['php_fpm_start_port_txt'] = 'Porta do php-fpm'; +$wb['php_fpm_start_port_error_empty'] = 'Porta do php-fpm está em branco.'; +$wb['php_fpm_socket_dir_txt'] = 'Diretório do socket php-fpm'; +$wb['php_fpm_socket_dir_error_empty'] = 'O diretório do socket php-fpm está em branco.'; +$wb['try_rescue_txt'] = 'Habilitar monitoramento de reiniciar em caso de falha'; +$wb['do_not_try_rescue_httpd_txt'] = 'Desabilitar monitoramento do httpd'; +$wb['do_not_try_rescue_mongodb_txt'] = 'Desabilitar monitoramento do mongodb'; +$wb['do_not_try_rescue_mysql_txt'] = 'Desabilitar monitoramento do mysql'; +$wb['do_not_try_rescue_mail_txt'] = 'Desabilitar monitoramento de e-mail'; +$wb['rescue_description_txt'] = 'Informação: Se o serviço mysql for desligado e estiver selecionado "Desabilitar monitoramento do mysql" aguarde entre 2 e 3 minutos sem abandonar a aba.
Se não aguardar o sistema de recuperação de falhas tentará reiniciar o mysql!'; $wb['enable_sni_txt'] = 'Habilitar SNI'; -$wb['do_not_try_rescue_httpd_txt'] = 'Desabilitar monitoramento do HTTPD'; -$wb['set_folder_permissions_on_update_txt'] = 'Configurar permissões de pasta na atualização'; -$wb['add_web_users_to_sshusers_group_txt'] = 'Adicionar usuários de site (web) para grupo -sshusers-'; -$wb['connect_userid_to_webid_txt'] = 'Mapear userID Linux para webID'; -$wb['connect_userid_to_webid_start_txt'] = 'Iniciar ID para userID/webID se conectar'; -$wb['website_autoalias_txt'] = 'Auto apelido (alias) para sites'; -$wb['website_autoalias_note_txt'] = 'Área reservada:'; -$wb['backup_mode_txt'] = 'Modo do backup'; -$wb['backup_mode_userzip'] = 'Arquivos de backup com propriedade do usuário web e compactados como zip'; -$wb['backup_mode_rootgz'] = 'Todos os arquivos no diretório web com proprietário root'; -$wb['realtime_blackhole_list_txt'] = 'RBL em tempo real'; -$wb['realtime_blackhole_list_note_txt'] = '(Separar RBL\'s por vírgulas)'; +$wb['set_folder_permissions_on_update_txt'] = 'Configurar permissões de pasta quando atualizar'; +$wb['add_web_users_to_sshusers_group_txt'] = 'Adicionar novos usuários web para o grupo ssh'; +$wb['connect_userid_to_webid_txt'] = 'Conectar o UID do usuário no sistema para webID'; +$wb['connect_userid_to_webid_start_txt'] = 'Conexão do ID inicial do usuário com o webID'; +$wb['realtime_blackhole_list_txt'] = 'Lista RBL em tempo real'; +$wb['realtime_blackhole_list_note_txt'] = '(separar as RBLs com vírgulas)'; $wb['ssl_settings_txt'] = 'Configurações SSL'; $wb['permissions_txt'] = 'Permissões'; -$wb['php_settings_txt'] = 'Configurações PHP'; -$wb['apps_vhost_settings_txt'] = 'Configurações apps-vhost'; -$wb['awstats_settings_txt'] = 'Configurações awstats'; +$wb['php_settings_txt'] = 'Configurações php'; +$wb['apps_vhost_settings_txt'] = 'Configurações de apps vhost'; +$wb['awstats_settings_txt'] = 'Configurações do awstats'; $wb['firewall_txt'] = 'Firewall'; -$wb['mailbox_quota_stats_txt'] = 'Estatísticas de cota das contas de e-mail'; -$wb['enable_ip_wildcard_txt'] = 'Habilitar curingas (*) para IP'; +$wb['mailbox_quota_stats_txt'] = 'Estatísticas das cotas das contas de e-mail'; +$wb['enable_ip_wildcard_txt'] = 'Habilitar curingas de IP (*)'; $wb['web_folder_protection_txt'] = 'Tornar pastas web imutáveis (atributos estendidos)'; -$wb['overtraffic_notify_admin_txt'] = 'Enviar notificação de cota de tráfego excedida para o administrador'; -$wb['overtraffic_notify_client_txt'] = 'Enviar notificação de cota de tráfego excedida para o cliente'; -$wb['rbl_error_regex'] = 'Por favor, insira um nome de servidor válido para RBL.'; -$wb['overquota_notify_admin_txt'] = 'Enviar alertas de cota para o administrador'; -$wb['overquota_notify_client_txt'] = 'Enviar alertas de cota para o cliente'; -$wb['overquota_notify_onok_txt'] = 'Enviar mensagem de cota OK para o cliente'; -$wb['overquota_notify_freq_txt'] = 'Enviar alertas de cota a cada N dias'; -$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensagem apenas uma vez, não repetir'; -$wb['admin_notify_events_txt'] = 'Enviar e-mail para o admin quando iniciando com o seguinte nível'; -$wb['no_notifications_txt'] = 'Sem Notificações'; -$wb['monit_url_txt'] = 'URL do Monit'; -$wb['monit_user_txt'] = 'Usuário do Monit'; -$wb['monit_password_txt'] = 'Senha do Monit'; -$wb['monit_url_error_regex'] = 'URL do Monit inválida.'; +$wb['overtraffic_notify_admin_txt'] = 'Enviar notificação de tráfego excedido para o administrador'; +$wb['overtraffic_notify_client_txt'] = 'Enviar notificação de tráfego excedido para o cliente'; +$wb['rbl_error_regex'] = 'Por favor, nomes de host válidos para RBLs.'; +$wb['overquota_notify_admin_txt'] = 'Enviar alerta da cota para o administrador'; +$wb['overquota_notify_client_txt'] = 'Enviar alerta da cota para o cliente'; +$wb['overquota_notify_onok_txt'] = 'Enviar mensagem da cota para o cliente'; +$wb['overquota_notify_freq_txt'] = 'Enviar alerta da cota a cada X dias'; +$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensagem apenas uma vez, sem repetir'; +$wb['admin_notify_events_txt'] = 'Enviar e-mail para o administrador iniciando com o seguinte nível'; +$wb['no_notifications_txt'] = 'Sem notificações'; +$wb['monit_url_txt'] = 'URL de monitoramento do monit'; +$wb['monit_user_txt'] = 'Usuário do monit'; +$wb['monit_password_txt'] = 'Senha do monit'; +$wb['monit_url_error_regex'] = 'URL do monit é inválida'; $wb['monit_url_note_txt'] = 'Área reservada:'; -$wb['munin_url_txt'] = 'URL do Munin'; -$wb['munin_user_txt'] = 'Usuário do Munin'; -$wb['munin_password_txt'] = 'Senha do Munin'; -$wb['munin_url_error_regex'] = 'URL do Munin inválida.'; +$wb['munin_url_txt'] = 'URL do munin'; +$wb['munin_user_txt'] = 'Usuário do munin'; +$wb['munin_password_txt'] = 'Senda do munin'; +$wb['munin_url_error_regex'] = 'URL do munin e inválida'; $wb['munin_url_note_txt'] = 'Área reservada:'; -$wb['dkim_path_txt'] = 'Caminho do DKIM'; -$wb['backup_delete_txt'] = 'Remover backups do domínio/site'; $wb['v6_prefix_txt'] = 'Prefixo IPv6'; -$wb['vhost_rewrite_v6_txt'] = 'Reescrever prefixo IPv6 no espelho'; -$wb['v6_prefix_length'] = 'Prefixo longo definido de acordo com IPv6'; -$wb['backup_dir_is_mount_txt'] = 'Diretório de backup está montado?'; -$wb['monitor_system_updates_txt'] = 'Verificar por atualizações Linux'; -$wb['hostname_error_regex'] = 'Nome do servidor é inválido.'; -$wb['invalid_apache_user_txt'] = 'Usuário do Apache é inválido.'; -$wb['invalid_apache_group_txt'] = 'Grupo do Apache é inválido.'; +$wb['vhost_rewrite_v6_txt'] = 'Reescrever IPv6 no espelho'; +$wb['v6_prefix_length'] = 'O prefixo é muito longo de acordo com as definições IPv6.'; +$wb['backup_dir_is_mount_txt'] = 'O diretório de backup está montando?'; +$wb['backup_dir_mount_cmd_txt'] = 'Comando mount, se o diretório não está montado'; +$wb['backup_delete_txt'] = 'Remover backups de domínios/site'; +$wb['overquota_db_notify_admin_txt'] = 'Enviar alerta da cota do banco de dados para o administrador'; +$wb['overquota_db_notify_client_txt'] = 'Enviar alerta da cota do banco de dados para o cliente'; +$wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema'; +$wb['php_handler_txt'] = 'Manipulador padrão do php'; +$wb['php_fpm_incron_reload_txt'] = 'Instale o arquivo de disparo do incron para recarregar o php-fpm.'; +$wb['disabled_txt'] = 'Desabilitado'; +$wb['dkim_strength_txt'] = 'Dificuldade do DKIM'; +$wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema'; +$wb['invalid_apache_user_txt'] = 'Usuário do apache é inválido.'; +$wb['invalid_apache_group_txt'] = 'Grupo do apache é inválido.'; $wb['backup_dir_error_regex'] = 'Diretório de backup é inválido.'; -$wb['maildir_path_error_regex'] = 'Caminho do Maildir é inválido.'; -$wb['homedir_path_error_regex'] = 'Caminho do Home é inválido.'; -$wb['mailuser_name_error_regex'] = 'Nome do Mailuser é inválido.'; -$wb['mailuser_group_name_error_regex'] = 'Grupo do Mailuser é inválido.'; -$wb['mailuser_uid_error_range'] = 'A UID do Mailuser deve ser >= 2000'; -$wb['mailuser_gid_error_range'] = 'A GID do Mailuser deve ser >= 2000'; -$wb['getmail_config_dir_error_regex'] = 'Configuração do diretório do getmail inválida.'; -$wb['website_basedir_error_regex'] = 'Diretório base (basedir) para sites é inválido.'; -$wb['website_symlinks_error_regex'] = 'Links simbólicos para sites é inválido.'; -$wb['vhost_conf_dir_error_regex'] = 'Diretório de configurações para vhost é inválido.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações para vhost habilitado é inválido.'; +$wb['maildir_path_error_regex'] = 'Caminho do maildir é inválido.'; +$wb['homedir_path_error_regex'] = 'Caminho do homedir é inválido.'; +$wb['mailuser_name_error_regex'] = 'Caminho do mailuser é inválido.'; +$wb['mailuser_group_name_error_regex'] = 'Grupo do mailuser é inválido.'; +$wb['mailuser_uid_error_range'] = 'A UID do mailuser deve ser >= 2000.'; +$wb['mailuser_gid_error_range'] = 'A GID do mailuser deve ser >= 2000.'; +$wb['getmail_config_dir_error_regex'] = 'Diretório de configurações do getmail é inválido.'; +$wb['website_basedir_error_regex'] = 'Caminho do basedir para sites é inválido. Comprimento mínimo 5 caracteres.'; +$wb['website_symlinks_error_regex'] = 'Links simbólicos para site são inválidos.'; +$wb['vhost_conf_dir_error_regex'] = 'Diretório de configurações vhost é inválido.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Diretório de configuração vhost habilitado é inválido.'; $wb['nginx_vhost_conf_dir_error_regex'] = 'Diretório de configurações do nginx é inválido.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações nginx habilitado é inválido.'; -$wb['ca_path_error_regex'] = 'Caminho do CA é inválido.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações do nginx habilitado é inválido.'; +$wb['ca_path_error_regex'] = 'Caminho da CA é inválido.'; $wb['invalid_nginx_user_txt'] = 'Usuário do nginx é inválido.'; $wb['invalid_nginx_group_txt'] = 'Grupo do nginx é inválido.'; -$wb['php_ini_path_apache_error_regex'] = 'Caminho do php.ini apache é inválido.'; -$wb['php_ini_path_cgi_error_regex'] = 'Caminho do php.ini CGI é inválido.'; -$wb['php_fpm_init_script_error_regex'] = 'Caminho do script de inicialização do PHP-FPM é inválido.'; -$wb['php_fpm_ini_path_error_regex'] = 'Caminho do php.ini PHP-FPM é inválido.'; -$wb['php_fpm_pool_dir_error_regex'] = 'Diretório de faixas (pool) PHP-FPM é inválido.'; -$wb['php_fpm_socket_dir_error_regex'] = 'Diretório do sqouete PHP-FPM é inválido.'; -$wb['php_open_basedir_error_regex'] = 'Diretório base (open_basedir) PHP é inválido.'; -$wb['awstats_data_dir_empty'] = 'Diretório de dados do awstats está em branco.'; -$wb['awstats_data_dir_error_regex'] = 'Diretório de dados do do awstats é inválido.'; -$wb['awstats_pl_empty'] = 'Configuração do script awstats.pl está em branco.'; -$wb['awstats_pl_error_regex'] = 'Caminho do script awstats.pl é inválido.'; -$wb['awstats_buildstaticpages_pl_empty'] = 'Script awstats_buildstaticpages.pl está em branco.'; -$wb['awstats_buildstaticpages_pl_error_regex'] = 'Camindho do script awstats_buildstaticpages.pl é inválido.'; -$wb['invalid_bind_user_txt'] = 'Usuário bind é inválido.'; -$wb['invalid_bind_group_txt'] = 'Grupo bind é inválido.'; -$wb['bind_zonefiles_dir_error_regex'] = 'Diretório de zonas do bind é inválido.'; -$wb['named_conf_path_error_regex'] = 'Caminho do named.conf é inválido.'; -$wb['named_conf_local_path_error_regex'] = 'Caminho do named.conf.local é inválido.'; -$wb['fastcgi_starter_path_error_regex'] = 'Caminho do scritp de inicialização FASTCGI é inválido.'; -$wb['fastcgi_starter_script_error_regex'] = 'Script de inicizalização FASTCGI é inválido.'; -$wb['fastcgi_alias_error_regex'] = 'Apelido (alias) do FASTCGI é inválido.'; -$wb['fastcgi_phpini_path_error_regex'] = 'Caminho do FASTCGI é inválido.'; -$wb['fastcgi_bin_error_regex'] = 'Binário do FASTCGI é inválido.'; -$wb['jailkit_chroot_home_error_regex'] = 'Raiz do chroot jailkit inválida.'; -$wb['jailkit_chroot_app_sections_error_regex'] = 'Aplicações no jailkit chroot (sessões) são inválidas.'; -$wb['jailkit_chroot_app_programs_error_regex'] = 'Aplicações no jailkit em ambiente chroot são inválidas.'; -$wb['jailkit_chroot_cron_programs_error_regex'] = 'Programas no cron em ambiente chroot jailkit são inválidos.'; -$wb['vlogger_config_dir_error_regex'] = 'Diretório de configuração do vlogger é inválido.'; -$wb['cron_init_script_error_regex'] = 'Script de inicialização do Cron é inválido.'; -$wb['crontab_dir_error_regex'] = 'Diretório para tabelas de tarefas individuais no cron é inválido.'; -$wb['cron_wget_error_regex'] = 'Caminho do wget para cron é inválido.'; +$wb['php_ini_path_apache_error_regex'] = 'Caminho do php.ini do apache é inválido.'; +$wb['php_ini_path_cgi_error_regex'] = 'Caminho do php.ini do cgi é inválido.'; +$wb['php_fpm_init_script_error_regex'] = 'Script de inicialização do php-fpm é inválido.'; +$wb['php_fpm_ini_path_error_regex'] = 'Caminho de inicialização do php-fpm é inválido.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Caminho do diretório de faixas do php-fpm é inválido.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Caminho do diretório de socket do php-fpm é inválido.'; +$wb['php_open_basedir_error_regex'] = 'Caminho do open_basedir do php é inválido.'; +$wb['awstats_data_dir_empty'] = 'O diretório de dados do awstats está em branco.'; +$wb['awstats_data_dir_error_regex'] = 'O diretório de dados do awstats é inválido.'; +$wb['awstats_pl_empty'] = 'A configuração do awstats.pl está em branco.'; +$wb['awstats_pl_error_regex'] = 'O caminho do awstats.pl é inválido.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'O awstats_buildstaticpages.pl está em branco'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'O caminho do awstats_buildstaticpages.pl é inválido.'; +$wb['invalid_bind_user_txt'] = 'O usuário do bind é inválido.'; +$wb['invalid_bind_group_txt'] = 'O grupo do bind é inválido.'; +$wb['bind_zonefiles_dir_error_regex'] = 'O diretório de zonas do bind é inválido.'; +$wb['named_conf_path_error_regex'] = 'O caminho do named.conf é inválido.'; +$wb['named_conf_local_path_error_regex'] = 'O caminho do named.conf.local é inválido.'; +$wb['fastcgi_starter_path_error_regex'] = 'O caminho do script de inicialização do fastcgi é inválido.'; +$wb['fastcgi_starter_script_error_regex'] = 'O script de inicialização do fastcgi é inválido.'; +$wb['fastcgi_alias_error_regex'] = 'O alias do fastcgi é inválido.'; +$wb['fastcgi_phpini_path_error_regex'] = 'O caminho do fastcgi é inválido.'; +$wb['fastcgi_bin_error_regex'] = 'O binário do fastcgi é inválido.'; +$wb['jailkit_chroot_home_error_regex'] = 'O diretório home em chroot do jailkit é inválido.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'As seções de aplicações no jaikit são inválidas.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'As aplicações em chroot no jailkit são inválidas.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'As tarefas de aplicações em chroot no jailkit são inválidas.'; +$wb['vlogger_config_dir_error_regex'] = 'Diretório de configurações do vlogger é inválido.'; +$wb['cron_init_script_error_regex'] = 'Script de inicialização do cron é inválido.'; +$wb['crontab_dir_error_regex'] = 'Diretório do cron é inválido.'; +$wb['cron_wget_error_regex'] = 'Caminho do wget no cron é inválido.'; $wb['network_filesystem_txt'] = 'Sistema de arquivos de rede'; -$wb['disable_bind_log_txt'] = 'Desabilitar mensagens de alerta no log para bind9.'; -$wb['apps_vhost_enabled_txt'] = 'Habilitar apps-vhost'; -$wb['do_not_try_rescue_mongodb_txt'] = 'Desabilitar monitoramento do MongoDB'; -$wb['backup_dir_mount_cmd_txt'] = 'Usar o comando mount, se o diretório de backups não estiver montado'; -$wb['overquota_db_notify_admin_txt'] = 'Enviar mensagens de alerta de cota do banco de dados para o administrador'; -$wb['overquota_db_notify_client_txt'] = 'Enviar mensagens de alerta de cota do banco de dados para o cliente'; -$wb['php_handler_txt'] = 'Manipulador padrão PHP'; -$wb['disabled_txt'] = 'Desabilitado'; -$wb['dkim_strength_txt'] = 'Dificuldade do DKIM'; -$wb['php_ini_check_minutes_txt'] = 'Verificar modificações do php.ini a cada N minutos'; -$wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor de quantas vezes o php.ini deve ser verificado por modificações.'; -$wb['php_ini_check_minutes_info_txt'] = '0 = sem verificação'; +$wb['php_ini_check_minutes_txt'] = 'Verificar alterações no php.ini a cada X minutos'; +$wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor para verificação de alterações no php.ini.'; +$wb['php_ini_check_minutes_info_txt'] = '0 = sem verificações'; $wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponível'; -$wb['web_settings_txt'] = 'Servidor de páginas'; -$wb['xmpp_server_txt'] = 'Servidor XMPP'; +$wb['web_settings_txt'] = 'Servidor web'; +$wb['xmpp_server_txt'] = 'Servidor xmpp'; $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; -$wb['xmpp_bosh_max_inactivity_txt'] = 'O limite de tempo para falta de atividade BOSH'; -$wb['xmpp_bosh_timeout_range_wrong'] = 'Por favor, insira uma faixa de tempo - entre 15 e 360 - para verificar falta de atividade BOSH.'; -$wb['xmpp_module_saslauth'] = 'saslauth'; +$wb['xmpp_bosh_max_inactivity_txt'] = 'Tempo de inatividade do BOSH'; +$wb['xmpp_bosh_timeout_range_wrong'] = 'Por favor, insira um valor para o timeout do bosh entre 15 e 360.'; +$wb['xmpp_module_saslauth'] = 'Autenticação SASL'; $wb['xmpp_server_admins_txt'] = 'Administradores do servidor (JIDs)'; -$wb['xmpp_modules_enabled_txt'] = 'Habilitar plugins no lado servidor (um por linha)'; +$wb['xmpp_modules_enabled_txt'] = 'Plugins habilitados no servidor (um por linha)'; $wb['xmpp_ports_txt'] = 'Portas dos componentes'; -$wb['xmpp_port_http_txt'] = 'HTTP'; -$wb['xmpp_port_https_txt'] = 'HTTPS'; +$wb['xmpp_port_http_txt'] = 'http'; +$wb['xmpp_port_https_txt'] = 'https'; $wb['xmpp_port_pastebin_txt'] = 'Pastebin'; $wb['xmpp_port_bosh_txt'] = 'BOSH'; -$wb['backup_time_txt'] = 'Hora do backup'; +$wb['disable_bind_log_txt'] = 'Desabilitar mensagens de alerta do bind9'; +$wb['apps_vhost_enabled_txt'] = 'Habilitar apps-vhost'; $wb['skip_le_check_txt'] = 'Ignorar verificação do Lets Encrypt'; -$wb['migration_mode_txt'] = 'Habilitar modo de migração do servidor'; -$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; -$wb['backup_tmp_txt'] = 'Backup tmp directory for zip'; -$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.'; -$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.'; -$wb['logging_txt'] = 'Store website access and error logs'; -$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.'; -$wb['log_retention_txt'] = 'Log retention (days)'; -$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; -$wb['php_default_name_txt'] = 'Description Default PHP-Version'; -$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; -?> +$wb['migration_mode_txt'] = 'Modo migração de servidor'; +$wb['nginx_enable_pagespeed_txt'] = 'Tornar pagespeed disponível'; +$wb['logging_txt'] = 'Gravar logs de acesso e erros de sites'; +$wb['logging_desc_txt'] = 'Usar Ferramentas > Sicronizar para aplicar mudanças em sites existentes. Para o Apache, os logs de acesso e erros podem ser anonimizados. Para o nginx, apenas o log de acesso é anonimizado, o log de erros conterá endereços IP.'; +$wb['log_retention_txt'] = 'Tempo de retenção do log (dias)'; +$wb['log_retention_error_ispositive'] = 'O tempo de retenção do log deve ser um número > 0.'; +$wb['php_default_name_txt'] = 'Descrição da versão padrão do php'; +$wb['php_default_name_error_empty'] = 'A descrição da versão padrão do php está em branco.'; +$wb['error_mailbox_message_size_txt'] = 'O tamanho da cota da conta de e-mail deve ser maior ou igual o tamanho da cota de mensagens.'; +$wb['php_fpm_reload_mode_txt'] = 'Modo da recarga do php-fpm'; +$wb['content_filter_txt'] = 'Filtro de conteúdo'; +$wb['rspamd_url_txt'] = 'URL do rspamd'; +$wb['rspamd_user_txt'] = 'Usuário do rspamd'; +$wb['rspamd_password_txt'] = 'Senha do rspamd'; diff --git a/interface/web/admin/lib/lang/br_server_ip.lng b/interface/web/admin/lib/lang/br_server_ip.lng index b92157894071b20fa27b58088fc16ff36a2b7e72..b9bbd47949189bf6a58262417a3b9fc7a333b859 100644 --- a/interface/web/admin/lib/lang/br_server_ip.lng +++ b/interface/web/admin/lib/lang/br_server_ip.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/admin/lib/lang/br_server_ip_list.lng b/interface/web/admin/lib/lang/br_server_ip_list.lng index c7b22097bfcd560bd07903c15444079f38694915..0ae892af876a82f35308158569db43f0dab338f1 100644 --- a/interface/web/admin/lib/lang/br_server_ip_list.lng +++ b/interface/web/admin/lib/lang/br_server_ip_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/admin/lib/lang/br_server_ip_map.lng b/interface/web/admin/lib/lang/br_server_ip_map.lng index 44b76482776000528b7276f111f412a5b4f36a52..81a2bb4b961b2cb771f0a1a282376442345641ce 100644 --- a/interface/web/admin/lib/lang/br_server_ip_map.lng +++ b/interface/web/admin/lib/lang/br_server_ip_map.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/admin/lib/lang/br_server_ip_map_list.lng b/interface/web/admin/lib/lang/br_server_ip_map_list.lng index f5682f31acd6de80d67261835d099d0e16d1183f..8cb0a1e20fda3ca0355af4112acc20ae9f1297e9 100644 --- a/interface/web/admin/lib/lang/br_server_ip_map_list.lng +++ b/interface/web/admin/lib/lang/br_server_ip_map_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/admin/lib/lang/br_server_list.lng b/interface/web/admin/lib/lang/br_server_list.lng index b4a1fcafc6ce68dfd14d3bc6855394f5e289b0b6..ae3bb528105819fba1f2e301b7edfc6cda305799 100644 --- a/interface/web/admin/lib/lang/br_server_list.lng +++ b/interface/web/admin/lib/lang/br_server_list.lng @@ -1,14 +1,14 @@ diff --git a/interface/web/admin/lib/lang/br_server_php.lng b/interface/web/admin/lib/lang/br_server_php.lng index 459b4d9e0ccd25a92a356d622d9a6148eee1deb3..377763ce45c79b68b43b0f8e54eaadfcb2bd3c8f 100644 --- a/interface/web/admin/lib/lang/br_server_php.lng +++ b/interface/web/admin/lib/lang/br_server_php.lng @@ -1,17 +1,17 @@ diff --git a/interface/web/admin/lib/lang/br_server_php_list.lng b/interface/web/admin/lib/lang/br_server_php_list.lng index 31a2b13eb8f720c45202644a908305a77517b6f6..38ebdd3568c080c477198261230a264d9f7aeda8 100644 --- a/interface/web/admin/lib/lang/br_server_php_list.lng +++ b/interface/web/admin/lib/lang/br_server_php_list.lng @@ -3,5 +3,6 @@ $wb['list_head_txt'] = 'Versões adicionais do php'; $wb['server_id_txt'] = 'Servidor'; $wb['add_new_record_txt'] = 'Adicionar nova versão do php'; $wb['client_id_txt'] = 'Cliente'; -$wb['name_txt'] = 'Nome da versão do php'; +$wb['name_txt'] = 'Nome da versão'; +$wb['active_txt'] = 'Ativo'; ?> diff --git a/interface/web/admin/lib/lang/br_software_package_list.lng b/interface/web/admin/lib/lang/br_software_package_list.lng index 093f52bca34643b8a7b759701434421f00702150..de62e3d305978b4856ed4e0c1af72feb0f13c1bb 100644 --- a/interface/web/admin/lib/lang/br_software_package_list.lng +++ b/interface/web/admin/lib/lang/br_software_package_list.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/admin/lib/lang/br_software_repo.lng b/interface/web/admin/lib/lang/br_software_repo.lng index b5358501383cf6f3227f906394f2d44f7fc4fa58..dbc14e203210c50d1a1c0b32069b29aae045b217 100644 --- a/interface/web/admin/lib/lang/br_software_repo.lng +++ b/interface/web/admin/lib/lang/br_software_repo.lng @@ -4,5 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Usuário (opcional)'; $wb['repo_password_txt'] = 'Senha (opcional)'; $wb['active_txt'] = 'Ativo'; -$wb['Software Repository which may contain addons or updates'] = 'Repositório de softwares podem conter complementos ou atualizações'; +$wb['Software Repository which may contain addons or updates'] = 'Repositório de software pode conter complementos ou atualizações'; ?> diff --git a/interface/web/admin/lib/lang/br_software_update_list.lng b/interface/web/admin/lib/lang/br_software_update_list.lng index 0592ca7f2622d15fd38b86821f8429e4fd715f29..0dff3a245c45d3cc985a0583f9da49dafd6545a2 100644 --- a/interface/web/admin/lib/lang/br_software_update_list.lng +++ b/interface/web/admin/lib/lang/br_software_update_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 02e3249d5fd2a340904e10450b6086f30868e236..98bd4c9614c6732f9df036b7884606fe4f1d40cd 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -1,58 +1,58 @@ diff --git a/interface/web/admin/lib/lang/br_tpl_default_admin.lng b/interface/web/admin/lib/lang/br_tpl_default_admin.lng index 0a53752e4bb7899cb8c6ec07fd1e8b3a1a5c23da..dbad6b17668dcae270bd642a01f06dd5e91bf030 100644 --- a/interface/web/admin/lib/lang/br_tpl_default_admin.lng +++ b/interface/web/admin/lib/lang/br_tpl_default_admin.lng @@ -1,18 +1,18 @@ diff --git a/interface/web/admin/lib/lang/br_users.lng b/interface/web/admin/lib/lang/br_users.lng index d16bcf1cb181b47daf13787d167c19727e7600e1..6d71a39e4c78e7ca376c2323520fb932b68cb39f 100644 --- a/interface/web/admin/lib/lang/br_users.lng +++ b/interface/web/admin/lib/lang/br_users.lng @@ -1,36 +1,36 @@ diff --git a/interface/web/admin/lib/lang/br_users_list.lng b/interface/web/admin/lib/lang/br_users_list.lng index 3422f78355cf5763e27d6905f1b5713b1f46e7f7..26910186c5ef5cbc6d521fa151c9f5a70c322057 100644 --- a/interface/web/admin/lib/lang/br_users_list.lng +++ b/interface/web/admin/lib/lang/br_users_list.lng @@ -1,9 +1,9 @@ AVISO: Não modifique ou edite qualquer configuração de usuário aqui. Use o módulo de clientes ou revendas. Modificar ou alterar usuários e grupos nesta aba pode ocasionar perda de dados!'; $wb['groups_txt'] = 'Grupos'; +$wb['add_new_record_txt'] = 'Adicionar novo usuário'; +$wb['warning_txt'] = 'ALERTA: Não editar ou alterar qualquer configuração de usuário aqui. Use o módulo de clientes e revendas para isso. Editar ou alterar usuários ou grupos aqui pode causar perda de dados!'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index a83144b33493f4cfded92981b0fbee9bafa13f03..14f0b91d3b897404ac226906c8bb9a17529a845b 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -208,6 +208,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['invalid_apache_user_txt'] = 'Invalid apache user.'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_php_list.lng b/interface/web/admin/lib/lang/ca_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/ca_server_php_list.lng +++ b/interface/web/admin/lib/lang/ca_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index 5809cc97b2816aca52e978689f2f7ce8176d482d..cc3c11c6c5ac86fe60180a49430fbc1963f9675e 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -81,4 +81,13 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 9a765635228bfeb8fe1201efb9b6e164fd1ae0be..a97d78b8eb358977b7bc1c4d6dc1c20a330d513d 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -143,7 +143,7 @@ $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM adresář pro socket je prázdn $wb['try_rescue_txt'] = 'Povolit monitorování služeb a restartovat při selhání'; $wb['do_not_try_rescue_mysql_txt'] = 'Zakázat MySQL monitorování'; $wb['do_not_try_rescue_mail_txt'] = 'Zakázat E-mail monitorování'; -$wb['rescue_description_txt'] = 'Informace: Pokud chcete např. vypnout MySQL službu zatrhněte políčko \"Zakázat MySQL monitorování\" změna se provede do 2-3 minut.
Pokud nepočkáte 2-3 minuty, monitorování nastartuje službu MySQL automaticky znovu !'; +$wb['rescue_description_txt'] = 'Informace: Pokud chcete např. vypnout MySQL službu zatrhněte políčko \\"Zakázat MySQL monitorování\\" změna se provede do 2-3 minut.
Pokud nepočkáte 2-3 minuty, monitorování nastartuje službu MySQL automaticky znovu !'; $wb['enable_sni_txt'] = 'Aktivovat SNI (Server Name Indication)'; $wb['do_not_try_rescue_httpd_txt'] = 'Zakázat HTTPD monitorování'; $wb['set_folder_permissions_on_update_txt'] = 'Nastavení oprávnění složky při aktualizaci'; @@ -257,6 +257,7 @@ $wb['backup_delete_txt'] = 'Odstranit zálohy pokud byla smazána doména/webov $wb['overquota_db_notify_admin_txt'] = 'Poslat varování o překročení nebo vyčerpání DB kvót adminovi'; $wb['overquota_db_notify_client_txt'] = 'Poslat varování o překročení nebo vyčerpání DB kvót klientovi'; $wb['php_handler_txt'] = 'Výchozí PHP obslužná rutina'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Vypnuto'; $wb['php_ini_check_minutes_txt'] = 'Provádět kontrolu změny obsahu souboru php.ini každých X minut'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_php.lng b/interface/web/admin/lib/lang/cz_server_php.lng index 615431c3559ed694eda6fb9aff9d2bb5845943cc..e3268703409b81751d095a13e1f8d8da655d2030 100644 --- a/interface/web/admin/lib/lang/cz_server_php.lng +++ b/interface/web/admin/lib/lang/cz_server_php.lng @@ -13,5 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Cesta k php.ini adresáři'; $wb['php_fpm_init_script_txt'] = 'Cesta k PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Cesta k php.ini adresáři'; $wb['php_fpm_pool_dir_txt'] = 'Cesta k PHP-FPM pool adresáři'; -$wb['active_txt'] = 'Active'; +$wb['active_txt'] = 'Aktivní'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng index 655f9a92b27fabc2b9ce22fa5828767446b7c710..abe4f750ff53f710decd2bd98b0e67460a60f091 100644 --- a/interface/web/admin/lib/lang/cz_server_php_list.lng +++ b/interface/web/admin/lib/lang/cz_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Přidat verzi PHP'; $wb['client_id_txt'] = 'Klient'; $wb['name_txt'] = 'Verze PHP'; +$wb['active_txt'] = 'Aktivní'; ?> diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 930e3ebbfb6b4f56ee6f7d2a5eb8b7a8d82da21a..3660e1b689ff41613eb360826e4776321ab69700 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -77,8 +77,17 @@ $wb['default_dnsserver_txt'] = 'Výchozí DNS server'; $wb['default_slave_dnsserver_txt'] = 'Výchozí sekundární DNS server'; $wb['default_dbserver_txt'] = 'Výchozí databázový server'; $wb['company_name_txt'] = 'Název společnosti v panelu (listu) webového prohlížeče'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použít kartu možností pro weby.'; $wb['custom_login_text_txt'] = 'Vlastní text na přihlašovací stránce'; $wb['custom_login_link_txt'] = 'Vlastní odkaz (URL) na přihlašovací stránce (vlastní text)'; $wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastní odkaz na přihlašovací stránce'; +$wb['ca_name_txt'] = 'Název vydavatele'; +$wb['ca_issue_txt'] = 'Doména vydavatele'; +$wb['ca_wildcard_txt'] = 'Použít Wildcard (*)'; +$wb['ca_critical_txt'] = 'Přísná kontrola'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktivní'; +$wb['btn_save_txt'] = 'Uložit'; +$wb['btn_cancel_txt'] = 'Zrušit'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 1d8109e8e17c46842994c94e5f27a9289c0c7342..960381e7c12f9b94347f66d665170145b69eab17 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -267,6 +267,7 @@ $wb['php_ini_check_minutes_txt'] = 'Prüfe php.ini alle X Minuten auf Änderunge $wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.'; $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; $wb['php_handler_txt'] = 'Standard-PHP-Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; $wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; $wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Beschreibung Standard PHP'; $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus'; +$wb['content_filter_txt'] = 'Content-Filter'; +$wb['rspamd_url_txt'] = 'Rspamd-URL'; +$wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; +$wb['rspamd_password_txt'] = 'Rspamd-Passwort'; ?> diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 8620491ad4734f4a98ebb9271583ce5904301e97..76910e1db38f08283a060c67429355118ad643f6 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Wildcard verwenden'; +$wb['ca_critical_txt'] = 'Strikte Überprüfung'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktiv'; +$wb['btn_save_txt'] = 'Speichern'; +$wb['btn_cancel_txt'] = 'Abbrechen'; +$wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 26f953d5b44a654558fbf565394d1ef919c3dc5c..73e7ef1bfda82d68b86d5f03fd5f364535a9f681 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -260,6 +260,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_php_list.lng b/interface/web/admin/lib/lang/dk_server_php_list.lng index 8dbcdd211f22835327bee276da60d7cbfeb55a0c..43fb5fe2110addd46f8c25ae2a53b5b8dca3c80e 100644 --- a/interface/web/admin/lib/lang/dk_server_php_list.lng +++ b/interface/web/admin/lib/lang/dk_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Tilføj ny PHP version'; $wb['client_id_txt'] = 'Kunde'; $wb['name_txt'] = 'PHP Navn'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 2834cacad6e2acc15a3647a0e5b44f1408e386a0..26b0fe7e78d1ba19b2799749ec357bdd17f2c71c 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -81,4 +81,13 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 1298ea71aed74b3eccc906d8d01e058c511a18e6..84992261bb47fbbed509e6741f9190365aa751cc 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/el_server_php_list.lng b/interface/web/admin/lib/lang/el_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/el_server_php_list.lng +++ b/interface/web/admin/lib/lang/el_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 4dadc1290bfc36a9f31fa2a9f91bc3092e1c145d..640d6f00a9e13e73a37b2e3797b48f1300d66cda 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index fe35d1c5edd47505d124f10ecfa4904739db1ba3..0ba3638a0a06de1f9cd3e914f8a1c44ec569a2ae 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -212,6 +212,7 @@ $wb["overquota_db_notify_admin_txt"] = 'Send DB quota warnings to admin'; $wb["overquota_db_notify_client_txt"] = 'Send DB quota warnings to client'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; $wb['php_handler_txt'] = "Default PHP Handler"; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; @@ -295,4 +296,8 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; -?> +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 1a7d18b9e78fc58b2da382f33d34e7d534488b41..6f1acb2ae87b7b554396e2f794963cee24787d91 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -86,4 +86,13 @@ $wb["custom_login_link_txt"] = "Custom Link on Login-Page"; $wb["login_link_error_regex"] = "Invalid Link for Custom Login"; $wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; $wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Active'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng index 81f3742a35d3774757a17ebf57390fe4509ce9dd..931c73e8ebf6354e0196b70af94af3ed81d7708e 100644 --- a/interface/web/admin/lib/lang/en_users.lng +++ b/interface/web/admin/lib/lang/en_users.lng @@ -33,4 +33,8 @@ $wb['username_error_collision'] = 'The username may not be web or web plus a num $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin'; $wb['lost_password_function_txt'] = 'Forgot password function is available'; $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.'; +$wb['startmodule_empty'] = 'Startmodule empty.'; +$wb['startmodule_regex'] = 'Invalid chars in Startmodule.'; +$wb['app_theme_empty'] = 'App theme empty.'; +$wb['app_theme_regex'] = 'Invalid chars in App theme.'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 5ce3381d9818e2e48843e4d720ae3e9cc80ce59a..01350367ae29fb45e74cd7702447a6d0d5e41952 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -206,6 +206,7 @@ $wb['php_fpm_socket_dir_txt'] = 'Directorio para el socket de PHP-FPM'; $wb['php_fpm_start_port_error_empty'] = 'El puerto de inicio de PHP-FPM está vacío.'; $wb['php_fpm_start_port_txt'] = 'Puerto de inicio de PHP-FPM'; $wb['php_handler_txt'] = 'Controlador PHP por defecto'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['php_ini_check_minutes_error_empty'] = 'Por favor especifique un valor para definir con qué frecuencia se deberían buscar cambios en el archivo php.ini.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no comprobar'; $wb['php_ini_check_minutes_txt'] = 'Comprobar cambios en php.ini cada X minutos'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng index 2e6257cfac99ff0853b7d43e57d56220cafbe022..111628b7200f80898ac231b030e0ef6d353e8cd3 100755 --- a/interface/web/admin/lib/lang/es_server_php_list.lng +++ b/interface/web/admin/lib/lang/es_server_php_list.lng @@ -4,4 +4,5 @@ $wb['client_id_txt'] = 'Cliente'; $wb['list_head_txt'] = 'Versiones adicionales de PHP'; $wb['name_txt'] = 'Versión de PHP'; $wb['server_id_txt'] = 'Servidor'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index cc81939cb389078cf90fa8c14caea505c378829e..043c52cfddc3b983f8d53b8f0bdeae6b5fa24b8f 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -81,4 +81,13 @@ $wb['webftp_url_txt'] = 'Enlace al cliente FTP por web'; $wb['webmail_url_error_regex'] = 'Dirección del correo web inválida'; $wb['webmail_url_note_txt'] = 'Marcador de posición:'; $wb['webmail_url_txt'] = 'URL de correo web'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 4609ce5b13971ab55622547d74b63f16d79195cc..6caf643abe3a6a4f6df4f379a1eafae81607bdcb 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_php_list.lng b/interface/web/admin/lib/lang/fi_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/fi_server_php_list.lng +++ b/interface/web/admin/lib/lang/fi_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index c4987d01a3addf5ca64cea624c56e8eaa7c37cfd..c0972c49d87434a1ee1425df1258c4d9d759c612 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index e31d68383ef021f763e4a927d9391dd699a1108c..25f737568867a8d8f1ddbd68c550af1c613dc673 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -259,6 +259,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_php_list.lng b/interface/web/admin/lib/lang/fr_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/fr_server_php_list.lng +++ b/interface/web/admin/lib/lang/fr_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 5892e3a269c698417280ce398730926011cfcda4..18f0dbbed4e3dad9d5afc722473f3158f8525633 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -81,4 +81,13 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index c54a67659d17845ca25ee9d8096f6daeffe965e0..faf08f4201b64d73d4f1ce505f33eca865664dcf 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -261,6 +261,7 @@ $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_php_list.lng b/interface/web/admin/lib/lang/hr_server_php_list.lng index 8fd3db7a05dff9ccf466c4237c782b3c4eef2406..9e9c0de986aed34eae1572404516a65fd4d6b5a6 100644 --- a/interface/web/admin/lib/lang/hr_server_php_list.lng +++ b/interface/web/admin/lib/lang/hr_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Klijent'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index e02ae57a20a6cc5baa655e7c45cc7c38459ab1b9..a7735647b17077ee3c84639d791fb1057959f3bc 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 1ac1cd268530c5fa158474ae0782b1cd417cb19f..6347afb7da1107e5f21ebd3144be196d7b5b43f3 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_php_list.lng b/interface/web/admin/lib/lang/hu_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/hu_server_php_list.lng +++ b/interface/web/admin/lib/lang/hu_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index d26fc5be2dc52df07d71ff65dba9b981c8d8d1ef..cee497fe19daec3e77a93771dcddd9bca237eb63 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index a4738919645c1e2f09caa36a214ff823670ecd6e..9a28dff300ade469f23a57d44590428ba6fc8ef2 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/id_server_php_list.lng b/interface/web/admin/lib/lang/id_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/id_server_php_list.lng +++ b/interface/web/admin/lib/lang/id_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index c865dff3d81619315d566ef3ee58501485606412..344185b84db08846103736929e6a8e341aa60799 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 8c563853c7fae709166b922dfa8ee50566211523..3dc37a3c1d4664076f251417a922c7b0e2879df0 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -259,6 +259,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/it_server_php_list.lng b/interface/web/admin/lib/lang/it_server_php_list.lng index 36bfcbc40eb08347320c54322fc52dc91af0add0..296de9d0a55df5e48d11f09a5082d497ca5f7d41 100644 --- a/interface/web/admin/lib/lang/it_server_php_list.lng +++ b/interface/web/admin/lib/lang/it_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Aggiungi una nuova versione PHP'; $wb['client_id_txt'] = 'Cliente'; $wb['name_txt'] = 'Nome PHP'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index bc72844ed8f48feb85b7e37ea8afdf60d2484e6b..90c971d30037df264f2e7ddd832014fee661f14c 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -83,4 +83,13 @@ $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; $wb["default_remote_dbserver_txt"] = "DB remoti predefiniti"; $wb["disable_client_remote_dbserver_txt"] = "Disabilita la configurazione dei DB Remoti per i clienti"; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 76c400728b695f4918fd9b3109b5c9672a585d37..72bef72c4b5feb545cad3dcabd18701eaa1290a3 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_php_list.lng b/interface/web/admin/lib/lang/ja_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/ja_server_php_list.lng +++ b/interface/web/admin/lib/lang/ja_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index fc32081d962b0c6be9e19465b4514a67d1354c9b..aa5cc6a7a3e69963e8204e22aff4ff6f2fc756e9 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 350a06ba366bf0490f350de6ac819121cd22d377..2884f304ec448dc52523bf935c1cce3c08f84e43 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_php_list.lng b/interface/web/admin/lib/lang/nl_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/nl_server_php_list.lng +++ b/interface/web/admin/lib/lang/nl_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/nl_software_package_list.lng b/interface/web/admin/lib/lang/nl_software_package_list.lng index 33e66022bc33e6348d962c81aa34f4e3d4c1eb29..44aaa563ad06f472796aa96a31d9a241c9cee4fc 100644 --- a/interface/web/admin/lib/lang/nl_software_package_list.lng +++ b/interface/web/admin/lib/lang/nl_software_package_list.lng @@ -6,7 +6,7 @@ $wb['package_description_txt'] = 'Omschrijving'; $wb['action_txt'] = 'Actie'; $wb['toolsarea_head_txt'] = 'Pakketten'; $wb['repoupdate_txt'] = 'Update pakketlijst'; -$wb['package_id_txt'] = 'locaal App-ID'; +$wb['package_id_txt'] = 'lokaal App-ID'; $wb['no_packages_txt'] = 'No packages available'; $wb['edit_txt'] = 'Edit'; $wb['delete_txt'] = 'Delete'; diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 5177888bb06b645358090a945a5d1835804ec48f..44a58b7646e09c8fc06c112f3c1aa19dbeb9a7b4 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index c052b7f3731688da34e1de81818a256dcfe3ef65..29cb94e96c2ca30e8464c0edd4e9efaa4cf4336b 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_php_list.lng b/interface/web/admin/lib/lang/pl_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/pl_server_php_list.lng +++ b/interface/web/admin/lib/lang/pl_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index cea6345e63746e2eef461e50a332438bec11df64..a809251ec1bb6d301742d7f0f2c216db7a8f2f00 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 4767022e4902fa8ea08dfcfc23ef6ed5d23c7e8c..3703c759ed1c28348fed478677debf813ae82800 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_php_list.lng b/interface/web/admin/lib/lang/pt_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/pt_server_php_list.lng +++ b/interface/web/admin/lib/lang/pt_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 24ff94fca278da5e3366db422e69bc1a701e7950..6fc26344c002abc772de985e3a2b835fad1d5b94 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 41b967b7355f2623481d89943b7293bc2b3785e9..32514761262ca0566d695b17ce12c943a5ef99d6 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_php_list.lng b/interface/web/admin/lib/lang/ro_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/ro_server_php_list.lng +++ b/interface/web/admin/lib/lang/ro_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index b258ee18707b95d94d77a287fdc7e59effd758c5..2a39a454e8cde25155f4e6cbf2c0abfd9212a692 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ru_firewall.lng b/interface/web/admin/lib/lang/ru_firewall.lng index c30f26f2e89618ae52bafc636006a36d59624264..70beb30437001e94beb6109e8c518019a5d6059f 100644 --- a/interface/web/admin/lib/lang/ru_firewall.lng +++ b/interface/web/admin/lib/lang/ru_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Перечислить порты TCP через з $wb['udp_port_help_txt'] = 'Перечислить порты UDP через запятую'; $wb['active_txt'] = 'Активно'; $wb['firewall_error_unique'] = 'Уже есть такая запись брандмауэра для этого сервера.'; -$wb['tcp_ports_error_regex'] = 'Недопустимый символ в указании tcp порта. Корректные сиволы - цифры, \":\" и \",\"'; -$wb['udp_ports_error_regex'] = 'Некорректный символ в указании UDP порта. Допустимые сиволы - цифры, \":\" и \",\"'; +$wb['tcp_ports_error_regex'] = 'Недопустимый символ в указании tcp порта. Корректные сиволы - цифры, \\":\\" и \\",\\"'; +$wb['udp_ports_error_regex'] = 'Некорректный символ в указании UDP порта. Допустимые сиволы - цифры, \\":\\" и \\",\\"'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 0775ab7f88f5763c17a91dc53cc012fc7475ede1..b2f0b407d67f0e5837f10401abd793c6418242b9 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -152,7 +152,7 @@ $wb['php_fpm_socket_dir_error_empty'] = 'Каталог PHP-FPM сокета п $wb['try_rescue_txt'] = 'Включить мониторинг службы и перезапуск при сбое'; $wb['do_not_try_rescue_mysql_txt'] = 'Отключить мониторинг MySQL'; $wb['do_not_try_rescue_mail_txt'] = 'Отключить мониторинг Email'; -$wb['rescue_description_txt'] = 'Информация: Если вы хотите выключить MySQL, вы должны установить флажок \"Отключить мониторинг MySQL\" и подождать 2-3 минуты.
Если вы не подождёте 2-3 минуты, мониторинг будет пытаться перезапустить MySQL!'; +$wb['rescue_description_txt'] = 'Информация: Если вы хотите выключить MySQL, вы должны установить флажок \\"Отключить мониторинг MySQL\\" и подождать 2-3 минуты.
Если вы не подождёте 2-3 минуты, мониторинг будет пытаться перезапустить MySQL!'; $wb['enable_sni_txt'] = 'Включить SNI'; $wb['do_not_try_rescue_httpd_txt'] = 'Отключить мониторинг HTTPD'; $wb['set_folder_permissions_on_update_txt'] = 'Установить разрешения для папки на обновления'; @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Выполните команду монти $wb['overquota_db_notify_admin_txt'] = 'Присылать предупреждения квоты DB администратору'; $wb['overquota_db_notify_client_txt'] = 'Присылать предупреждения квоты DB клиенту'; $wb['php_handler_txt'] = 'Обработчик PHP по умолчанию'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Отключено'; $wb['dkim_strength_txt'] = 'Стойкость DKIM'; $wb['php_ini_check_minutes_txt'] = 'Проверять изменения в PHP.ini файле каждые Х минут'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_php_list.lng b/interface/web/admin/lib/lang/ru_server_php_list.lng index bb4cc308e49121f4417f9fa37f8bf525396c7473..5c84917f1595a92c227b67e6a66749da72e1e835 100644 --- a/interface/web/admin/lib/lang/ru_server_php_list.lng +++ b/interface/web/admin/lib/lang/ru_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Сервер'; $wb['add_new_record_txt'] = 'Добавить новую версию PHP'; $wb['client_id_txt'] = 'ID Клиента'; $wb['name_txt'] = 'Имя PHP'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index c1909f3ba66f2cf9fac5187d67f25722f1907807..baed497b0eb238c8e3709656bbabc5a0842711c7 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -14,7 +14,7 @@ $wb['mailboxlist_webmail_link_txt'] = 'Ссылка на веб-почту в с $wb['webmail_url_txt'] = 'URL веб-почты'; $wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; $wb['use_domain_module_txt'] = 'Использовать модуль домена, чтобы добавить новые домены'; -$wb['use_domain_module_hint'] = 'При использовании этого модуля, Ваши клиенты смогут выбрать только один из доменов, созданных для них администратором. Они не могут свободно редактировать поле \"домен\". Чтобы сделать эти изменения видимыми, Вы должны выйти и повторно войти в панель после изменения этого значения.'; +$wb['use_domain_module_hint'] = 'При использовании этого модуля, Ваши клиенты смогут выбрать только один из доменов, созданных для них администратором. Они не могут свободно редактировать поле \\"домен\\". Чтобы сделать эти изменения видимыми, Вы должны выйти и повторно войти в панель после изменения этого значения.'; $wb['new_domain_txt'] = 'HTML текст, чтобы создать новый домен'; $wb['webdavuser_prefix_txt'] = 'Префикс пользователя WebDAV'; $wb['webdavuser_prefix_error_regex'] = 'Некорректный символ в префиксе пользователя WebDAV.'; @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Кли $wb['customer_no_start_txt'] = 'Начальное значение номера Клиента'; $wb['customer_no_counter_txt'] = 'Счётчик номера Клиента'; $wb['session_timeout_txt'] = 'Тайм-аут сессии (в минутах)'; -$wb['session_allow_endless_txt'] = 'Включить \"оставаться в системе\"'; +$wb['session_allow_endless_txt'] = 'Включить \\"оставаться в системе\\"'; $wb['No'] = 'Нет'; $wb['min_password_length_txt'] = 'Минимальная длина пароля'; $wb['min_password_strength_txt'] = 'Минимальная стойкость пароля'; @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Web-сервер по умолчанию'; $wb['default_dnsserver_txt'] = 'DNS-сервер по умолчанию'; $wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-сервер по умолчанию'; $wb['default_dbserver_txt'] = 'Сервер базы данных по умолчанию'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng index bd1b8034ff441abf1db0a52185c3e4672823b89a..63f081f91707cd8faab397f0c0679fdbe73de4ed 100644 --- a/interface/web/admin/lib/lang/ru_users.lng +++ b/interface/web/admin/lib/lang/ru_users.lng @@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Создать пароль'; $wb['repeat_password_txt'] = 'Повторить пароль'; $wb['password_mismatch_txt'] = 'Пароли не совпадают.'; $wb['password_match_txt'] = 'Эти пароли совпадают.'; -$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \"web\" или \"web\" плюс число.'; +$wb['username_error_collision'] = 'Имя пользователя не может начинаться со слова \\"web\\" или \\"web\\" плюс число.'; $wb['client_not_admin_err'] = 'Пользователь, который принадлежит к клиенту не может быть установлен тип: admin'; $wb['lost_password_function_txt'] = 'Функция восстановления пароля доступна'; $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 5808fb2f5e83a831b7f5970c10dce36a0211b543..1103baa4d2081d2d1b47a64f492d4c4e91418535 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/se_server_php_list.lng b/interface/web/admin/lib/lang/se_server_php_list.lng index f5762ad3a6573b8465e7cef786a8e283d8283294..451236d1ca04167a47fa44e8ff1e0ac74cf8e9e1 100644 --- a/interface/web/admin/lib/lang/se_server_php_list.lng +++ b/interface/web/admin/lib/lang/se_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Lägg till ny PHP-version'; $wb['client_id_txt'] = 'Kund'; $wb['name_txt'] = 'PHP-namn'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 285f7807e8c3f16867a4d3b2f0bfc15af7f29906..74ae16734fcf6936765dc7b6f59eab95a86a8f23 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index d5b1f92bf0e37887ba80140a57fff6d651553832..125e0b1ea22c12167a3fa6c2b3c4a297b1c65648 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -261,6 +261,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; @@ -294,4 +295,9 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_php_list.lng b/interface/web/admin/lib/lang/sk_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/sk_server_php_list.lng +++ b/interface/web/admin/lib/lang/sk_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index be8789a80347ff34217022e783823f8f36a89719..90418e87d5562c20909e541fa9bcfcdf0fc1f0db 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -81,4 +81,13 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/tr.lng b/interface/web/admin/lib/lang/tr.lng index 23dbc45a49cbd41519ab98f4183c5bcda1136148..9b0dfc59ece09eea1096381ee14b430696594f40 100644 --- a/interface/web/admin/lib/lang/tr.lng +++ b/interface/web/admin/lib/lang/tr.lng @@ -1,20 +1,26 @@ diff --git a/interface/web/admin/lib/lang/tr_directive_snippets.lng b/interface/web/admin/lib/lang/tr_directive_snippets.lng index f5034865282259e495dba557390156b9eaa27eb0..448d4536723307c96f69f5a704e7b9a889072536 100644 --- a/interface/web/admin/lib/lang/tr_directive_snippets.lng +++ b/interface/web/admin/lib/lang/tr_directive_snippets.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/admin/lib/lang/tr_directive_snippets_list.lng b/interface/web/admin/lib/lang/tr_directive_snippets_list.lng index 766a194dc1556cc77e5c92c7ce162b5e2f029e65..4a1fb954a526b0100e9ba1076c9672eb92ad04e6 100644 --- a/interface/web/admin/lib/lang/tr_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/tr_directive_snippets_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/admin/lib/lang/tr_firewall.lng b/interface/web/admin/lib/lang/tr_firewall.lng index a45998d4e1dc8c73104456e044b03a2eb9c21b71..9e853c7bde18718ec3a520fc070ea7604f5aa466 100644 --- a/interface/web/admin/lib/lang/tr_firewall.lng +++ b/interface/web/admin/lib/lang/tr_firewall.lng @@ -6,6 +6,7 @@ $wb['tcp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; +$wb['active_txt'] = 'Etkin'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; ?> diff --git a/interface/web/admin/lib/lang/tr_groups.lng b/interface/web/admin/lib/lang/tr_groups.lng index d41fcace9d742d6dfe6f25c578a3a85741cca543..4bf60a284bb3c5502afecb545612bc3a97c36ba8 100644 --- a/interface/web/admin/lib/lang/tr_groups.lng +++ b/interface/web/admin/lib/lang/tr_groups.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/admin/lib/lang/tr_iptables.lng b/interface/web/admin/lib/lang/tr_iptables.lng index dcec556485f843e6da8d7cc49bcce43d0304eba2..970bc23931fe71d106a754b0297b25107aad8d38 100644 --- a/interface/web/admin/lib/lang/tr_iptables.lng +++ b/interface/web/admin/lib/lang/tr_iptables.lng @@ -1,4 +1,5 @@ diff --git a/interface/web/admin/lib/lang/tr_iptables_list.lng b/interface/web/admin/lib/lang/tr_iptables_list.lng index a884ef7f7868bfcf148e208434d975f06276eb84..ba8a1345fef4e1d4444ebdc15f29f595da6a278f 100644 --- a/interface/web/admin/lib/lang/tr_iptables_list.lng +++ b/interface/web/admin/lib/lang/tr_iptables_list.lng @@ -1,4 +1,5 @@ diff --git a/interface/web/admin/lib/lang/tr_language_import.lng b/interface/web/admin/lib/lang/tr_language_import.lng index 581fcb597406e5e5971ab4d8e7356d805a946e9f..be319837ddc222fcc3e4f5054fb45ddbf23476a6 100644 --- a/interface/web/admin/lib/lang/tr_language_import.lng +++ b/interface/web/admin/lib/lang/tr_language_import.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Dil Paketi Yükleme'; $wb['list_desc_txt'] = 'UYARI: Güvenilmeyen kaynaklardan aldığınız dil paketlerini yüklemeyin.'; $wb['language_import_txt'] = 'Yüklenecek Dil Dosyası'; $wb['btn_save_txt'] = 'Dil Paketini Yükle'; -$wb['language_overwrite_txt'] = 'Var olan dosyaları değiştir'; +$wb['language_overwrite_txt'] = 'Var Olan Dosyalar Değiştirilsin'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['ignore_version_txt'] = 'ISPConfig sürümüne bakma'; +$wb['ignore_version_txt'] = 'ISPConfig Sürümü Denetlenmesin'; ?> diff --git a/interface/web/admin/lib/lang/tr_login_as.lng b/interface/web/admin/lib/lang/tr_login_as.lng new file mode 100644 index 0000000000000000000000000000000000000000..b7fc8ff987bebc4ac16d4dd8bcc614cdefbdc13c --- /dev/null +++ b/interface/web/admin/lib/lang/tr_login_as.lng @@ -0,0 +1,12 @@ + diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng index c067f67e88758a46f93cca37080a42849731e871..b2ed0a6da747e7f9970348375bce467099ca4165 100644 --- a/interface/web/admin/lib/lang/tr_remote_action.lng +++ b/interface/web/admin/lib/lang/tr_remote_action.lng @@ -1,12 +1,12 @@
OLUŞABİLECEK RİSKLER SİZE AİTTİR!'; -$wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelleyin'; +$wb['btn_do_txt'] = 'İşlemi Başlat'; +$wb['do_osupdate_caption'] = 'Uzak sunucudaki işletim sistemini güncelle'; +$wb['do_osupdate_desc'] = 'Bu işlem seçilmiş sunucuda komutunu yürütür.

OLUŞABİLECEK RİSKLER SİZE AİTTİR!'; +$wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelle'; $wb['do_ispcupdate_desc'] = 'Bu işlem seçilmiş sunucuda ISPConfig3 güncellemesini yürütür.

OLUŞABİLECEK RİSKLER SÜZE AİTTİR!'; $wb['action_scheduled'] = 'İşlem yürütülmek üzere zamanlandı'; $wb['select_all_server'] = 'Tüm Sunucularda'; $wb['ispconfig_update_title'] = 'ISPConfig güncelleme yönergeleri'; -$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini başlatmak için

ispconfig_update.sh

komutunu yürütün.

Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın'; +$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini başlatmak için

ispconfig_update.sh

komutunu yürütün.

Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın'; ?> diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index d9e11f8308aee177653e7c8580690d98d7f29762..a713cad0d44a15f1741480fbdd6aad2062d23632 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -1,37 +1,37 @@ any)'; -$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; +$wb['remote_access_txt'] = 'Uzaktan Erişim'; +$wb['remote_ips_txt'] = 'Uzaktan Erişim IP Adresleri / Sunucu Adları (, ile ayırarak yazın ve tümü için boş bırakın)'; +$wb['remote_user_error_ips'] = 'Yazılmış IP adresi ya da sunucu adlarından en az biri geçersiz.'; ?> diff --git a/interface/web/admin/lib/lang/tr_server.lng b/interface/web/admin/lib/lang/tr_server.lng index 61e0b7dd6b5791ab3cffafb1a4ecefe32b4fc646..bdc70761e1661e020a215f6c8dcfe925a2b4eaa0 100644 --- a/interface/web/admin/lib/lang/tr_server.lng +++ b/interface/web/admin/lib/lang/tr_server.lng @@ -1,16 +1,16 @@ diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index c7be379260f85b9261dea8d2565fc138773aeaa3..3b63e881f906e277ed46c8ec13b368c4fdb98976 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -13,13 +13,13 @@ $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chroot Uygulamaları'; $wb['jailkit_chroot_cron_programs_txt'] = 'Jailkit Zamanlanmış Görev chroot Uygulamaları'; $wb['website_path_txt'] = 'Web Sitesi Yolu'; $wb['website_symlinks_txt'] = 'Web Sitesi Sembolik Bağlantıları'; -$wb['website_symlinks_rel_txt'] = 'Sembolik Bağlantılar Bağıl Olsun'; +$wb['website_symlinks_rel_txt'] = 'Sembolik Bağlantılar Göreli Olsun'; $wb['website_basedir_txt'] = 'Web Sitesi Klasörü'; $wb['website_autoalias_txt'] = 'Otomatik Web Sitesi Takma Adı'; $wb['website_autoalias_note_txt'] = 'Kodlar:'; -$wb['vhost_conf_dir_txt'] = 'SSunucu Ayar Klasörü'; -$wb['vhost_conf_enabled_dir_txt'] = 'Etkin SSunucu Ayar Klasörü'; -$wb['getmail_config_dir_txt'] = 'Getmail Ayar Klasörü'; +$wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü'; +$wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü'; +$wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü'; $wb['fastcgi_starter_path_txt'] = 'FastCGI Başlatıcı Yolu'; $wb['fastcgi_starter_script_txt'] = 'FastCGI Başlatıcı Betiği'; $wb['fastcgi_alias_txt'] = 'FastCGI Takma Adı'; @@ -28,16 +28,24 @@ $wb['fastcgi_children_txt'] = 'FastCGI Çocuğu'; $wb['fastcgi_max_requests_txt'] = 'FastCGI En Fazla İstek'; $wb['fastcgi_bin_txt'] = 'FastCGI Bin'; $wb['module_txt'] = 'Modül'; -$wb['maildir_path_txt'] = 'Posta Klasörü Yolu'; +$wb['maildir_path_txt'] = 'E-posta Klasörü Yolu'; +$wb['maildir_format_txt'] = 'E-posta Klasörü Biçimi'; $wb['homedir_path_txt'] = 'Kullanıcı Klasörü Yolu'; -$wb['mailuser_uid_txt'] = 'Posta Kullanıcısı UID'; -$wb['mailuser_gid_txt'] = 'Posta Kullanıcısı GID'; -$wb['mailuser_name_txt'] = 'Posta Kullanıcısı Adı'; -$wb['mailuser_group_txt'] = 'Posta Kullanıcısı Grubu'; +$wb['dkim_path_txt'] = 'DKIM Yolu'; +$wb['mailuser_uid_txt'] = 'E-posta Kullanıcısı UID'; +$wb['mailuser_gid_txt'] = 'E-posta Kullanıcısı GID'; +$wb['mailuser_name_txt'] = 'E-posta Kullanıcısı Adı'; +$wb['mailuser_group_txt'] = 'E-posta Kullanıcısı Grubu'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'E-posta Kutusunda Web Sitesinin Linux Kullanıcı Kodu Kullanılsın'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Yalnız tek bir web ve e-posta sunucusu kurulumunda'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Çoklu sunucu kurulumunda UID eşleştirilemez.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'UID eşleştirmesi yalnız dovecot ile kullanılabilir.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Daha önce oluşturulmuş e-posta kullanıcıları varsa UID eşleştirme değiştirilemez.'; $wb['relayhost_txt'] = 'Aktarım Sunucusu'; $wb['relayhost_user_txt'] = 'Aktarım Sunucu Kullanıcı Adı'; $wb['relayhost_password_txt'] = 'Aktarım Sunucu Parolası'; -$wb['mailbox_size_limit_txt'] = 'Posta Kutusu Boyutu Sınırı'; +$wb['reject_sender_login_mismatch_txt'] = 'Gönderen ile Oturum Açmış Kullanıcı Eşleşmiyorsa Reddedilsin'; +$wb['mailbox_size_limit_txt'] = 'E-posta Kutusu Boyutu Sınırı'; $wb['message_size_limit_txt'] = 'İleti Boyutu Sınırı'; $wb['ip_address_txt'] = 'IP Adresi'; $wb['netmask_txt'] = 'Ağ Maskesi'; @@ -51,69 +59,73 @@ $wb['gateway_error_wrong'] = 'Ağ geçidi biçimi geçersiz.'; $wb['hostname_error_empty'] = 'Sunucu adı boş olamaz.'; $wb['hostname_error_regex'] = 'Sunucu adı geçersiz.'; $wb['nameservers_error_empty'] = 'Ad sunucusu boş olamaz.'; -$wb['config_dir_txt'] = 'Ayar Klasörü'; +$wb['config_dir_txt'] = 'Ayarlar Klasörü'; $wb['init_script_txt'] = 'Zamanlanmış Görev Başlatma Betiğinin Adı'; $wb['crontab_dir_txt'] = 'Bireysel Zamanlanmış Görevler Yolu'; -$wb['wget_txt'] = 'wget Yazılımının Yolu'; +$wb['wget_txt'] = 'wget Uygulamasının Yolu'; $wb['web_user_txt'] = 'Apache Kullanıcı Adı'; $wb['web_group_txt'] = 'Apache Grubu'; $wb['security_level_txt'] = 'Güvenlik Düzeyi'; $wb['loglevel_txt'] = 'Günlükleme Düzeyi'; -$wb['apps_vhost_port_txt'] = 'Apps-vhost Kapısı'; -$wb['apps_vhost_ip_txt'] = 'Apps-vhost IP Adresi'; -$wb['apps_vhost_servername_txt'] = 'Apps-vhost Alan Adı'; +$wb['apps_vhost_port_txt'] = 'Uygulama Sanal Sunucusu Kapısı'; +$wb['apps_vhost_ip_txt'] = 'Uygulama Sanal Sunucusu IP Adresi'; +$wb['apps_vhost_servername_txt'] = 'Uygulama Sanal Sunucusu Etki Alanı'; $wb['bind_user_txt'] = 'BIND Kullanıcı Adı'; $wb['bind_group_txt'] = 'BIND Grubu'; -$wb['bind_zonefiles_dir_txt'] = 'BIND zonefiles Klasörü'; +$wb['bind_zonefiles_dir_txt'] = 'BIND Bölge Dosyaları Klasörü'; $wb['named_conf_path_txt'] = 'BIND named.conf Dosyası Yolu'; $wb['bind_user_error_empty'] = 'BIND kullanıcı adı boş olamaz.'; $wb['bind_group_error_empty'] = 'BIND grubu boş olamaz.'; -$wb['bind_zonefiles_dir_error_empty'] = 'BIND zonefiles klasörü boş olamaz.'; +$wb['bind_zonefiles_dir_error_empty'] = 'BIND bölge dosyaları klasörü boş olamaz.'; $wb['named_conf_path_error_empty'] = 'BIND named.conf dosyası yolu boş olamaz.'; $wb['named_conf_local_path_error_empty'] = 'BIND named.conf.local dosyasının yolu boş olamaz.'; -$wb['mail_filter_syntax_txt'] = 'Posta Süzgeci Yazımı'; +$wb['mail_filter_syntax_txt'] = 'E-posta Süzgeci Yazımı'; $wb['pop3_imap_daemon_txt'] = 'POP3/IMAP Sunucusu'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['php_open_basedir_error_empty'] = 'PHP open_basedir boş olamaz.'; $wb['htaccess_allow_override_txt'] = '.htaccess AllowOverride'; $wb['htaccess_allow_override_error_empty'] = '.htaccess AllowOverride boş olamaz.'; -$wb['awstats_conf_dir_txt'] = 'Awstats Ayar Klasörü'; +$wb['awstats_conf_dir_txt'] = 'Awstats Ayarları Klasörü'; $wb['awstats_data_dir_txt'] = 'Awstats Veri Klasörü'; $wb['awstats_pl_txt'] = 'awstats.pl Betiği'; $wb['awstats_buildstaticpages_pl_txt'] = 'awstats_buildstaticpages.pl Betiği'; $wb['backup_dir_txt'] = 'Yedek Klasörü'; +$wb['backup_tmp_txt'] = 'Geçici Zip Yedek Klasörü'; $wb['named_conf_local_path_txt'] = 'BIND named.conf.local Yolu'; $wb['php_ini_path_cgi_txt'] = 'CGI php.ini Yolu'; $wb['php_ini_path_apache_txt'] = 'Apache php.ini Yolu'; -$wb['check_apache_config_txt'] = 'Yeniden başlatıldığında apache ayarları denetlensin'; -$wb['network_config_warning_txt'] = 'Ağ ayarlama seçeneği yalnız Debian ve Ubuntu sunucularda kullanılabilir. Ağ arayüzünüz eth0 değil ise bu seçeneği etkinleştirmeyin.'; +$wb['check_apache_config_txt'] = 'Apache Ayarları Yeniden Başlatmalarda Denetlensin'; +$wb['network_config_warning_txt'] = 'Ağ ayarlama seçeneği yalnız Debian ve Ubuntu sunucularda kullanılabilir. Ağ arayüzü eth0 değil ise bu seçeneği etkinleştirmeyin.'; $wb['CA_path_txt'] = 'CA Yolu'; -$wb['CA_pass_txt'] = 'CA parolası'; +$wb['CA_pass_txt'] = 'CA Parolası'; $wb['fastcgi_config_syntax_txt'] = 'FastCGI Ayar Yazımı'; $wb['backup_mode_txt'] = 'Yedekleme Kipi'; $wb['backup_mode_userzip'] = 'Web kullanıcısına ait web dosyaları ZIP biçiminde yedeklensin'; $wb['backup_mode_rootgz'] = 'Web klasöründeki tüm dosyalar root kullanıcısı olarak yedeklensin'; -$wb['server_type_txt'] = 'Sunucu Tipi'; -$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Vhost ayar klasörü'; -$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx Vhost etkin ayar klasörü'; +$wb['tmpdir_path_error_empty'] = 'tmp klasörü yolu boş olamaz.'; +$wb['tmpdir_path_error_regex'] = 'tmp klasörü yolu geçersiz.'; +$wb['backup_time_txt'] = 'Yedekleme Zamanı'; +$wb['server_type_txt'] = 'Sunucu Türü'; +$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Sanal Sunucu Ayarları Klasörü'; +$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Etkin Nginx sanal sunucu ayarları klasörü'; $wb['nginx_user_txt'] = 'Nginx kullanıcı adı'; $wb['nginx_group_txt'] = 'Nginx grubu'; $wb['nginx_cgi_socket_txt'] = 'Nginx CGI Soketi'; $wb['backup_dir_error_empty'] = 'Yedekleme klasörü boş olamaz.'; -$wb['maildir_path_error_empty'] = 'Posta klasörü yolu boş olamaz.'; +$wb['maildir_path_error_empty'] = 'E-posta klasörü yolu boş olamaz.'; $wb['homedir_path_error_empty'] = 'Kullanıcı klasörü yolu boş olamaz.'; -$wb['mailuser_uid_error_empty'] = 'Posta kullanıcısı UID boş olamaz.'; -$wb['mailuser_gid_error_empty'] = 'Posta kullanıcısı GID boş olamaz.'; -$wb['mailuser_name_error_empty'] = 'Posta kullanıcısı adı boş olamaz.'; -$wb['mailuser_group_error_empty'] = 'Posta kullanıcısı grubu boş olamaz.'; -$wb['getmail_config_dir_error_empty'] = 'Getmail ayar klasörü boş olamaz.'; +$wb['mailuser_uid_error_empty'] = 'E-posta kullanıcısı UID boş olamaz.'; +$wb['mailuser_gid_error_empty'] = 'E-posta kullanıcısı GID boş olamaz.'; +$wb['mailuser_name_error_empty'] = 'E-posta kullanıcısı adı boş olamaz.'; +$wb['mailuser_group_error_empty'] = 'E-posta kullanıcısı grubu boş olamaz.'; +$wb['getmail_config_dir_error_empty'] = 'Getmail ayarları klasörü boş olamaz.'; $wb['website_basedir_error_empty'] = 'Web sitesi kök klasörü boş olamaz.'; $wb['website_path_error_empty'] = 'Web sitesi yolu boş olamaz.'; $wb['website_symlinks_error_empty'] = 'Web sitesi sembolik bağlantısı boş olamaz.'; -$wb['vhost_conf_dir_error_empty'] = 'Vhost ayar klasörü boş olamaz.'; -$wb['vhost_conf_enabled_dir_error_empty'] = 'Vhost etkin ayar klasörü boş olamaz.'; -$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx Vhost ayar klasörü boş olamaz.'; -$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx Vhost etkin ayar klasörü boş olamaz.'; +$wb['vhost_conf_dir_error_empty'] = 'Sanal sunucu ayarları klasörü boş olamaz.'; +$wb['vhost_conf_enabled_dir_error_empty'] = 'Etkin sanal sunucu ayarları klasörü boş olamaz.'; +$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx sanal sunucu ayarları klasörü boş olamaz.'; +$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Etkin nginx sanal sunucu ayarları klasörü boş olamaz.'; $wb['apache_user_error_empty'] = 'Apache kullanıcısı boş olamaz.'; $wb['apache_group_error_empty'] = 'Apache grubu boş olamaz.'; $wb['nginx_user_error_empty'] = 'Nginx kullanıcısı boş olamaz.'; @@ -121,8 +133,8 @@ $wb['nginx_group_error_empty'] = 'Nginx grubu boş olamaz.'; $wb['php_ini_path_apache_error_empty'] = 'Apache php.ini yolu boş olamaz.'; $wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini yolu boş olamaz.'; $wb['nginx_cgi_socket_empty'] = 'Nginx CGI soketi boş olamaz.'; -$wb['apps_vhost_port_error_empty'] = 'Apps-vhost kapısı boş olamaz.'; -$wb['apps_vhost_ip_error_empty'] = 'Apps-vhost IP adresi boş olamaz.'; +$wb['apps_vhost_port_error_empty'] = 'Uygulama sanal sunucusu kapısı boş olamaz.'; +$wb['apps_vhost_ip_error_empty'] = 'Uygulama sanal sunucusu IP adresi boş olamaz.'; $wb['fastcgi_starter_path_error_empty'] = 'FastCGI başlatıcı yolu boş olamaz.'; $wb['fastcgi_starter_script_error_empty'] = 'FastCGI başlatıcı betiği boş olamaz.'; $wb['fastcgi_alias_error_empty'] = 'FastCGI takma adı boş olamaz.'; @@ -137,7 +149,7 @@ $wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit zamanlanmış görev $wb['vlogger_config_dir_error_empty'] = 'Ayarlar klasörü boş olamaz.'; $wb['cron_init_script_error_empty'] = 'Zamanlanmış görevler başlatma betiği adı boş olamaz.'; $wb['crontab_dir_error_empty'] = 'Bireysel zamanlanmış görev yolu boş olamaz.'; -$wb['cron_wget_error_empty'] = 'wget yazılımı yolu boş olamaz.'; +$wb['cron_wget_error_empty'] = 'wget uygulaması yolu boş olamaz.'; $wb['php_fpm_init_script_txt'] = 'PHP-FPM Başlatma Betiği'; $wb['php_fpm_init_script_error_empty'] = 'PHP-FPM başlatma betiği boş olamaz.'; $wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini Yolu'; @@ -148,11 +160,12 @@ $wb['php_fpm_start_port_txt'] = 'PHP-FPM Başlangıç Kapısı'; $wb['php_fpm_start_port_error_empty'] = 'PHP-FPM başlangıç kapısı boş olamaz.'; $wb['php_fpm_socket_dir_txt'] = 'PHP-FPM Soket Klasörü'; $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM soket klasörü boş olamaz.'; -$wb['try_rescue_txt'] = 'Hizmetler izlensin ve sorun çıktığında yeniden başlatılsın'; -$wb['do_not_try_rescue_httpd_txt'] = 'HTTPD izlenmesin'; -$wb['do_not_try_rescue_mysql_txt'] = 'MySQL izlenmesin'; -$wb['do_not_try_rescue_mail_txt'] = 'E-posta izlenmesin'; -$wb['rescue_description_txt'] = 'Uyarı: mysql sunucusunu kapatmak istiyorsanız \\"MySQL izlenmesin\\" seçeneğini işaretleyip 2-3 dakika bekleyin.
2-3 dakika beklemezseniz, kurtarma işlemi mysql sunucusunu yeniden başlatmaya çalışır!'; +$wb['try_rescue_txt'] = 'Hizmetler İzlensin ve Sorun Çıktığında Yeniden Başlatılsın'; +$wb['do_not_try_rescue_httpd_txt'] = 'HTTPD İzlenmesin'; +$wb['do_not_try_rescue_mongodb_txt'] = 'MongoDB İzlenmesin'; +$wb['do_not_try_rescue_mysql_txt'] = 'MySQL İzlenmesin'; +$wb['do_not_try_rescue_mail_txt'] = 'E-posta İzlenmesin'; +$wb['rescue_description_txt'] = 'Uyarı: mysql sunucusunu kapatmak istiyorsanız "MySQL İzlenmesin" seçeneğini etkinleştirip 2-3 dakika bekleyin.
2-3 dakika beklemezseniz, kurtarma işlemi mysql sunucusunu yeniden başlatmaya çalışır!'; $wb['enable_sni_txt'] = 'SNI Kullanılsın'; $wb['set_folder_permissions_on_update_txt'] = 'Güncellenirken klasör izinleri ayarlansın'; $wb['add_web_users_to_sshusers_group_txt'] = 'Web kullanıcıları -sshusers- grubuna eklensin'; @@ -163,20 +176,20 @@ $wb['realtime_blackhole_list_note_txt'] = '(RBL adlarını virgül ile ayırarak $wb['ssl_settings_txt'] = 'SSL Ayarları'; $wb['permissions_txt'] = 'İzinler'; $wb['php_settings_txt'] = 'PHP Ayarları'; -$wb['apps_vhost_settings_txt'] = 'Uygulama SSunucu Ayarları'; +$wb['apps_vhost_settings_txt'] = 'Uygulama Sanal Sunucu Ayarları'; $wb['awstats_settings_txt'] = 'AWStats Ayarları'; $wb['firewall_txt'] = 'Güvenlik Duvarı'; -$wb['mailbox_quota_stats_txt'] = 'Posta Kutusu Kota İstatistikleri'; -$wb['enable_ip_wildcard_txt'] = 'IP genel karakteri (*) kullanılsın'; +$wb['mailbox_quota_stats_txt'] = 'E-posta Kutusu Kota İstatistikleri'; +$wb['enable_ip_wildcard_txt'] = 'IP Genel Karakteri (*) Kullanılsın'; $wb['web_folder_protection_txt'] = 'Web klasörleri ayarlanamasın (genişletilmiş öznitelikler)'; -$wb['overtraffic_notify_admin_txt'] = 'Yöneticiye aşırı trafik bildirimi gönderilsin'; -$wb['overtraffic_notify_client_txt'] = 'Müşteriye aşırı trafik bildirimi gönderilsin'; +$wb['overtraffic_notify_admin_txt'] = 'Trafik Aşımı Bildirimi Yöneticiye Gönderilsin'; +$wb['overtraffic_notify_client_txt'] = 'Trafik Aşımı Bildirimi Müşteriye Gönderilsin'; $wb['rbl_error_regex'] = 'Lütfen geçerli RBL sunucu adları yazın.'; -$wb['overquota_notify_admin_txt'] = 'Yöneticiye kota uyarıları gönderilsin'; -$wb['overquota_notify_client_txt'] = 'Müşteriye kota uyarıları gönderilsin'; -$wb['overquota_notify_onok_txt'] = 'Müşteriye kota tamam iletisi gönderilsin'; -$wb['overquota_notify_freq_txt'] = 'Kota uyarılarının kaç günde bir gönderileceği'; -$wb['overquota_notify_freq_note_txt'] = '0 = ileti yalnız bir kez gönderilir, yinelenmez'; +$wb['overquota_notify_admin_txt'] = 'Kota Uyarıları Yöneticiye Gönderilsin'; +$wb['overquota_notify_client_txt'] = 'Kota Uyarıları Müşteriye Gönderilsin'; +$wb['overquota_notify_onok_txt'] = 'Kota Tamam İletisi Müşteriye Gönderilsin'; +$wb['overquota_notify_freq_txt'] = 'Kota Uyarısı Gönderim Sıklığı (Gün)'; +$wb['overquota_notify_freq_note_txt'] = '0 yazıldığında ileti yalnız bir kez gönderilir, yinelenmez'; $wb['admin_notify_events_txt'] = 'Yönetici Bildirim Düzeyi'; $wb['no_notifications_txt'] = 'Bildirim Gönderilmesin'; $wb['monit_url_txt'] = 'Monit Adresi'; @@ -189,24 +202,35 @@ $wb['munin_user_txt'] = 'Munin Kullanıcı Adı'; $wb['munin_password_txt'] = 'Munin Parolası'; $wb['munin_url_error_regex'] = 'Munin adresi geçersiz'; $wb['munin_url_note_txt'] = 'Kod:'; +$wb['v6_prefix_txt'] = 'IPv6 Ön Eki'; +$wb['vhost_rewrite_v6_txt'] = 'Yansı Üzerinde IPv6 Yeniden Yazılsın'; +$wb['v6_prefix_length'] = 'Ön ek tanımlanmış IPv6 adresine göre çok uzun '; $wb['backup_dir_is_mount_txt'] = 'Yedek Klasörü Takılı mı?'; +$wb['backup_dir_mount_cmd_txt'] = 'Mount komutu, yedek klasörü takılı değil ise'; +$wb['backup_delete_txt'] = 'Etki alanı ya da web sitesi silindiğinde yedekler de silinsin'; +$wb['overquota_db_notify_admin_txt'] = 'Veritabanı Kotası Bildirimleri Yöneticiye Gönderilsin'; +$wb['overquota_db_notify_client_txt'] = 'Veritabanı Kotası Bildirimleri Müşteriye Gönderilsin'; +$wb['monitor_system_updates_txt'] = 'Linux Güncellemeleri Denetlensin'; +$wb['php_handler_txt'] = 'Varsayılan PHP İşleyici'; +$wb['disabled_txt'] = 'Devre Dışı'; +$wb['dkim_strength_txt'] = 'DKIM zorluğu'; $wb['monitor_system_updates_txt'] = 'Linux Güncelleme Denetimi'; $wb['invalid_apache_user_txt'] = 'Apache kullanıcısı geçersiz.'; $wb['invalid_apache_group_txt'] = 'Apache grubu geçersiz.'; $wb['backup_dir_error_regex'] = 'Yedek klasörü geçersiz.'; -$wb['maildir_path_error_regex'] = 'Posta klasörü yolu geçersiz.'; +$wb['maildir_path_error_regex'] = 'E-posta klasörü yolu geçersiz.'; $wb['homedir_path_error_regex'] = 'Kullanıcı klasörü yolu geçersiz.'; -$wb['mailuser_name_error_regex'] = 'Posta kullanıcısı adı geçersiz.'; -$wb['mailuser_group_name_error_regex'] = 'Posta kullanıcısı grup adı geçersiz.'; -$wb['mailuser_uid_error_range'] = 'Posta kullanıcısı UID değeri >= 2000 olmalıdır'; -$wb['mailuser_gid_error_range'] = 'Posta kullanıcısı GID değeri >= 2000 olmalıdır'; -$wb['getmail_config_dir_error_regex'] = 'Getmail ayar klasörü geçersiz.'; +$wb['mailuser_name_error_regex'] = 'E-posta kullanıcısı adı geçersiz.'; +$wb['mailuser_group_name_error_regex'] = 'E-posta kullanıcısı grup adı geçersiz.'; +$wb['mailuser_uid_error_range'] = 'E-posta kullanıcısı UID değeri >= 2000 olmalıdır'; +$wb['mailuser_gid_error_range'] = 'E-posta kullanıcısı GID değeri >= 2000 olmalıdır'; +$wb['getmail_config_dir_error_regex'] = 'Getmail ayarları klasörü geçersiz.'; $wb['website_basedir_error_regex'] = 'Web sitesi kök klasörü geçersiz.'; $wb['website_symlinks_error_regex'] = 'Web sitesi sembolik bağlantıları geçersiz.'; -$wb['vhost_conf_dir_error_regex'] = 'Vhost ayar klasörü geçersiz.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Etkin vhost ayar klasörü geçersiz.'; -$wb['nginx_vhost_conf_dir_error_regex'] = 'Nginx ayar klasörü geçersiz.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Etkin nginx ayar klasörü geçersiz.'; +$wb['vhost_conf_dir_error_regex'] = 'Sanal sunucu ayarları klasörü geçersiz.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Etkin sanal sunucu ayarları klasörü geçersiz.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Nginx ayarları klasörü geçersiz.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Etkin nginx ayarları klasörü geçersiz.'; $wb['ca_path_error_regex'] = 'CA yolu geçersiz.'; $wb['invalid_nginx_user_txt'] = 'nginx kullanıcısı geçersiz.'; $wb['invalid_nginx_group_txt'] = 'nginx grubu geçersiz.'; @@ -225,7 +249,7 @@ $wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl boş ola $wb['awstats_buildstaticpages_pl_error_regex'] = 'awstats_buildstaticpages.pl yolu geçersiz.'; $wb['invalid_bind_user_txt'] = 'BIND kullanıcısı geçersiz.'; $wb['invalid_bind_group_txt'] = 'BIND grubu geçersiz.'; -$wb['bind_zonefiles_dir_error_regex'] = 'BIND zonefiles klasörü geçersiz.'; +$wb['bind_zonefiles_dir_error_regex'] = 'BIND bölge dosyaları klasörü geçersiz.'; $wb['named_conf_path_error_regex'] = 'named.conf yolu geçersiz.'; $wb['named_conf_local_path_error_regex'] = 'named.conf.local yolu geçersiz.'; $wb['fastcgi_starter_path_error_regex'] = 'fastcgi başlatıcı yolu geçersiz.'; @@ -237,61 +261,37 @@ $wb['jailkit_chroot_home_error_regex'] = 'Jailkit chroot kök klasörü geçersi $wb['jailkit_chroot_app_sections_error_regex'] = 'Jailkit chroot bölümleri geçersiz.'; $wb['jailkit_chroot_app_programs_error_regex'] = 'Jailkit chroot app uygulama yazılımları geçersiz.'; $wb['jailkit_chroot_cron_programs_error_regex'] = 'Jailkit chroot zamanlanmış görev yazılımları geçersiz.'; -$wb['vlogger_config_dir_error_regex'] = 'Vlogger ayar klasörü geçersiz.'; +$wb['vlogger_config_dir_error_regex'] = 'Vlogger ayarları klasörü geçersiz.'; $wb['cron_init_script_error_regex'] = 'Zamanlanmış görev başlatma betiği geçersiz.'; $wb['crontab_dir_error_regex'] = 'Zamanlanmış görev klasörü geçersiz.'; $wb['cron_wget_error_regex'] = 'Zamanlanmış görev wget yolu geçersiz.'; $wb['network_filesystem_txt'] = 'Ağ Dosya Sistemi'; -$wb['maildir_format_txt'] = 'Maildir Format'; -$wb['dkim_path_txt'] = 'DKIM Path'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; -$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; -$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; -$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; -$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; -$wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; -$wb['backup_time_txt'] = 'Backup time'; -$wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; -$wb['v6_prefix_txt'] = 'IPv6 Prefix'; -$wb['vhost_rewrite_v6_txt'] = 'Rewrite IPv6 on Mirror'; -$wb['v6_prefix_length'] = 'Prefix too long according to defined IPv6 '; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; -$wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; -$wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; -$wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; -$wb['php_handler_txt'] = 'Default PHP Handler'; -$wb['disabled_txt'] = 'Disabled'; -$wb['dkim_strength_txt'] = 'DKIM strength'; -$wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; -$wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; -$wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; -$wb['web_settings_txt'] = 'Web Server'; -$wb['xmpp_server_txt'] = 'XMPP Server'; -$wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; -$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time'; -$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360'; +$wb['php_ini_check_minutes_txt'] = 'Her X dakikada php.ini dosyasındaki değişiklikler denetlensin'; +$wb['php_ini_check_minutes_error_empty'] = 'php.ini dosyasındaki değişikliklerin kaç dakikada bir denetleneceğini yazın.'; +$wb['php_ini_check_minutes_info_txt'] = '0 = denetim yapılmaz'; +$wb['enable_spdy_txt'] = 'SPDY/HTTP2 Kullanılsın'; +$wb['web_settings_txt'] = 'Web Sunucu'; +$wb['xmpp_server_txt'] = 'XMPP Sunucu'; +$wb['xmpp_use_ipv6_txt'] = 'IPv6 Kullanılsın'; +$wb['xmpp_bosh_max_inactivity_txt'] = 'BOSH için en uzun işlem yapılmama süresi'; +$wb['xmpp_bosh_timeout_range_wrong'] = '15 ile 360 arasında bir bosh zaman aşımı süresi yazın'; $wb['xmpp_module_saslauth'] = 'saslauth'; -$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)'; -$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)'; -$wb['xmpp_ports_txt'] = 'Component ports'; +$wb['xmpp_server_admins_txt'] = 'Sunucu Yöneticileri (JID)'; +$wb['xmpp_modules_enabled_txt'] = 'Sunucu genelinde etkinleştirilecek uygulama ekleri (her satıra bir tane yazın)'; +$wb['xmpp_ports_txt'] = 'Bileşen Kapı Numaraları'; $wb['xmpp_port_http_txt'] = 'HTTP'; $wb['xmpp_port_https_txt'] = 'HTTPS'; $wb['xmpp_port_pastebin_txt'] = 'Pastebin'; $wb['xmpp_port_bosh_txt'] = 'BOSH'; -$wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; -$wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; -$wb['skip_le_check_txt'] = 'Skip Lets Encrypt Check'; -$wb['migration_mode_txt'] = 'Server Migration Mode'; -$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; -$wb['backup_tmp_txt'] = 'Backup tmp directory for zip'; -$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.'; -$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.'; -$wb['logging_txt'] = 'Store website access and error logs'; -$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.'; -$wb['log_retention_txt'] = 'Log retention (days)'; -$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; -$wb['php_default_name_txt'] = 'Description Default PHP-Version'; -$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; -$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['disable_bind_log_txt'] = 'UYARI günlük düzeyi iletileri için bind9 iletileri devre dışı bırakılsın'; +$wb['apps_vhost_enabled_txt'] = 'Uygulama Sanal Sunucusu Kullanılsın'; +$wb['skip_le_check_txt'] = 'Lets Encrypt Denetimi Atlansın'; +$wb['migration_mode_txt'] = 'Sunucu Aktarımı Kipi'; +$wb['nginx_enable_pagespeed_txt'] = 'Pagespeed uygulamasını etkinleştirir'; +$wb['logging_txt'] = 'Web Sitesi Erişim ve Hata Günlükleri Kaydedilsin'; +$wb['logging_desc_txt'] = 'Değişiklikleri var olan sitelere uygulamak için Araçlar > Yeniden Eşitle komutunu kullanın. Apache için, erişim ve hata günlükleri anonimleştirilebilir. nginx için, only erişim günlüğü anonimleştirilebilir, hata günlüğüne IP adresleri kaydedilir.'; +$wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)'; +$wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 değerinden büyük bir sayı olmalıdır'; +$wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması'; +$wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boş olamaz'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_ip.lng b/interface/web/admin/lib/lang/tr_server_ip.lng index 3ebdbd08300b73d8204d6d3dba757e40a97fec8d..4b2cb1187d410b70e40e8d71611bb16b82557865 100644 --- a/interface/web/admin/lib/lang/tr_server_ip.lng +++ b/interface/web/admin/lib/lang/tr_server_ip.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/admin/lib/lang/tr_server_ip_map.lng b/interface/web/admin/lib/lang/tr_server_ip_map.lng index 68b196fb23a8a805455d768e32ed419d405f9ecb..c05e19c4b1f808b77b2864c3afdd0d4eec22dd20 100644 --- a/interface/web/admin/lib/lang/tr_server_ip_map.lng +++ b/interface/web/admin/lib/lang/tr_server_ip_map.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/admin/lib/lang/tr_server_ip_map_list.lng b/interface/web/admin/lib/lang/tr_server_ip_map_list.lng index 1fedc10b2e2590cb4c252d9c0ff90eeaf565d68b..e0ee9a97291383cdeb70995255faf9550891b2fd 100644 --- a/interface/web/admin/lib/lang/tr_server_ip_map_list.lng +++ b/interface/web/admin/lib/lang/tr_server_ip_map_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/admin/lib/lang/tr_server_list.lng b/interface/web/admin/lib/lang/tr_server_list.lng index 9f791f78a16bb0958dbfdadbc34614ddb5c0f5e8..8e22a526c8e74e79b65f1762455d16abaddfd5a4 100644 --- a/interface/web/admin/lib/lang/tr_server_list.lng +++ b/interface/web/admin/lib/lang/tr_server_list.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/admin/lib/lang/tr_server_php_list.lng b/interface/web/admin/lib/lang/tr_server_php_list.lng index 3b1d39bdd207365341b506f80de8d892191909f9..06319e9855ce0a8f4971c5b9c858c191daaca84c 100644 --- a/interface/web/admin/lib/lang/tr_server_php_list.lng +++ b/interface/web/admin/lib/lang/tr_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['add_new_record_txt'] = 'PHP Sürümü Ekle'; $wb['client_id_txt'] = 'Müşteri'; $wb['name_txt'] = 'PHP Adı'; +$wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_package.lng b/interface/web/admin/lib/lang/tr_software_package.lng index dfd498183241f07c009fa7badb0883aeb41aa954..addda60195a1bb25f115b50b835b59153eea8030 100644 --- a/interface/web/admin/lib/lang/tr_software_package.lng +++ b/interface/web/admin/lib/lang/tr_software_package.lng @@ -2,5 +2,5 @@ $wb['package_title_txt'] = 'Paket Başlığı'; $wb['package_key_txt'] = 'Paket Anahtarı'; $wb['Software Package'] = 'Yazılım Paketi'; -$wb['Modify software package details'] = 'Yazılım paketi ayrıntılarını düzenleyin'; +$wb['Modify software package details'] = 'Yazılım paketi bilgilerini düzenle'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_update_list.lng b/interface/web/admin/lib/lang/tr_software_update_list.lng index 4ee824a6e1e30c517ab81f1325f733d013a8ee34..a462d90faa7dc79180330f9ebe69d176cdc5117d 100644 --- a/interface/web/admin/lib/lang/tr_software_update_list.lng +++ b/interface/web/admin/lib/lang/tr_software_update_list.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng index 0029214773cda0aef35f2125ba5454dbe14845a5..72aa9d1813bdcb4574c45990a8974aa512ff0909 100644 --- a/interface/web/admin/lib/lang/tr_users.lng +++ b/interface/web/admin/lib/lang/tr_users.lng @@ -1,22 +1,22 @@ diff --git a/interface/web/admin/lib/lang/tr_users_list.lng b/interface/web/admin/lib/lang/tr_users_list.lng index 31dbee70001ecd4705a5610b0b0c211bc2438ec6..182ab3ca7c0a4d1eb38a2f06cf0bcf8e874f112a 100644 --- a/interface/web/admin/lib/lang/tr_users_list.lng +++ b/interface/web/admin/lib/lang/tr_users_list.lng @@ -1,6 +1,6 @@ load('tform_actions'); class page_action extends tform_actions { + function onShow() { + global $app, $conf; + + // get the config + $app->uses('getconf'); + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + + if($web_config['server_type'] == 'nginx'){ + unset($app->tform->formDef["tabs"]["fastcgi"]); + unset($app->tform->formDef["tabs"]["vlogger"]); + } + + parent::onShow(); + } + function onSubmit() { global $app, $conf; @@ -73,18 +88,26 @@ class page_action extends tform_actions { $server_id = $this->id; $this->dataRecord = $app->getconf->get_server_config($server_id, $section); + + if($section == 'mail'){ + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $rspamd_url = 'https://'.$server_config['hostname'].':8081/rspamd/'; + } } $record = $app->tform->getHTML($this->dataRecord, $this->active_tab, 'EDIT'); $record['id'] = $this->id; + if(isset($rspamd_url)) $record['rspamd_url'] = $rspamd_url; $app->tpl->setVar($record); } function onShowEnd() { global $app; - - $app->tpl->setVar('server_name', $app->functions->htmlentities($app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ? AND ((SELECT COUNT(*) FROM server) > 1)", $this->id)['server_name'])); + + $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ? AND ((SELECT COUNT(*) FROM server) > 1)", $this->id); + $app->tpl->setVar('server_name', $app->functions->htmlentities($tmp['server_name'])); + unset($tmp); parent::onShowEnd(); } @@ -110,6 +133,14 @@ class page_action extends tform_actions { } } + if($section === 'mail') { + if(isset($server_config_array['mail']['rspamd_available']) && $server_config_array['mail']['rspamd_available'] === 'y') { + $this->dataRecord['rspamd_available'] = 'y'; + } else { + $this->dataRecord['rspamd_available'] = 'n'; + } + } + if($app->tform->errorMessage == '') { $server_config_array[$section] = $app->tform->encode($this->dataRecord, $section); $server_config_str = $app->ini_parser->get_ini_string($server_config_array); @@ -121,6 +152,56 @@ class page_action extends tform_actions { } } + function onAfterUpdate() { + global $app; + + if(isset($this->dataRecord['content_filter'])){ + $app->uses('ini_parser'); + $old_config = $app->ini_parser->parse_ini_string(stripslashes($this->oldDataRecord['config'])); + if($this->dataRecord['content_filter'] == 'rspamd' && $old_config['mail']['content_filter'] != $this->dataRecord['content_filter']){ + + $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE server_id = ?", intval($this->id)); + if(is_array($spamfilter_users) && !empty($spamfilter_users)){ + foreach($spamfilter_users as $spamfilter_user){ + $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); + } + } + + $spamfilter_wblists = $app->db->queryAllRecords("SELECT * FROM spamfilter_wblist WHERE server_id = ?", intval($this->id)); + if(is_array($spamfilter_wblists) && !empty($spamfilter_wblists)){ + foreach($spamfilter_wblists as $spamfilter_wblist){ + $app->db->datalogUpdate('spamfilter_wblist', $spamfilter_wblist, 'wblist_id', $spamfilter_wblist["wblist_id"], true); + } + } + + $mail_users = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ?", intval($this->id)); + if(is_array($mail_users) && !empty($mail_users)){ + foreach($mail_users as $mail_user){ + if($mail_user['autoresponder'] == 'y'){ + $mail_user['autoresponder'] = 'n'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + $mail_user['autoresponder'] = 'y'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + } elseif($mail_user['move_junk'] == 'y') { + $mail_user['move_junk'] = 'n'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + $mail_user['move_junk'] = 'y'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + } else { + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + } + } + } + + $mail_forwards = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE server_id = ?", intval($this->id)); + if(is_array($mail_forwards) && !empty($mail_forwards)){ + foreach($mail_forwards as $mail_forward){ + $app->db->datalogUpdate('mail_forwarding', $mail_forward, 'forwarding_id', $mail_forward["forwarding_id"], true); + } + } + } + } + } } $app->tform_actions = new page_action; diff --git a/interface/web/admin/software_package_del.php b/interface/web/admin/software_package_del.php index 31aeb1c09b07e38492823abb41a19bcf2f5c334d..e1387f39c43459b7261f1d90d19798a78c4a7d3e 100644 --- a/interface/web/admin/software_package_del.php +++ b/interface/web/admin/software_package_del.php @@ -36,6 +36,9 @@ $app->auth->check_module_permissions('admin'); $app->auth->check_security_permissions('admin_allow_software_packages'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); +// Check CSRF Token +$app->auth->csrf_token_check('GET'); + $software_update_inst_id = $app->functions->intval($_GET['software_update_inst_id']); if($software_update_inst_id > 0) { diff --git a/interface/web/admin/software_package_install.php b/interface/web/admin/software_package_install.php index ccbfd73ebe6e2c3411f1a1fa32dd579c06b45ccd..6a5326d51a1bed56d1d1b2faf862d8aa38533f3d 100644 --- a/interface/web/admin/software_package_install.php +++ b/interface/web/admin/software_package_install.php @@ -38,6 +38,13 @@ $app->auth->check_security_permissions('admin_allow_software_packages'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); +// Check CSRF Token +if(count($_POST) > 0) { + $app->auth->csrf_token_check('POST'); +} else { + $app->auth->csrf_token_check('GET'); +} + $package_name = $_REQUEST['package']; $install_server_id = $app->functions->intval($_REQUEST['server_id']); $install_key = trim($_REQUEST['install_key']); diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php index b6664d4234ce27fdfc398877ad77e31f80d7e181..8a21696c7f398600ba7083b3f95d3e8f548de825 100644 --- a/interface/web/admin/software_package_list.php +++ b/interface/web/admin/software_package_list.php @@ -145,6 +145,9 @@ $app->uses('tpl'); $app->tpl->newTemplate("form.tpl.htm"); $app->tpl->setInclude('content_tpl', 'templates/software_package_list.htm'); +$csrf_token = $app->auth->csrf_token_get('software_package_list'); +$_csrf_id = $csrf_token['csrf_id']; +$_csrf_key = $csrf_token['csrf_key']; $servers = $app->db->queryAllRecords('SELECT server_id, server_name FROM server ORDER BY server_name'); $packages = $app->db->queryAllRecords('SELECT * FROM software_package'); @@ -167,12 +170,14 @@ if(is_array($packages) && count($packages) > 0) { if($p['package_installable'] == 'no') { $installed_txt .= $s['server_name'].": ".$app->lng("Package can not be installed.")."
"; } else { - $installed_txt .= $s['server_name'].": Install now
"; + $installed_txt .= $s['server_name'].": Install now
"; } } } $packages[$key]['software_update_inst_id'] = intval($inst['software_update_inst_id']); $packages[$key]['installed'] = $installed_txt; + $packages[$key]['csrf_id'] = $_csrf_id; + $packages[$key]['csrf_key'] = $_csrf_key; } $app->tpl->setVar('has_packages', 1); } else { diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm index eab53c79bbd82bb07bffce5775ea812006e8a53f..72eb82369c485c5b6bc44bfe89a0baccfd774b2f 100644 --- a/interface/web/admin/templates/directive_snippets_edit.htm +++ b/interface/web/admin/templates/directive_snippets_edit.htm @@ -18,7 +18,9 @@
{tmpl_var name='snippet'}
-   Nginx {tmpl_var name='variables_txt'}: {DOCROOT}, {FASTCGIPASS}, {PHPFALLBACKFASTCGIPASS}
+   Nginx {tmpl_var name='variables_txt'}: {DOCROOT}, {FASTCGIPASS}, {PHPFALLBACKFASTCGIPASS}
+   Apache {tmpl_var name='variables_txt'}: {DOCROOT}, {DOCROOT_CLIENT} +
diff --git a/interface/web/admin/templates/directive_snippets_list.htm b/interface/web/admin/templates/directive_snippets_list.htm index 602c71a07c3ab866fe7fd21e82d478708f550c7d..84332824960fa233023d47aba017f6f47af7171a 100644 --- a/interface/web/admin/templates/directive_snippets_list.htm +++ b/interface/web/admin/templates/directive_snippets_list.htm @@ -40,7 +40,7 @@ {tmpl_var name="customer_viewable"} {tmpl_var name="master_directive_snippets_id"} - + diff --git a/interface/web/admin/templates/firewall_list.htm b/interface/web/admin/templates/firewall_list.htm index ac85f7e4fe1ae1b584315b0401bba1373e05a97a..b40414a5daf5fc771e773ccfc916699ac220c6fb 100644 --- a/interface/web/admin/templates/firewall_list.htm +++ b/interface/web/admin/templates/firewall_list.htm @@ -40,7 +40,7 @@ {tmpl_var name="tcp_port"} {tmpl_var name="udp_port"} - + diff --git a/interface/web/admin/templates/groups_list.htm b/interface/web/admin/templates/groups_list.htm index d53ee58b249d19934cc34f5dc44771ea9874fa90..972ae64144159c6a1b7602732aef1fef84cc8df3 100644 --- a/interface/web/admin/templates/groups_list.htm +++ b/interface/web/admin/templates/groups_list.htm @@ -35,7 +35,7 @@ {tmpl_var name="name"} {tmpl_var name="description"} - + diff --git a/interface/web/admin/templates/iptables_list.htm b/interface/web/admin/templates/iptables_list.htm index e1fcb3dc034564c4701446a8769009a42d7a7634..2adbd046275dee1c53cb22b0790ed2d6062e4243 100644 --- a/interface/web/admin/templates/iptables_list.htm +++ b/interface/web/admin/templates/iptables_list.htm @@ -51,7 +51,7 @@ {tmpl_var name="state"} {tmpl_var name="target"} - + diff --git a/interface/web/admin/templates/remote_user_list.htm b/interface/web/admin/templates/remote_user_list.htm index de65c64536cabab9d86d2286d7889ed2cc6e0f3c..7189dc20df8cc3bb1e8d4ef3d632d15a4104efdc 100644 --- a/interface/web/admin/templates/remote_user_list.htm +++ b/interface/web/admin/templates/remote_user_list.htm @@ -33,7 +33,7 @@ {tmpl_var name="remote_userid"} {tmpl_var name="remote_username"} - + diff --git a/interface/web/admin/templates/server_config_list.htm b/interface/web/admin/templates/server_config_list.htm index ef0935552af746e10252b01a63f2063668dea312..9284c5c35466ef5f0aa2ceba42fd4c0a6b9945b5 100644 --- a/interface/web/admin/templates/server_config_list.htm +++ b/interface/web/admin/templates/server_config_list.htm @@ -24,7 +24,7 @@ {tmpl_var name="server_name"} - + diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index c1531c654a18b1a430bb1a856600667d4fdeab58..6ba37104ef111f91d555c2fd8610e88f7dae6660 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -44,6 +44,20 @@ {tmpl_var name='mail_filter_syntax'}
+
+ +
+
+
+ + +
+
+ +
+
@@ -125,3 +139,23 @@ + diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index bb61d866ca0a64b5381ecb51d94a9c7ac04d24a8..eb285bbc078c6663ad4681e16493d4f131088555 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -256,7 +256,7 @@
-
+
@@ -293,6 +293,18 @@ {tmpl_var name='php_handler'}
+
+ +
+ {tmpl_var name='php_fpm_incron_reload'} +
+
+
+ +
+
diff --git a/interface/web/admin/templates/server_ip_list.htm b/interface/web/admin/templates/server_ip_list.htm index 892c263f20e2b3304c6fc40a5419a81472d2c4a8..c612e1ca643e0dc67a5be4db315b39581070c3d7 100644 --- a/interface/web/admin/templates/server_ip_list.htm +++ b/interface/web/admin/templates/server_ip_list.htm @@ -45,7 +45,7 @@ {tmpl_var name="virtualhost"} {tmpl_var name="virtualhost_port"} - + diff --git a/interface/web/admin/templates/server_ip_map_list.htm b/interface/web/admin/templates/server_ip_map_list.htm index a186e49b032d106bf3f1e85a6cc7bd2da059fc0b..ea23856022c5b328ad1e3a00a17237c700b349a3 100644 --- a/interface/web/admin/templates/server_ip_map_list.htm +++ b/interface/web/admin/templates/server_ip_map_list.htm @@ -32,7 +32,7 @@ {tmpl_var name="source_ip"} {tmpl_var name="destination_ip"} - + diff --git a/interface/web/admin/templates/server_list.htm b/interface/web/admin/templates/server_list.htm index 1152909320f758d7e9fbe086296a4c1e7255c46b..313fad7ff113b055b2cb6b2ab649fa040d43195e 100644 --- a/interface/web/admin/templates/server_list.htm +++ b/interface/web/admin/templates/server_list.htm @@ -45,7 +45,7 @@ {tmpl_var name="vserver_server"} {tmpl_var name="xmpp_server"} - + diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm index 5a6392eea33a18664e1d9459ba05142d38c3768b..9833eb1e7ee35e1f18dcaee356628d82c62b63af 100644 --- a/interface/web/admin/templates/server_php_list.htm +++ b/interface/web/admin/templates/server_php_list.htm @@ -39,7 +39,7 @@ {tmpl_var name="client_id"} {tmpl_var name="name"} - + diff --git a/interface/web/admin/templates/software_package_list.htm b/interface/web/admin/templates/software_package_list.htm index 31969c0575543e91949f3219df0c32b72256f3b6..e69e3780af4e3ccff25906c9a5867f46b8b19f5c 100644 --- a/interface/web/admin/templates/software_package_list.htm +++ b/interface/web/admin/templates/software_package_list.htm @@ -33,7 +33,7 @@ ispapp{tmpl_var name="package_id"} - +
diff --git a/interface/web/admin/templates/software_repo_list.htm b/interface/web/admin/templates/software_repo_list.htm index 8b1a48b56262181a20a12d40dec98a0606aab49e..d408896de6f943ba0a5d23240f37eefb58dc858a 100644 --- a/interface/web/admin/templates/software_repo_list.htm +++ b/interface/web/admin/templates/software_repo_list.htm @@ -37,7 +37,7 @@ {tmpl_var name="repo_name"} {tmpl_var name="repo_url"} - + diff --git a/interface/web/admin/templates/system_config_dns_ca.htm b/interface/web/admin/templates/system_config_dns_ca.htm new file mode 100644 index 0000000000000000000000000000000000000000..7f430a85e393b8b06b5ba120a9c2828211b85447 --- /dev/null +++ b/interface/web/admin/templates/system_config_dns_ca.htm @@ -0,0 +1,15 @@ +

+

+ +{tmpl_var name='dns_ca'} +{tmpl_var name='dns_ca_list'} + diff --git a/interface/web/admin/templates/system_config_dns_ca_edit.htm b/interface/web/admin/templates/system_config_dns_ca_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..739c3f93fea5c3dac21b9e902d6f9d02d7aa0de2 --- /dev/null +++ b/interface/web/admin/templates/system_config_dns_ca_edit.htm @@ -0,0 +1,41 @@ + + +
{tmpl_var name='error'}
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
checked />
+
+ +
+ +
checked />
+
+ +
+ +
checked />
+
+ + +
+ + +
+
diff --git a/interface/web/admin/templates/system_config_dns_ca_list.htm b/interface/web/admin/templates/system_config_dns_ca_list.htm new file mode 100644 index 0000000000000000000000000000000000000000..7af2b78d13c74bcc038bfda70c01deef34ecfce8 --- /dev/null +++ b/interface/web/admin/templates/system_config_dns_ca_list.htm @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name="active"}{tmpl_var name="name"} + + +
+
diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm index 8ab35989ff277c39cef2f354b8f01ebe2e7a316d..4ff4a64affe202fe5dad3d413dae7d269e24414e 100644 --- a/interface/web/admin/templates/system_config_sites_edit.htm +++ b/interface/web/admin/templates/system_config_sites_edit.htm @@ -63,6 +63,12 @@ {tmpl_var name='reseller_can_use_options'} +
+ +
+ {tmpl_var name='web_php_options'} +
+
{tmpl_var name='ca_list'}
+
+ +
+ +
+
+ + + +
+ +
+
+ +
+ +
readonly />
+
{tmpl_var name='ca_hostname_note_txt'}
+
+ +
+ +
+
{tmpl_var name='ca_options_note_txt'}
+
+ +
+ +
+
+ +
+ +
{tmpl_var name='active'}
+
+ + + + + + + +
+ + +
+ + + + diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm index 630c18559b9ffe25449cdd504cd1f527778209cf..4b7646a398d41ea6ddaffe3651f782b1efd55070 100644 --- a/interface/web/dns/templates/dns_dmarc_edit.htm +++ b/interface/web/dns/templates/dns_dmarc_edit.htm @@ -147,7 +147,7 @@
- + {tmpl_var name='active'}
diff --git a/interface/web/dns/templates/dns_slave_admin_list.htm b/interface/web/dns/templates/dns_slave_admin_list.htm index f4395849be181b2c9c3f7faecb0025f5d5874804..3afaa91175c0e2bea00792d99ddd70ef1559ccc8 100644 --- a/interface/web/dns/templates/dns_slave_admin_list.htm +++ b/interface/web/dns/templates/dns_slave_admin_list.htm @@ -59,7 +59,7 @@ {tmpl_var name="origin"} {tmpl_var name="ns"} - + diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm index 27916f4b25976827f1c342742f81f7c63b22e1d7..799f14ba28700ce1d454813a407a71372b8ad78e 100644 --- a/interface/web/dns/templates/dns_slave_list.htm +++ b/interface/web/dns/templates/dns_slave_list.htm @@ -56,7 +56,7 @@ {tmpl_var name="origin"} {tmpl_var name="ns"} - + diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index fbdc0398ed2ee42c60be9905e62c278b314b9794..79faa645fe607fb9adee9e3ebf3e15d85c9f6f42 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -64,7 +64,7 @@ {tmpl_var name="ns"} {tmpl_var name="mbox"} - + diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index 22cd19484e1ee29d95ea60e936fee92f4a1319dc..df579e852aa3424bcbdb084340a0163a23a2f76d 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -61,7 +61,7 @@ {tmpl_var name="ns"} {tmpl_var name="mbox"} - + diff --git a/interface/web/dns/templates/dns_template_edit.htm b/interface/web/dns/templates/dns_template_edit.htm index 132cc92810846675e769c56decc87ac4df8df314..9de8c93447f466f0394ba52fb82a972886b7ce06 100644 --- a/interface/web/dns/templates/dns_template_edit.htm +++ b/interface/web/dns/templates/dns_template_edit.htm @@ -16,7 +16,10 @@
-
+
+   DNS {tmpl_var name='placeholder_txt'}: {DOMAIN}, {IP}, {IPV6}, {NS1}, {NS2}, {EMAIL} + +
@@ -31,4 +34,4 @@
-
\ No newline at end of file +
diff --git a/interface/web/dns/templates/dns_template_list.htm b/interface/web/dns/templates/dns_template_list.htm index f7816cf4d8aed22884545a539eb007e8e14e7560..7622666940936551cabc7da72b3c4d4d5829547c 100644 --- a/interface/web/dns/templates/dns_template_list.htm +++ b/interface/web/dns/templates/dns_template_list.htm @@ -34,7 +34,7 @@ {tmpl_var name="visible"} {tmpl_var name="name"} - + diff --git a/interface/web/help/form/support_message.tform.php b/interface/web/help/form/support_message.tform.php index caf1a010c60b355acf77a6e79eaca63556bd3bc9..6313b4da674376b021a07af493b49cf980b3a3bc 100644 --- a/interface/web/help/form/support_message.tform.php +++ b/interface/web/help/form/support_message.tform.php @@ -136,7 +136,7 @@ $form["tabs"]['message'] = array ( 'maxlength' => '30' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/help/lib/lang/br.lng b/interface/web/help/lib/lang/br.lng index a745e60960fbdc6aa849dec27f86fea2e592cc56..217d3afa148487947cd79e9546a8e8bba8a97425 100644 --- a/interface/web/help/lib/lang/br.lng +++ b/interface/web/help/lib/lang/br.lng @@ -1,14 +1,14 @@ diff --git a/interface/web/help/lib/lang/br_faq_form.lng b/interface/web/help/lib/lang/br_faq_form.lng index 331268a7229d41bc4b7b7db229c1b4da4ead8bbf..b24ec1c58fbd389599e3e87e48d859c106bb542c 100644 --- a/interface/web/help/lib/lang/br_faq_form.lng +++ b/interface/web/help/lib/lang/br_faq_form.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/help/lib/lang/br_faq_manage_questions_list.lng b/interface/web/help/lib/lang/br_faq_manage_questions_list.lng index 8bda9d7f42644f3c0118a244b295aeb7c3fa60b3..ee9f769d91b241416324754c305ce761f162b959 100644 --- a/interface/web/help/lib/lang/br_faq_manage_questions_list.lng +++ b/interface/web/help/lib/lang/br_faq_manage_questions_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/help/lib/lang/br_faq_sections_form.lng b/interface/web/help/lib/lang/br_faq_sections_form.lng index f3f9f9f583355a863452b1dc44875bd356d67ef8..2fb709cbd2378c11cbb5dd7eefe4a1d3351bb17d 100644 --- a/interface/web/help/lib/lang/br_faq_sections_form.lng +++ b/interface/web/help/lib/lang/br_faq_sections_form.lng @@ -1,3 +1,3 @@ diff --git a/interface/web/help/lib/lang/br_help_faq_sections_list.lng b/interface/web/help/lib/lang/br_help_faq_sections_list.lng index f1f549e6154df18679ed80089bd3e31fc7f6259d..aec81d7b59292fa6aae7452ada45e625dc199cfc 100644 --- a/interface/web/help/lib/lang/br_help_faq_sections_list.lng +++ b/interface/web/help/lib/lang/br_help_faq_sections_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index 83097915bf345a5cd62ab30fd8debbcc24151e16..dad8ce7fd574d0d48873df37d5899b298d9fbc52 100644 --- a/interface/web/help/lib/lang/br_support_message.lng +++ b/interface/web/help/lib/lang/br_support_message.lng @@ -1,16 +1,16 @@ diff --git a/interface/web/help/lib/lang/br_support_message_list.lng b/interface/web/help/lib/lang/br_support_message_list.lng index 7d888659d84eb6e6dbf4425299e26ecc4b672e01..e4add42b799839edd88f5761d09a8ecbeb1cf9a5 100644 --- a/interface/web/help/lib/lang/br_support_message_list.lng +++ b/interface/web/help/lib/lang/br_support_message_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/help/lib/lang/tr.lng b/interface/web/help/lib/lang/tr.lng index 4aeaa0ac0fe81488a1b47f9ca59c1eb1b122b1ec..c6b0877af53222562f0bdec07e332ce7b8d9d84e 100644 --- a/interface/web/help/lib/lang/tr.lng +++ b/interface/web/help/lib/lang/tr.lng @@ -11,4 +11,5 @@ $wb['FAQ Sections'] = 'SSS Bölümleri'; $wb['Manage Sections'] = 'Bölüm Yönetimi'; $wb['Add a Question & Answer Pair'] = 'Soru-Yanıt Ekle'; $wb['Manage Questions'] = 'Soru Yönetimi'; + ?> diff --git a/interface/web/help/lib/lang/tr_support_message.lng b/interface/web/help/lib/lang/tr_support_message.lng index fcd785e627bd52ec59458995e89f09a79e2faafe..ae60d28a196ff19a9eab2ea98b06a90c5d4e8cb3 100644 --- a/interface/web/help/lib/lang/tr_support_message.lng +++ b/interface/web/help/lib/lang/tr_support_message.lng @@ -7,10 +7,10 @@ $wb['tstamp_txt'] = 'Zaman damgası'; $wb['reply_txt'] = 'Yanıt'; $wb['date_txt'] = 'Tarih'; $wb['support_request_subject_txt'] = 'Destek İsteği'; -$wb['support_request_txt'] = 'Bir destek isteğinde bulundunuz. Lütfen bu e-postay yanıtlamayın. Destek isteğinizi ISPConfig üzerinden izleyin.'; +$wb['support_request_txt'] = 'Bir destek isteğinde bulundunuz. Lütfen bu e-postayı yanıtlamayın. Destek isteğinizi ISPConfig üzerinden izleyin.'; $wb['answer_to_support_request_txt'] = 'Destek isteğiniz yanıtlandı. Lütfen bu e-postayı yanıtlamayın. Destek isteğinizi ISPConfig üzerinden izleyin.'; $wb['answer_to_support_request_sent_txt'] = 'Destek isteğinize yazdığınız yanıt gönderildi. Lütfen bu e-potayı yanıtlamayın.'; $wb['support_request_sent_txt'] = 'Destek isteğiniz gönderildi. Lütfen bu e-postayı yanıtlamayın.'; $wb['recipient_or_sender_email_address_not_valid_txt'] = 'Gönderen ya da alıcı adresi geçersiz olduğundan bu ileti gönderilemedi.'; -$wb['subject_is_empty'] = 'The subject can not be empty.'; +$wb['subject_is_empty'] = 'Konu boş olamaz.'; ?> diff --git a/interface/web/help/templates/support_message_list.htm b/interface/web/help/templates/support_message_list.htm index 3094b96728705129dbc112494e666631ef4559c1..c0b4b75d744964b600b634f51f4bd14b5e6f4c12 100644 --- a/interface/web/help/templates/support_message_list.htm +++ b/interface/web/help/templates/support_message_list.htm @@ -37,7 +37,7 @@ {tmpl_var name="subject"} {tmpl_var name="tstamp"} - + diff --git a/interface/web/login/lib/lang/br.lng b/interface/web/login/lib/lang/br.lng index 379b719f4da95cce95203cb9671ae3134d95e64b..9baaf55212a4c2bc9bc25666b66ed8dfb40a1ca9 100644 --- a/interface/web/login/lib/lang/br.lng +++ b/interface/web/login/lib/lang/br.lng @@ -13,18 +13,18 @@ $wb['user_regex_error'] = 'O nome do usuário contém menos de 1 ou mais de 64 c $wb['pw_error_length'] = 'Tamanho da senha não pode ser maior do que 64 caracteres.'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; -$wb['login_button_txt'] = 'Entrar'; +$wb['login_button_txt'] = 'Acessar'; $wb['pw_lost_txt'] = 'Esqueceu a senha?'; $wb['error_maintenance_mode'] = 'Esta instalação do ISPConfig atualmente está sob manutenção. Nós retornaremos em breve. Obrigado por sua paciência.'; -$wb['login_txt'] = 'Acesso'; +$wb['login_txt'] = 'Acessar'; $wb['pw_reset_txt'] = 'Redefinir senha'; $wb['pw_button_txt'] = 'Reenviar senha'; $wb['email_txt'] = 'E-mail'; -$wb['theme_not_compatible'] = 'O tema escolhido não é compatível com a versão atual do ISPConfig. Por favor, procure por uma nova versão deste tema compatível com ISPConfig.
O tema padrão foi configurado automaticamente.'; +$wb['theme_not_compatible'] = 'O tema escolhido não é compatível com a versão atual do ISPConfig. Por favor, procure por uma nova versão deste tema, compatível com ISPConfig.
O tema padrão foi configurado automaticamente.'; $wb['back_txt'] = 'Voltar'; $wb['email_error'] = 'O e-mail contém caracteres não permitidos ou formato é inválido.'; $wb['stay_logged_in_txt'] = 'Manter-me conectado'; -$wb['lost_password_function_disabled_txt'] = 'Função de redefinir senha indisponível para este usuário.'; +$wb['lost_password_function_disabled_txt'] = 'Função "redefinir senha" indisponível para este usuário.'; $wb['pw_reset_act'] = 'Você receberá um link de ativação. Por favor, acesse o link de ativação para confirmar sua nova senha.'; $wb['pw_reset_act_mail_title'] = 'Confirmar nova senha para o painel de controle ISPConfig'; $wb['pw_reset_act_mail_msg'] = 'Por favor, confirme se você deseja reiniciar sua senha do painel de controle ISPConfig, acessando o link de ativação: '; diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 4c02c963c2bf51eff7fca0391abe787126a9d01d..72c2c97e408f995aedce3bff5c0b461d535f80e8 100644 --- a/interface/web/login/lib/lang/br_login_as.lng +++ b/interface/web/login/lib/lang/br_login_as.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng index 46a3eab288473b2380d365fe6845a339dc33a725..63031d4d09acfffe0ab3bc0f64997949a92294cd 100644 --- a/interface/web/login/lib/lang/ru_login_as.lng +++ b/interface/web/login/lib/lang/ru_login_as.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/login/lib/lang/tr.lng b/interface/web/login/lib/lang/tr.lng index c50ea5c8a2f2d5e4ab91f95e4427160c630ac021..863a6310d57e5d692bbf7fd8003c3c2f9633163b 100644 --- a/interface/web/login/lib/lang/tr.lng +++ b/interface/web/login/lib/lang/tr.lng @@ -3,12 +3,15 @@ $wb['error_user_password_empty'] = 'Kullanıcı adı ya da parola boş'; $wb['error_user_password_incorrect'] = 'Kullanıcı adı ya da parola hatalı'; $wb['error_user_blocked'] = 'Kullanıcı engellenmiş.'; $wb['error_user_too_many_logins'] = 'Fazla sayıda hatalı oturum açmayı denediniz, Lütfen 15 dakika sonra yeniden deneyin.'; -$wb['pass_reset_txt'] = 'Yazdığınız e-posta adresi hesabınızdakine uyarsa, yeni bir parola oluşturularak e-posta adresinize gönderilir.'; +$wb['pass_reset_txt'] = 'Yazdığınız e-posta adresi hesabınızdakine uyarsa, yeni bir parola üretilerek e-posta adresinize gönderilir.'; $wb['pw_reset'] = 'Parolanız sıfırlandı ve e-posta adresinize gönderildi.'; +$wb['pw_reset_act'] = 'Size bir etkinleştirme bağlantısı gönderildi. Parola isteğinizi onaylamak için bağlantıya tıklayın.'; $wb['pw_error'] = 'Kullanıcı adı ya da e-posta adresiniz doğru değil.'; $wb['pw_error_noinput'] = 'Lütfen e-posta adresinizi ya da kullanıcı adınızı yazın.'; $wb['pw_reset_mail_msg'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı. Yeni parolanız: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı'; +$wb['pw_reset_act_mail_title'] = 'ISPConfig 3 Control Panel parola sıfırlama isteğini onaylayın'; +$wb['pw_reset_act_mail_msg'] = 'Lütfen ISPConfig 3 Control Panel hesabınızın parolasını sıfırlamak için şu bağlantıya tıklayın: '; $wb['user_regex_error'] = 'Kullanıcı adınız izin verilmeyen karakterlerden oluşuyor ya da 64 karakterden uzun.'; $wb['pw_error_length'] = 'Parola 64 karakterden uzun.'; $wb['email_error'] = 'E-posta adresi izin verilmeyen karakterlerden oluşuyor ya da biçimi hatalı.'; @@ -24,11 +27,8 @@ $wb['back_txt'] = 'Geri'; $wb['error_maintenance_mode'] = 'ISPConfig bakımda. Kısa bir süre sonra yeniden çalışıyor olacak, sabrınız için teşekkürler.'; $wb['theme_not_compatible'] = 'Seçilmiş tema geçerli ISPConfig sürümü ile uyumlu değil. Lütfen temanın yeni sürümünü araştırın.
Varsayılan tema etkinleştirildi.'; $wb['stay_logged_in_txt'] = 'Oturumum açık kalsın'; -$wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.'; -$wb['pw_reset_act_mail_title'] = 'Confirm ISPConfig 3 Control panel password reset'; -$wb['pw_reset_act_mail_msg'] = 'Please confirm that your want to reset your ISPConfig 3 control panel account password by visiting the following activation link: '; -$wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.'; -$wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.'; -$wb['lost_password_function_expired_txt'] = 'This activation link has expired. Please request a new one.'; -$wb['lost_password_function_denied_txt'] = 'This activation link is not valid.'; +$wb['lost_password_function_disabled_txt'] = 'Bu kullanıcı parolamı unuttum özelliğini kullanamaz.'; +$wb['lost_password_function_wait_txt'] = 'Henüz yeni parola isteğinde bulunamazsınız. Lütfen bir kaç dakika bekleyin.'; +$wb['lost_password_function_expired_txt'] = 'Bu etkinleştirme bağlantısının süresi geçmiş. Lütfen yeni bir parola sıfırlama isteğinde bulunun.'; +$wb['lost_password_function_denied_txt'] = 'Bu etkinleştirme bağlantısı geçersiz.'; ?> diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng index f7f12feeff4124ca933211de12edd708dd0ec508..8a54a8efd9889f48caeebf2555d79c9ea66782f6 100644 --- a/interface/web/login/lib/lang/tr_login_as.lng +++ b/interface/web/login/lib/lang/tr_login_as.lng @@ -1,12 +1,13 @@ diff --git a/interface/web/login/login_as.php b/interface/web/login/login_as.php index 159f15b77ea390805c8f4f8ba3e5a855cb421459..4c2fb33393e6d6e555d350515750ebd5bf66972d 100644 --- a/interface/web/login/login_as.php +++ b/interface/web/login/login_as.php @@ -90,10 +90,8 @@ echo '



'.$wb['login_1_txt'].' ' . $dbData['username'] . '?
'.$wb['login_2_txt'].'
-
- - -
+ + diff --git a/interface/web/login/logout.php b/interface/web/login/logout.php index dc1c9e4a422055d1d3bdf450136d40b53c682887..dadd871bab6214d2214058f125492eed78d664b4 100644 --- a/interface/web/login/logout.php +++ b/interface/web/login/logout.php @@ -48,10 +48,8 @@ if ((isset($_SESSION['s_old']) && ($_SESSION['s_old']['user']['typ'] == 'admin' echo '



'.str_replace('{UTYPE}', $utype, $wb['login_as_or_logout_txt']).'
-
- - -
+ + diff --git a/interface/web/login/templates/index.htm b/interface/web/login/templates/index.htm index 9a75a66cbda5003c367ceda39aaa93d34c22a23c..e03e58f1f1451c0716e433f63ae557534f2137ed 100644 --- a/interface/web/login/templates/index.htm +++ b/interface/web/login/templates/index.htm @@ -4,7 +4,7 @@
- +
diff --git a/interface/web/login/templates/password_reset.htm b/interface/web/login/templates/password_reset.htm index 66faf490f420d2a6a577811ad3ee0fd02a640b81..49fa528834e2c9c81b091aae132855b044ce3e61 100644 --- a/interface/web/login/templates/password_reset.htm +++ b/interface/web/login/templates/password_reset.htm @@ -9,7 +9,7 @@
- +
diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index 2a1a7561677d8195e823e0ed487f8d71447d7c75..412958a31500cacaa5cebf5d61a7c133a2973519 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -40,7 +40,11 @@ $domain_id = $_GET['domain_id']; if($type == 'create_dkim' && $domain_id != ''){ $dkim_public = $_GET['dkim_public']; $dkim_selector = $_GET['dkim_selector']; - $domain=@(is_numeric($domain_id))?$app->db->queryOneRecord("SELECT domain FROM domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r'), $domain_id)['domain']:$domain_id; + $domain = $domain_id; + if(is_numeric($domain_id)) { + $temp = $app->db->queryOneRecord("SELECT domain FROM domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r'), $domain_id); + $domain = $temp['domain']; + } $rec = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = ?", $domain); $server_id = $rec['server_id']; $maildomain = $rec['domain']; @@ -50,8 +54,9 @@ if($type == 'create_dkim' && $domain_id != ''){ if ($dkim_strength=='') $dkim_strength = 2048; $rnd_val = $dkim_strength * 10; - exec('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null', $output, $result); - exec('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null', $privkey, $result); + $app->system->exec_safe('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null'); + $app->system->exec_safe('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null'); + $privkey = $app->system->last_exec_out(); unlink("../../temp/random-data.bin"); $dkim_private=''; foreach($privkey as $values) $dkim_private=$dkim_private.$values."\n"; @@ -75,12 +80,14 @@ if($type == 'create_dkim' && $domain_id != ''){ $selector = 'invalid domain or selector'; } unset($dkim_public); - exec('echo '.escapeshellarg($dkim_private).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result); + $app->system->exec_safe('echo ?|openssl rsa -pubout -outform PEM 2> /dev/null', $dkim_private); + $pubkey = $app->system->last_exec_out(); foreach($pubkey as $values) $dkim_public=$dkim_public.$values."\n"; $selector = $dkim_selector; } else { unset($dkim_public); - exec('echo '.escapeshellarg($dkim_private).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result); + $app->system->exec_safe('echo ?|openssl rsa -pubout -outform PEM 2> /dev/null', $dkim_private); + $pubkey = $app->system->last_exec_out(); foreach($pubkey as $values) $dkim_public=$dkim_public.$values."\n"; $selector = $dkim_selector; } diff --git a/interface/web/mail/form/mail_alias.tform.php b/interface/web/mail/form/mail_alias.tform.php index a004203622d3c6df0e6b9186a1f8829fa0ee0e66..9434ba3eecc080c588fc8527974805bf0ba73c44 100644 --- a/interface/web/mail/form/mail_alias.tform.php +++ b/interface/web/mail/form/mail_alias.tform.php @@ -137,7 +137,7 @@ $form["tabs"]['alias'] = array ( 'value' => array(1 => 'y', 0 => 'n') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php index 66db01e5aa51c5823670826acae8398372239036..a0d10249898695f4d3b8dd124684f167adb4045f 100644 --- a/interface/web/mail/form/mail_aliasdomain.tform.php +++ b/interface/web/mail/form/mail_aliasdomain.tform.php @@ -128,7 +128,7 @@ $form["tabs"]['alias'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php index 8b268147fb0a18301d33da51722729f7585187c4..957f35b95bfad2bb6263b79afd4f3e4f62104941 100644 --- a/interface/web/mail/form/mail_blacklist.tform.php +++ b/interface/web/mail/form/mail_blacklist.tform.php @@ -107,7 +107,7 @@ $form["tabs"]['blacklist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_content_filter.tform.php b/interface/web/mail/form/mail_content_filter.tform.php index 550ae6b5d695743184d99859790a52445eb222f3..88f16298f75fabfd4af8407b4eedd9b7a9b44919 100644 --- a/interface/web/mail/form/mail_content_filter.tform.php +++ b/interface/web/mail/form/mail_content_filter.tform.php @@ -107,7 +107,7 @@ $form["tabs"]['filter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php index 06fb0906c34e693f994c088274c03b265b61abb7..5c8fa0185ac9bf0364315836152b1e7e87ff0548 100644 --- a/interface/web/mail/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -143,7 +143,7 @@ $form["tabs"]['domain'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index 8d0c0296bdcbe756479d3a127316b6fc4702178f..34d26088cd78ecdacd1093231b756752a26098a2 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -131,8 +131,14 @@ $form["tabs"]['catchall'] = array ( 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), + 'greylisting' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(1 => 'y', 0 => 'n') + ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_forward.tform.php b/interface/web/mail/form/mail_forward.tform.php index 3c902b4221f717c456133c748238c8e1d77304cd..003e678455ec6929921bd333f31e9546c0600fd2 100644 --- a/interface/web/mail/form/mail_forward.tform.php +++ b/interface/web/mail/form/mail_forward.tform.php @@ -133,7 +133,7 @@ $form["tabs"]['forward'] = array ( 'value' => array(1 => 'y', 0 => 'n') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_get.tform.php b/interface/web/mail/form/mail_get.tform.php index 9f7de76e013273ad615082307b38f2b518c4a09b..9082c368664a2df1598c4b69e78e1bc1a94d6ea4 100644 --- a/interface/web/mail/form/mail_get.tform.php +++ b/interface/web/mail/form/mail_get.tform.php @@ -173,7 +173,7 @@ $form["tabs"]['mailget'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_relay_recipient.tform.php b/interface/web/mail/form/mail_relay_recipient.tform.php index 34c23861e47fbfd5f8b01fded64c9f62f643c4b4..e3d8faa1edc8f83bdbd58358be28c06b90383405 100644 --- a/interface/web/mail/form/mail_relay_recipient.tform.php +++ b/interface/web/mail/form/mail_relay_recipient.tform.php @@ -107,7 +107,7 @@ $form["tabs"]['relay_recipient'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_spamfilter.tform.php b/interface/web/mail/form/mail_spamfilter.tform.php index fb9a3c311be5679cc1f2d963cf4e16d00da2ceca..2890cfb8b634f9531631f09010bb33d6938e00fb 100644 --- a/interface/web/mail/form/mail_spamfilter.tform.php +++ b/interface/web/mail/form/mail_spamfilter.tform.php @@ -114,7 +114,7 @@ $form["tabs"]['spamfilter'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'STRIPNL') ), - 'default' => '***SPAM***', + 'default' => '***SPAM*** ', 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -145,7 +145,7 @@ $form["tabs"]['spamfilter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php index f55541346ce171beba72964a13499e4a248c3722..b40ad86e8ad15a590f0f57efcd961fa272020776 100644 --- a/interface/web/mail/form/mail_transport.tform.php +++ b/interface/web/mail/form/mail_transport.tform.php @@ -122,7 +122,7 @@ $form["tabs"]['transport'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 631c507f900be8866843cb02c9d2bb509fcea648..da386f584415d1b5bdf9e23c17618b036317e576 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -472,7 +472,7 @@ if ($backup_available) { 'value' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10') ), ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ), 'plugins' => array ( diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index becb09351e869b3e4e3ccfd73ab635a1de40beff..be5fba3ed7fdbbefed342b303458bb6620f58990 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -88,13 +88,12 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt') + 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt') ), 'op' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - //'value' => array('contains'=>'contains_txt','is' => 'Is','begins'=>'Begins with','ends'=>'Ends with') 'value' => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt') ), 'searchterm' => array ( @@ -137,7 +136,7 @@ $form["tabs"]['filter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php index 00fc971647ef9c87fea815e4f2fb958d03f182c0..edd32483712bedea9b430d2f5cba5de346a73fb7 100644 --- a/interface/web/mail/form/mail_whitelist.tform.php +++ b/interface/web/mail/form/mail_whitelist.tform.php @@ -113,7 +113,7 @@ $form["tabs"]['whitelist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_blacklist.tform.php b/interface/web/mail/form/spamfilter_blacklist.tform.php index 3514eed4344fa049149bc32ec96d9dd40addffb9..7d212d9317303a894e9150c54bb8a540a3f5bde6 100644 --- a/interface/web/mail/form/spamfilter_blacklist.tform.php +++ b/interface/web/mail/form/spamfilter_blacklist.tform.php @@ -127,7 +127,7 @@ $form["tabs"]['blacklist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_config.tform.php b/interface/web/mail/form/spamfilter_config.tform.php index 39c1b35621575c1f7c1f4d5e8f0ba20e70176e83..2217cbbd314c35b36d7fa1307421518df587b5a0 100644 --- a/interface/web/mail/form/spamfilter_config.tform.php +++ b/interface/web/mail/form/spamfilter_config.tform.php @@ -121,7 +121,7 @@ $form["tabs"]['server'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -247,7 +247,7 @@ $form["tabs"]['mail'] = array ( 'maxlength' => '15' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -272,7 +272,7 @@ $form["tabs"]['getmail'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php index 31e8b8092a0833023f677dc7ea9a6ccef7e40a0a..ef777a8884e079575f46b5a10df10a1e3a1ac6c6 100644 --- a/interface/web/mail/form/spamfilter_policy.tform.php +++ b/interface/web/mail/form/spamfilter_policy.tform.php @@ -87,6 +87,21 @@ $form["tabs"]['policy'] = array ( 'default' => 'N', 'value' => array('N' => 'No', 'Y' => 'Yes') ), + //################################# + // END Datatable fields + //################################# + ) +); + + +$form["tabs"]['amavis'] = array ( + 'title' => "Amavis", + 'width' => 100, + 'template' => "templates/spamfilter_amavis_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# 'banned_files_lover' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', @@ -117,21 +132,6 @@ $form["tabs"]['policy'] = array ( 'default' => 'N', 'value' => array('N' => 'No', 'Y' => 'Yes') ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['quarantine'] = array ( - 'title' => "Quarantine", - 'width' => 100, - 'template' => "templates/spamfilter_quarantine_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# 'virus_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -216,20 +216,6 @@ $form["tabs"]['quarantine'] = array ( 'width' => '30', 'maxlength' => '255' ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['taglevel'] = array ( - 'title' => "Tag-Level", - 'width' => 100, - 'template' => "templates/spamfilter_taglevel_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# 'spam_tag_level' => array ( 'datatype' => 'DOUBLE', 'formtype' => 'TEXT', @@ -304,21 +290,6 @@ $form["tabs"]['taglevel'] = array ( 'width' => '30', 'maxlength' => '255' ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['other'] = array ( - 'title' => "Other", - 'width' => 100, - 'template' => "templates/spamfilter_other_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# 'addr_extension_virus' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -486,11 +457,52 @@ $form["tabs"]['other'] = array ( 'width' => '30', 'maxlength' => '255' ), - //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); -?> +$form["tabs"]['rspamd'] = array ( + 'title' => "Rspamd", + 'width' => 100, + 'template' => "templates/spamfilter_rspamd_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'rspamd_spam_greylisting_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'rspamd_spam_tag_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'rspamd_spam_tag_method' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'rewrite_subject', + 'value' => array('add_header' => $app->lng('add_header_txt'), 'rewrite_subject' => $app->lng('rewrite_subject_txt')) + ), + 'rspamd_spam_kill_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + //################################# + // END Datatable fields + //################################# + ) +); diff --git a/interface/web/mail/form/spamfilter_users.tform.php b/interface/web/mail/form/spamfilter_users.tform.php index 8ef3c4e131872ca1bba7cc0458ca133d71d4e870..65f196b9879be55f37d170b3a447f8395f0ec946 100644 --- a/interface/web/mail/form/spamfilter_users.tform.php +++ b/interface/web/mail/form/spamfilter_users.tform.php @@ -133,7 +133,7 @@ $form["tabs"]['users'] = array ( ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_whitelist.tform.php b/interface/web/mail/form/spamfilter_whitelist.tform.php index f0802fa4912c2e8f298f221e3387470f963bc0f8..202a3c6810a9d48ef2e1c73074bba182ec88511c 100644 --- a/interface/web/mail/form/spamfilter_whitelist.tform.php +++ b/interface/web/mail/form/spamfilter_whitelist.tform.php @@ -127,7 +127,7 @@ $form["tabs"]['whitelist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/lib/lang/ar.lng b/interface/web/mail/lib/lang/ar.lng index e12b05e27821ca1d7c92da82a9ce411396bf041f..3d15a518a14f6aafd76f24677f0792d27922caef 100644 --- a/interface/web/mail/lib/lang/ar.lng +++ b/interface/web/mail/lib/lang/ar.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filters'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng index af8e42f24b43389d54a12266d528a9ef6372bd08..d1b54151d2c9d6c97134b3e52fd99ccc6be2102e 100644 --- a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Invalid domain name od domain contains invalid char $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts for your account is reached.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ar_mail_user_filter.lng b/interface/web/mail/lib/lang/ar_mail_user_filter.lng index b5d31b589cc1a7b118c1f9516a9d895d4f3037bb..9a15472e88734a485d954d89d58944a8a72a4516 100644 --- a/interface/web/mail/lib/lang/ar_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ar_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/ar_spamfilter_policy.lng b/interface/web/mail/lib/lang/ar_spamfilter_policy.lng index e876330a68c7c365b12bf9a3f3cf6b5a652a6093..683b378c21e0eebc93556c6914165bc708521c02 100644 --- a/interface/web/mail/lib/lang/ar_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ar_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/bg.lng b/interface/web/mail/lib/lang/bg.lng index a1299f4472da747979ee1231b57a193761e113ba..c117c863a2d6bf4cc86bc55ed66bee0f0331d7c5 100644 --- a/interface/web/mail/lib/lang/bg.lng +++ b/interface/web/mail/lib/lang/bg.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Глобални филтри'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng index 5db26b11a1eadd45e0132c6916b0b6697eb99401..06f1f01e11708e8921c96e39290bc03d8f6fa33d 100644 --- a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Грешен домейн или непозволе $wb['limit_mailcatchall_txt'] = 'Максималният брой записи за catchall в твоят акоунт е достигнат.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/bg_spamfilter_policy.lng b/interface/web/mail/lib/lang/bg_spamfilter_policy.lng index e876330a68c7c365b12bf9a3f3cf6b5a652a6093..683b378c21e0eebc93556c6914165bc708521c02 100644 --- a/interface/web/mail/lib/lang/bg_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/bg_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/br.lng b/interface/web/mail/lib/lang/br.lng index 3ae45b5db0c1c101eb97653392d025b27fa2d361..77483426122e7ec99a4b746bf78d35b24a5865a4 100644 --- a/interface/web/mail/lib/lang/br.lng +++ b/interface/web/mail/lib/lang/br.lng @@ -1,48 +1,56 @@ +$wb['Mailbox quota'] = 'Cota da conta de e-mail'; +$wb['add_header_txt'] = 'Cabeçalho (adicionar "X-Spam: Yes")'; +$wb['rewrite_subject_txt'] = 'Assunto (adicionar "***SPAM***" no início)'; diff --git a/interface/web/mail/lib/lang/br_backup_stats_list.lng b/interface/web/mail/lib/lang/br_backup_stats_list.lng index 9d078177121655157423d9747625715849760ef5..482e9132003ec55606af23a18c4e7b31ad5ad968 100644 --- a/interface/web/mail/lib/lang/br_backup_stats_list.lng +++ b/interface/web/mail/lib/lang/br_backup_stats_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/br_mail_alias.lng b/interface/web/mail/lib/lang/br_mail_alias.lng index 993dd71d2a0e7d35b3d2ca589ef51a9b2693e320..636195718062c6c89109f1e457f36069a1535a71 100644 --- a/interface/web/mail/lib/lang/br_mail_alias.lng +++ b/interface/web/mail/lib/lang/br_mail_alias.lng @@ -1,17 +1,17 @@ diff --git a/interface/web/mail/lib/lang/br_mail_alias_list.lng b/interface/web/mail/lib/lang/br_mail_alias_list.lng index 69fb77a779c9f0bbeafa56ac660bd986a12a879c..5e96f0fb303640c12f6642cf7ce6c9e62299382d 100644 --- a/interface/web/mail/lib/lang/br_mail_alias_list.lng +++ b/interface/web/mail/lib/lang/br_mail_alias_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/br_mail_aliasdomain.lng b/interface/web/mail/lib/lang/br_mail_aliasdomain.lng index 68986f536ee8bff0f678240b611967f24f6e2d78..a0f4e5067e578b2e3b3916efa39e5df99a71ce5d 100644 --- a/interface/web/mail/lib/lang/br_mail_aliasdomain.lng +++ b/interface/web/mail/lib/lang/br_mail_aliasdomain.lng @@ -3,9 +3,9 @@ $wb['source_txt'] = 'Origem'; $wb['destination_txt'] = 'Destino'; $wb['active_txt'] = 'Ativo'; $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.'; -$wb['limit_mailaliasdomain_txt'] = 'O limite de apelidos de domínios para esta conta foi alcançado.'; +$wb['limit_mailaliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.'; $wb['source_destination_identical_txt'] = 'Origem e destino são os mesmos.'; -$wb['source_error_empty'] = 'Origem está em branco.'; -$wb['source_error_unique'] = 'Origem duplicada.'; -$wb['source_error_regex'] = 'Origem inválida.'; +$wb['source_error_empty'] = 'O domínio de origem está em branco.'; +$wb['source_error_unique'] = 'Domínio de origem duplicado.'; +$wb['source_error_regex'] = 'Domínio de origem é inválido.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng index 4849c3cb6b742facb01f17b443068cb7373dd04f..ddf1ea0a96bda75f53e48d6e85392491c37a5ecb 100644 --- a/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng @@ -1,7 +1,8 @@ diff --git a/interface/web/mail/lib/lang/br_mail_backup_list.lng b/interface/web/mail/lib/lang/br_mail_backup_list.lng index 8ef31a0769aac843d4ed56f08dcf70461c452579..b8e4f82300fb73a2cc2f9850a9b2283cf4591b0b 100644 --- a/interface/web/mail/lib/lang/br_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/br_mail_backup_list.lng @@ -3,14 +3,14 @@ $wb['list_head_txt'] = 'Backups existentes'; $wb['date_txt'] = 'Data'; $wb['backup_type_txt'] = 'Tipo'; $wb['filename_txt'] = 'Arquivo de backup'; -$wb['restore_backup_txt'] = 'Restaurar backup'; -$wb['restore_info_txt'] = 'Restauração do backup iniciada. Esta ação poderá levar vários minutos para ser concluída. Aguarde.'; -$wb['restore_confirm_txt'] = 'A restauração do backup reescreverá os arquivos existentes das suas caixas postais. Tem certeza que deseja restaurar este backup?'; -$wb['download_pending_txt'] = 'Já existe um download deste backup em execução.'; -$wb['restore_pending_txt'] = 'Já existe uma restauração deste backup em execução.'; -$wb['delete_backup_txt'] = 'Remover backup'; -$wb['delete_info_txt'] = 'Remoção do backup iniciada. Esta ação poderá levar vários minutos para ser concluída. Aguarde.'; -$wb['delete_confirm_txt'] = 'Tem certeza que deseja remover este backup?'; -$wb['delete_pending_txt'] = 'Já existe uma remoção deste backup em execução.'; -$wb['filesize_txt'] = 'Tamanho'; +$wb['restore_backup_txt'] = 'Restaurar'; +$wb['restore_info_txt'] = 'A restauração do backup está em andamento. Esta ação demora vários minutos para concluir.'; +$wb['restore_confirm_txt'] = 'A restauração do backup pode sobrescrever arquivos das contas de e-mail. Você tem certeza que deseja restaurar este backup?'; +$wb['download_pending_txt'] = 'Já existe um download de backup em andamento.'; +$wb['restore_pending_txt'] = 'Já existe uma restauração de backup em andamento.'; +$wb['delete_backup_txt'] = 'Remover Backup'; +$wb['delete_info_txt'] = 'A remoção do backup está em andamento. Esta ação demora vários minutos para concluir.'; +$wb['delete_confirm_txt'] = 'Deseja remover este backup?'; +$wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.'; +$wb['filesize_txt'] = 'Tamanho do arquivo'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_blacklist.lng b/interface/web/mail/lib/lang/br_mail_blacklist.lng index 4c52e77d23c0807962afd79eb20b2211bd08e14c..14c323c3420a4429d5de83543f1aaefd5384dc93 100644 --- a/interface/web/mail/lib/lang/br_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/br_mail_blacklist.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/br_mail_blacklist_list.lng b/interface/web/mail/lib/lang/br_mail_blacklist_list.lng index d561cea6b69c63107fadddfd05621a1403102479..319a3540166b756a41c756c904c0f69481688cb6 100644 --- a/interface/web/mail/lib/lang/br_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/br_mail_blacklist_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/mail/lib/lang/br_mail_content_filter.lng b/interface/web/mail/lib/lang/br_mail_content_filter.lng index dc85d4e78eed6fb9e1deff3f491a727ec72202fe..b0a7c15b12f3c62406460583e410633d9a19b3ef 100644 --- a/interface/web/mail/lib/lang/br_mail_content_filter.lng +++ b/interface/web/mail/lib/lang/br_mail_content_filter.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/br_mail_content_filter_list.lng b/interface/web/mail/lib/lang/br_mail_content_filter_list.lng index 4d35bd6352a3ff3bc83e112e772067d3f1df5266..65674a903d34f837fada7e587fd47e213bd0e0f4 100644 --- a/interface/web/mail/lib/lang/br_mail_content_filter_list.lng +++ b/interface/web/mail/lib/lang/br_mail_content_filter_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng index df5fd39b9a82688f2ba1373a36889eea2f9b5e2f..3d4f85af8dfc1110b3bf508e3705dfb76623aff4 100644 --- a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng @@ -1,11 +1,13 @@ diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng index 57c1f3a11ac1012652866f510dd4e987eb7c0ac2..2d5747826ce17e7b8f545ef27b3cb6032936c646 100644 --- a/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/br_mail_forward_list.lng b/interface/web/mail/lib/lang/br_mail_forward_list.lng index 025ecc00b691caaed20c768c7ef32030a3838de6..166839e2c9a88d51a35593d39e346979bdfb6d4d 100644 --- a/interface/web/mail/lib/lang/br_mail_forward_list.lng +++ b/interface/web/mail/lib/lang/br_mail_forward_list.lng @@ -2,7 +2,7 @@ $wb['list_head_txt'] = 'Encaminhamento de e-mail'; $wb['active_txt'] = 'Ativo'; $wb['source_txt'] = 'Origem'; -$wb['destination_txt'] = 'Destino'; -$wb['email_txt'] = 'e-mail'; -$wb['add_new_record_txt'] = 'Adicionar novo encaminhamento'; +$wb['destination_txt'] = 'Destinatário'; +$wb['email_txt'] = 'e-Mail'; +$wb['add_new_record_txt'] = 'Adicionar novo encaminhamento de e-mail'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_get.lng b/interface/web/mail/lib/lang/br_mail_get.lng index dc9d2fce87ad4360196a448f8964355200e60ec0..f3d055f6d8fb9e37b88a946865aed20bf7cb94a1 100644 --- a/interface/web/mail/lib/lang/br_mail_get.lng +++ b/interface/web/mail/lib/lang/br_mail_get.lng @@ -1,19 +1,19 @@ diff --git a/interface/web/mail/lib/lang/br_mail_get_list.lng b/interface/web/mail/lib/lang/br_mail_get_list.lng index 07d28d0bd8e58a089dc4d474456225ead762dece..84b8bbd33e9a99810396e5fc6b87a0103f56eb1a 100644 --- a/interface/web/mail/lib/lang/br_mail_get_list.lng +++ b/interface/web/mail/lib/lang/br_mail_get_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng index 08fd204fbba37183d94172feb98567558711c2be..d7dcf02c012e2f4d2cd4a1bd9f2c854341a58599 100644 --- a/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng +++ b/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/br_mail_relay_recipient.lng b/interface/web/mail/lib/lang/br_mail_relay_recipient.lng index 0ce921b1a1efa90b40dfd5da394a41d016dcfc32..637788ce48baca6f1c7a6926e5c966eabf846326 100644 --- a/interface/web/mail/lib/lang/br_mail_relay_recipient.lng +++ b/interface/web/mail/lib/lang/br_mail_relay_recipient.lng @@ -3,7 +3,7 @@ $wb['server_id_txt'] = 'Servidor'; $wb['source_txt'] = 'Destinatário de retransmissão'; $wb['recipient_txt'] = 'Destinatário'; $wb['active_txt'] = 'Ativo'; -$wb['source_error_notempty'] = 'Endereço está em branco.'; +$wb['source_error_notempty'] = 'Destinatário de retransmissão está em branco.'; $wb['type_txt'] = 'Tipo'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros para esta conta foi alcançado.'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng index b6ca775e5e0424d3f047086c76aba61aa40ff30b..d96bab59ebc78a3a20854ec9e89cae2ed9b34371 100644 --- a/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng +++ b/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng @@ -2,8 +2,8 @@ $wb['list_head_txt'] = 'Destinatários de retransmissão'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; -$wb['source_txt'] = 'Remetente'; +$wb['source_txt'] = 'Endereço do destinatário'; $wb['recipient_txt'] = 'Destinatário'; -$wb['add_new_record_txt'] = 'Adicionar novo destinatário'; +$wb['add_new_record_txt'] = 'Adicionar novo destinatário de retransmissão'; $wb['access_txt'] = 'acesso'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_spamfilter.lng b/interface/web/mail/lib/lang/br_mail_spamfilter.lng index 3e7201b95d2a1c1a5b3ed68f887978dfad8d58d4..e38894fde375486c82c657d50397a481400d3c1c 100644 --- a/interface/web/mail/lib/lang/br_mail_spamfilter.lng +++ b/interface/web/mail/lib/lang/br_mail_spamfilter.lng @@ -1,17 +1,17 @@ diff --git a/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng index 40c680da72f1252a341b63fd0a1864fc213ab91e..51044a3beca5723a41319788b1a2d626bef69519 100644 --- a/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng +++ b/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/br_mail_transport.lng b/interface/web/mail/lib/lang/br_mail_transport.lng index 7b080493c2014e35187b7ee594e840dea04d2aec..cf59e244bbb4fb22f8c676d4ef0e2e4840067940 100644 --- a/interface/web/mail/lib/lang/br_mail_transport.lng +++ b/interface/web/mail/lib/lang/br_mail_transport.lng @@ -3,9 +3,9 @@ $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'Domínio'; $wb['destination_txt'] = 'Destino'; $wb['type_txt'] = 'Tipo'; -$wb['mx_txt'] = 'Sem MX lookup'; +$wb['mx_txt'] = 'Sem pesquisa MX'; $wb['sort_order_txt'] = 'Ordenar por'; $wb['active_txt'] = 'Ativo'; -$wb['limit_mailrouting_txt'] = 'O limite de transportes para esta conta foi alcançado.'; +$wb['limit_mailrouting_txt'] = 'O limite de rotas de e-mail para esta conta foi alcançado.'; $wb['transport_txt'] = 'Transporte'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_transport_list.lng b/interface/web/mail/lib/lang/br_mail_transport_list.lng index 1e824b345aa398dab72842a57ff74548deaee89e..4597742bef7b3eb3f60268b476f241c01ce6db09 100644 --- a/interface/web/mail/lib/lang/br_mail_transport_list.lng +++ b/interface/web/mail/lib/lang/br_mail_transport_list.lng @@ -1,6 +1,6 @@ 1'; -$wb['autoresponder_start_date_txt'] = 'Início:'; -$wb['autoresponder_start_date_ispast'] = 'A data de início não pode ser menor que a data atual.'; -$wb['autoresponder_end_date_txt'] = 'Término:'; -$wb['autoresponder_end_date_isgreater'] = 'A data de término não pode ser menor que a data de início.'; -$wb['move_junk_txt'] = 'Mover spam para o diretório junk'; -$wb['name_txt'] = 'Nome real'; +$wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponível em MB é'; +$wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)'; +$wb['disableimap_txt'] = 'Desabilitar IMAP'; +$wb['disablepop3_txt'] = 'Desabilitar POP3'; +$wb['duplicate_alias_or_forward_txt'] = 'Já existe um alias ou encaminhamento para este endereço de e-mail.'; +$wb['quota_error_value'] = 'Valor da cota é inválido. Valores permitidos são: 0 para ilimitado ou números > 1.'; +$wb['move_junk_txt'] = 'Mover e-mails marcados como spam para o diretório junk.'; +$wb['name_txt'] = 'Nome'; $wb['name_optional_txt'] = '(Opcional)'; -$wb['autoresponder_active'] = 'Ativar autoresposta'; +$wb['autoresponder_active'] = 'Habilitar auto-resposta'; $wb['cc_txt'] = 'Enviar cópia para'; -$wb['cc_error_isemail'] = 'O campo \"Enviar cópia para\" deve conter um endereço de e-mail válido'; +$wb['sender_cc_txt'] = 'Enviar cópia oculta (BCC) para'; +$wb['cc_error_isemail'] = 'O campo "Enviar cópia para" contém um endereço de e-mail inválido.'; +$wb['sender_cc_error_isemail'] = 'O campo "Enviar cópia oculta para" contém um endereço de e-mail inválido.'; $wb['domain_txt'] = 'Domínio'; $wb['now_txt'] = 'Agora'; -$wb['login_error_unique'] = 'O acesso já está em uso.'; -$wb['login_error_regex'] = 'Caracteres válidos são: \'A-Z\', \'a-z\', \'0-9\', \'.\', \'_\' e \'-\'.'; -$wb['login_txt'] = 'Acesso (opcional)'; -$wb['error_login_email_txt'] = 'Este acesso não é permitido. Por favor, insira um usuário diferente ou use o endereço de e-mail.'; -$wb['autoresponder_subject_txt'] = 'Assunto do e-mail'; -$wb['autoresponder_subject'] = 'Resposta de ausência temporária'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['email_error_isascii'] = 'Por favor não use caracteres \"unicode\" para a senha. Esta ação poderá causar problemas com seu cliente de e-mail (mua).'; -$wb['cc_note_txt'] = '(Múltiplos e-mails separados por vírgulas)'; -$wb['disablesmtp_txt'] = 'Desabilitar smtp (envio)'; -$wb['autoresponder_start_date_is_required'] = 'Data de início deve ser configurada quando \'autoresposta\' é habilitada.'; -$wb['sender_cc_txt'] = 'Enviar cópia para'; -$wb['sender_cc_error_isemail'] = 'O campo \'Enviar cópia para\' não contém um endereço de e-mail válido'; -$wb['backup_interval_txt'] = 'Intervalo de backup'; -$wb['backup_copies_txt'] = 'Limite de cópias do backup'; +$wb['login_error_unique'] = 'O acesso já foi realizado.'; +$wb['login_error_regex'] = 'Caracteres válidos são "A-Z", "a-z", "0-9", ".", "_" e "-".'; +$wb['login_txt'] = 'Acesso'; +$wb['error_login_email_txt'] = 'Este acesso não é permitido. Por favor, forneça um nome de usuário ou endereço de e-mail diferente para acessar.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['no_backup_txt'] = 'Sem backup'; $wb['daily_backup_txt'] = 'Diário'; $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; -$wb['sender_cc_note_txt'] = '(Múltiplos e-mails separados por vírgulas)'; -$wb['password_click_to_set_txt'] = 'Configurar'; +$wb['email_error_isascii'] = 'Por favor, não use caracteres especiais para a senha. Isto poderá causar problemas no cliente de e-mail.'; +$wb['cc_note_txt'] = '(separar múltiplos endereços de e-mails com vírgulas)'; +$wb['sender_cc_note_txt'] = '(separar múltiplos endereços de e-mails com vírgulas)'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user_filter.lng b/interface/web/mail/lib/lang/br_mail_user_filter.lng index 7dca140ceeb7f80402b0c1f3060fa00e6699eb38..54ae96d6928405c3340ae39329810eee1308092f 100644 --- a/interface/web/mail/lib/lang/br_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/br_mail_user_filter.lng @@ -4,23 +4,23 @@ $wb['action_txt'] = 'Ação'; $wb['target_txt'] = 'Pasta'; $wb['active_txt'] = 'Ativo'; $wb['rulename_error_empty'] = 'Nome está em branco.'; -$wb['searchterm_is_empty'] = 'Termo de busca está em branco.'; +$wb['searchterm_is_empty'] = 'Termo de pesquisa está em branco.'; $wb['source_txt'] = 'Origem'; -$wb['target_error_regex'] = 'O alvo não pode conter os caracteres: \'a-z\', \'0-9\', \'-\', \'.\', \'_\', e \'{espaço}\'.'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; +$wb['target_error_regex'] = 'O alvo pode conter apenas os caracteres: "a-z", "0-9", "-", ".", "_", e {espaço}'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail foi alcançado.'; $wb['subject_txt'] = 'Assunto'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Para'; -$wb['contains_txt'] = 'Contém'; +$wb['contains_txt'] = 'Contêm'; $wb['is_txt'] = 'é'; -$wb['begins_with_txt'] = 'Começa com'; -$wb['ends_with_txt'] = 'Termina com'; -$wb['delete_txt'] = 'Remover'; +$wb['begins_with_txt'] = 'Iniciando com'; +$wb['ends_with_txt'] = 'Terminando com'; $wb['move_stop_txt'] = 'Mover para'; +$wb['delete_txt'] = 'Remover'; $wb['header_txt'] = 'Cabeçalho'; -$wb['size_over_txt'] = 'Tamanho máximo do e-mail (KB)'; -$wb['size_under_txt'] = 'Tamanho mínimo do e-mail (KB)'; -$wb['localpart_txt'] = 'Local'; +$wb['size_over_txt'] = 'Tamanho do e-mail acima de (KB)'; +$wb['size_under_txt'] = 'Tamanho do e-mail abaixo de (KB)'; +$wb['localpart_txt'] = 'Parte local'; $wb['domain_txt'] = 'Domínio'; $wb['keep_txt'] = 'Manter'; $wb['reject_txt'] = 'Rejeitar'; diff --git a/interface/web/mail/lib/lang/br_mail_user_filter_list.lng b/interface/web/mail/lib/lang/br_mail_user_filter_list.lng index feae1f4bb7cacb05a6f984dec9d76d16ab86aff0..516478f9f62694be2773e131f5a0ef5ed2c9e04b 100644 --- a/interface/web/mail/lib/lang/br_mail_user_filter_list.lng +++ b/interface/web/mail/lib/lang/br_mail_user_filter_list.lng @@ -3,5 +3,5 @@ $wb['rulename_txt'] = 'Nome'; $wb['add_new_record_txt'] = 'Adicionar novo filtro'; $wb['page_txt'] = 'Página'; $wb['page_of_txt'] = 'de'; -$wb['delete_confirmation'] = 'Tem certeza que gostaria de remover este filtro?'; +$wb['delete_confirmation'] = 'Você tem certeza que deseja remover este filtro?'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user_stats_list.lng b/interface/web/mail/lib/lang/br_mail_user_stats_list.lng index 370ce3520fca56f77e343e703fa2d4b3d2153aea..f0305edac35ee7140875616202fb96301d735812 100644 --- a/interface/web/mail/lib/lang/br_mail_user_stats_list.lng +++ b/interface/web/mail/lib/lang/br_mail_user_stats_list.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/mail/lib/lang/br_mail_whitelist_list.lng b/interface/web/mail/lib/lang/br_mail_whitelist_list.lng index 40eced2d2cf68a92511133ea6a1ec2f646791181..0c7d3c717d349782912b8274d46e5321b1305573 100644 --- a/interface/web/mail/lib/lang/br_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/br_mail_whitelist_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng index df01dd30bab7280bb35aba5b6c5efe97d21fbbf0..ec3dc5f66e81748cb82714bf6bee594cd5687cb0 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mail/lib/lang/br_spamfilter_config.lng b/interface/web/mail/lib/lang/br_spamfilter_config.lng index 9a12279a4a1b7b1ee66ce0635b86a1e053559a20..6182e8b788d21183f9824395912f48dbe14748d3 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_config.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_config.lng @@ -1,20 +1,20 @@ diff --git a/interface/web/mail/lib/lang/br_spamfilter_config_list.lng b/interface/web/mail/lib/lang/br_spamfilter_config_list.lng index 300e210b15748fb439291e6eef8c727dc9451147..6d4c1cf0e1ff4aced723addfadd5c90ee73f7981 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_config_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_config_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy.lng b/interface/web/mail/lib/lang/br_spamfilter_policy.lng index 998f36d8fa776b612faeb3d95ac9a01f169c4fbc..476b27e5652bedc9f7914e1e76a59140442aca42 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_policy.lng @@ -1,38 +1,51 @@ +$wb['message_size_limit_txt'] = 'Limite de tamanho da mensagem'; +$wb['banned_rulenames_txt'] = 'Nome da regra para arquivo banido'; +$wb['rspamd_greylisting_txt'] = 'Habilitar greylist'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Nível da greylist'; +$wb['rspamd_spam_tag_level_txt'] = 'Nível da marcação anti-spam'; +$wb['rspamd_spam_tag_method_txt'] = 'Método da marcação anti-spam'; +$wb['rspamd_spam_kill_level_txt'] = 'Nível para rejeição de spam'; +$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_cancel_txt'] = 'Cancelar'; + +$wb['amavis_settings_txt'] = 'Configurações'; +$wb['amavis_taglevel_txt'] = 'Nível de marcação'; +$wb['amavis_quarantine_txt'] = 'Quarentena'; +$wb['amavis_other_txt'] = 'Outro'; +$wb['add_header_txt'] = 'Adicionar cabeçalho'; +$wb['rewrite_subject_txt'] = 'Reescrever assunto'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng index 38d91f16d8afb682e4959b70d3d7af7eee77a077..269862fe99412f09c56c8a0b5443b02ee27e1653 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/br_spamfilter_users.lng b/interface/web/mail/lib/lang/br_spamfilter_users.lng index 2c33cd3552c1306f4c423a2246c249aa4ad1aedb..3b34351adbf5531d4eade5bd57545b7daa573c71 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_users.lng @@ -2,7 +2,7 @@ $wb['server_id_txt'] = 'Servidor'; $wb['priority_txt'] = 'Prioridade'; $wb['policy_id_txt'] = 'Política'; -$wb['email_txt'] = 'e-mail (padrão)'; +$wb['email_txt'] = 'e-Mail (padrão)'; $wb['fullname_txt'] = 'Nome'; $wb['local_txt'] = 'Local'; $wb['email_error_notempty'] = 'Endereço de e-mail está em branco.'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_users_list.lng b/interface/web/mail/lib/lang/br_spamfilter_users_list.lng index cf1f4900f92b170af0c10446426cfc35bf09ce97..fe3feb25cde7f161aed91bb6e1be74b058a112e2 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_users_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_users_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng index 0161d716aed23093855d38b86e11d1117e604a78..bcb9491cf0725e6c19f12a8d73b7fdf1ad6731e2 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng index a756443205585dd2e4940cb372ba26d0a3100a04..ee156b23a75928127cfad38206d329709f1c73c4 100755 --- a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/br_xmpp_domain.lng b/interface/web/mail/lib/lang/br_xmpp_domain.lng index 1a9a42f0c1efdecbcb5d14a0dfb9f569205777da..1fd96ba13201149c3f47851e62e81ee69fe0e684 100644 --- a/interface/web/mail/lib/lang/br_xmpp_domain.lng +++ b/interface/web/mail/lib/lang/br_xmpp_domain.lng @@ -5,31 +5,31 @@ $wb['domain_txt'] = 'Domínio'; $wb['type_txt'] = 'Tipo'; $wb['active_txt'] = 'Ativo'; $wb['client_txt'] = 'Cliente'; -$wb['management_method_txt'] = 'Gerenciamento de contas de usuários'; +$wb['management_method_txt'] = 'Gerenciar contas de usuário'; $wb['public_registration_txt'] = 'Habilitar registro público'; $wb['registration_url_txt'] = 'URL de registro'; $wb['registration_message_txt'] = 'Mensagem de registro'; -$wb['domain_admins_txt'] = 'Administradores de domínio (JIDs)'; -$wb['use_pubsub_txt'] = 'Habilitar Pubsub'; -$wb['use_proxy_txt'] = 'Habilitar proxy Bytestream'; +$wb['domain_admins_txt'] = 'Administradores de domínios (JIDs)'; +$wb['use_pubsub_txt'] = 'Habilitar pubsub'; +$wb['use_proxy_txt'] = 'Habilitar proxy bytestream'; $wb['use_anon_host_txt'] = 'Habilitar host anônimo'; -$wb['use_vjud_txt'] = 'Habilitar diretório de usuário VJUD'; -$wb['vjud_opt_mode_txt'] = 'Modo de operação VJUD'; -$wb['use_muc_host_txt'] = 'Habilitar chats multiusuários'; -$wb['muc_name_txt'] = 'Nome na descoberta do MUC'; -$wb['muc_restrict_room_creation_txt'] = 'Permissão para criar salas de chat'; -$wb['muc_admins_txt'] = 'Administradores de MUC (JIDs)'; -$wb['use_pastebin_txt'] = 'Habilitar Pastebin'; -$wb['pastebin_expire_after_txt'] = 'Colagens expiram após (horas)'; -$wb['pastebin_trigger_txt'] = 'Gatilho Pastebin'; -$wb['use_http_archive_txt'] = 'Habilitar arquivo HTTP em salas de chat'; -$wb['http_archive_show_join_txt'] = 'Exibir mensagens de participação em arquivos'; -$wb['http_archive_show_status_txt'] = 'Exibir estado de mudança em arquivos'; -$wb['use_status_host_txt'] = 'Habilitar estado XML do host'; -$wb['cant_change_domainname_txt'] = 'O nome domínio XMPP existente não pode ser modificado.'; -$wb['about_registration_url_txt'] = 'Link para o página de registro.'; -$wb['about_registration_message_txt'] = 'Descrição sobre seu processo de registro de conta.'; -$wb['no_corresponding_maildomain_txt'] = 'O domínio de e-mail correspondente para gerenciamento de usuário não foi encontrado. Por favor crie o domínio de e-mail primeiro.'; +$wb['use_vjud_txt'] = 'Habilitar diretório de usuário (VJUD)'; +$wb['vjud_opt_mode_txt'] = 'Modo opcional do VJUD'; +$wb['use_muc_host_txt'] = 'Habilitar chat multiusuário (MUC)'; +$wb['muc_name_txt'] = 'Nome no serviço de descoberta do MUC'; +$wb['muc_restrict_room_creation_txt'] = 'Permissão para adicionar salas de chat'; +$wb['muc_admins_txt'] = 'Administradores MUC (JIDs)'; +$wb['use_pastebin_txt'] = 'Habilitar pastebin'; +$wb['pastebin_expire_after_txt'] = 'Patas expira após (horas)'; +$wb['pastebin_trigger_txt'] = 'Desencadear pastebin'; +$wb['use_http_archive_txt'] = 'Habilitar arquivos HTTP em salas de chat'; +$wb['http_archive_show_join_txt'] = 'Exibir mensagens de ingresso no arquivo'; +$wb['http_archive_show_status_txt'] = 'Exibir estado da mudanças no arquivo'; +$wb['use_status_host_txt'] = 'Habilitar estado do XML do host'; +$wb['cant_change_domainname_txt'] = 'O nome existente do domínio xmpp não pode ser alterado.'; +$wb['about_registration_url_txt'] = 'Ligar ao seu formulário de registro.'; +$wb['about_registration_message_txt'] = 'Descrição sobre o processo de registro da sua conta.'; +$wb['no_corresponding_maildomain_txt'] = 'O domínio de e-mail correspondente para gerenciamento de usuários não foi encontrado. Por favor, crie um domínio de e-mail primeiro.'; $wb['ssl_state_txt'] = 'Estado'; $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; @@ -38,25 +38,25 @@ $wb['ssl_country_txt'] = 'País'; $wb['ssl_key_txt'] = 'Chave'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['ssl_email_txt'] = 'Endereço de e-mail'; $wb['ssl_txt'] = 'SSL'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; +$wb['ssl_state_error_regex'] = 'Campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_locality_error_regex'] = 'Campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_organisation_error_regex'] = 'Campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'Campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_country_error_regex'] = 'Campo "País" é inválido. São caracteres válidos: "A-Z".'; $wb['none_txt'] = 'Nenhum'; -$wb['save_certificate_txt'] = 'Salvar certificado'; -$wb['create_certificate_txt'] = 'Adicionar certificado'; -$wb['delete_certificate_txt'] = 'Remover certificado'; -$wb['ssl_error_isemail'] = 'Por favor, insira um e-mail válido para gerar o certificado SSL.'; +$wb['save_certificate_txt'] = 'Salvar Certificado'; +$wb['create_certificate_txt'] = 'Adicionar Certificado'; +$wb['delete_certificate_txt'] = 'Remover Certificado'; +$wb['ssl_error_isemail'] = 'Por favor, insira um endereço de e-mail válido para geração do certificado SSL.'; $wb['limit_xmppdomain_txt'] = 'O limite de domínios xmpp para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_xmpp_domain_list.lng b/interface/web/mail/lib/lang/br_xmpp_domain_list.lng index ab8f3a90874e3cc5b0a50502611fe7e525b8676f..e0ff3a6fc6bf060f26bbad4387eb7191d033fc18 100644 --- a/interface/web/mail/lib/lang/br_xmpp_domain_list.lng +++ b/interface/web/mail/lib/lang/br_xmpp_domain_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/br_xmpp_user_list.lng b/interface/web/mail/lib/lang/br_xmpp_user_list.lng index 13d71a05a8e0439333afd1636a3ca453c9798715..0aefe11709c211178f71c0eb4c0a4ba28d522b71 100644 --- a/interface/web/mail/lib/lang/br_xmpp_user_list.lng +++ b/interface/web/mail/lib/lang/br_xmpp_user_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng index 7e82c34ca2b351e8582e37748c847cf14dcc64fa..feafd436f6bb47963d8429b11ae4ae80ab686458 100644 --- a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nom de domaine invalide, ou contient des caractère $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour votre compte a été atteint.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'La destination n\'est pas valide.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ca_mail_user_filter.lng b/interface/web/mail/lib/lang/ca_mail_user_filter.lng index 14b80ee07b28c5872b66bf88c70526ced7be0154..8744b2ab79209f4a27b1d36681be930a0bde220a 100644 --- a/interface/web/mail/lib/lang/ca_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ca_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Le nombre max de filtres courriel est atteint.'; $wb['subject_txt'] = 'Sujet'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Pour'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contient'; $wb['is_txt'] = 'Est'; $wb['begins_with_txt'] = 'Commence par'; diff --git a/interface/web/mail/lib/lang/ca_spamfilter_policy.lng b/interface/web/mail/lib/lang/ca_spamfilter_policy.lng index d07b382ddf7781c993f3382dddc875e4e7738c00..7b593f0a1697c9b78dc1f64dd0da707abf33de0f 100644 --- a/interface/web/mail/lib/lang/ca_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ca_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin mauvais entête'; $wb['spam_admin_txt'] = 'Admin SPAM'; $wb['message_size_limit_txt'] = 'Limite de taille de message'; $wb['banned_rulenames_txt'] = 'Noms des règles bannir'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng index d0f6157cb4291c525d8b049a249fc664a5c63792..040a6d0de8d29e595de36e0987cdbbb36eb2daec 100644 --- a/interface/web/mail/lib/lang/cz.lng +++ b/interface/web/mail/lib/lang/cz.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Přezdívky e-mailových domén'; $wb['Relay Recipients'] = 'Relay adresáti'; $wb['Statistics'] = 'Statistiky'; $wb['Mailbox quota'] = 'Kvóty pro e-mailové schránky'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_backup_list.lng b/interface/web/mail/lib/lang/cz_mail_backup_list.lng index 91ea1ad49f00bb49edcb5a92658d928ca3f0abd1..d4f941a4cdfd75b4ba2975f613a5eba31b6844c3 100644 --- a/interface/web/mail/lib/lang/cz_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_backup_list.lng @@ -1,16 +1,16 @@ diff --git a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng index ab4006df0c6d1c7da5063606e6e790e18e214b24..d0ae7c7e4b6952da35f4a18d0de9bcda5137b538 100644 --- a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Chybné doménové jméno nebo doména obsahuje chy $wb['limit_mailcatchall_txt'] = 'Byl dosažen maximální počet košů účtů pro Váš účet.'; $wb['source_txt'] = 'Zdroj'; $wb['destination_error_isemail'] = 'Cílová e-mailová adresa není platná.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng index c5765e807f561f242aab4e3114cb85887f780475..b8b8a2e78f17c837831a66c797aedf34eec3d8fb 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Špatná hlavička admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Limit velikosti zprávy'; $wb['banned_rulenames_txt'] = 'Název pravidel zabanované'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/de.lng b/interface/web/mail/lib/lang/de.lng index 91418972dd0c69f73d0d4f1aba6d1d2e218f0ced..e0f1e7cd3b30e0022f142cada3ef0a713c2182d3 100644 --- a/interface/web/mail/lib/lang/de.lng +++ b/interface/web/mail/lib/lang/de.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globale Filter'; $wb['Domain Alias'] = 'E-Mail Domain Alias'; $wb['Relay Recipients'] = 'Relay Empfänger'; $wb['Mailbox quota'] = 'E-Mail Konto Speichernutzung'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng index 9f37e56697126ed078d799f3c9ce4faeed8155c1..bef241e0ea6aabea07f902ff7529ac431de75c08 100644 --- a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ungültiger Domainname oder ungültige Zeichen im D $wb['limit_mailcatchall_txt'] = 'Die maximale Anzahl an Catchall Einträgen für Ihr Konto wurde erreicht.'; $wb['source_txt'] = 'Quelle'; $wb['destination_error_isemail'] = 'Das Ziel ist keine gültige E-Mail Adresse.'; +$wb['greylisting_txt'] = 'Aktiviere Greylisting'; ?> diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng index 32acca46860822f960c1d03ce316e047a29a3afc..1036fbf91c8f09bb6a263b729b39c72dfb5c92b1 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad Header Administrator'; $wb['spam_admin_txt'] = 'SPAM Administrator'; $wb['message_size_limit_txt'] = 'Nachrichtengrößen Limit'; $wb['banned_rulenames_txt'] = 'Banned Richtliniennamen'; +$wb['rspamd_greylisting_txt'] = 'Greylisting nutzen'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting-Level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM-Markierungslevel'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM-Markierungsmethode'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM-Reject-Level'; +$wb['btn_save_txt'] = 'Speichern'; +$wb['btn_cancel_txt'] = 'Abbrechen'; +$wb['amavis_settings_txt'] = 'Einstellungen'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantäne'; +$wb['amavis_other_txt'] = 'Sonstiges'; +$wb['add_header_txt'] = 'Header hinzufügen'; +$wb['rewrite_subject_txt'] = 'Betreff ändern'; ?> diff --git a/interface/web/mail/lib/lang/dk.lng b/interface/web/mail/lib/lang/dk.lng index 7330253c23385ff1b231c6baa9fc530d43fc673e..3fe8d568ae39076d9d2268ddc46f945cd8955c6d 100644 --- a/interface/web/mail/lib/lang/dk.lng +++ b/interface/web/mail/lib/lang/dk.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filtere'; $wb['Domain Alias'] = 'Domæne Alias'; $wb['Relay Recipients'] = 'Relay Modtagere'; $wb['Mailbox quota'] = 'Postboks kvota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng index 0cdcad2098a2ed022ceebc9474d487c36511638d..8c0be4977599589207235c7a56a99e9a326182f7 100644 --- a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ugyldigt domæne navn eller domæne, indeholder ugy $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti for din konto er nået.'; $wb['source_txt'] = 'Kilde'; $wb['destination_error_isemail'] = 'Destinationen er ikke en gyldig e-mail adresse.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_user_filter.lng b/interface/web/mail/lib/lang/dk_mail_user_filter.lng index d43af17ffb11cffe672b573c75ccec3ad2fa3bf7..ef8be2a0c97f46b8aa3ae9442f41ad8c45db9ea6 100644 --- a/interface/web/mail/lib/lang/dk_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/dk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Max. antal af mailfiltere er nået.'; $wb['subject_txt'] = 'Emne'; $wb['from_txt'] = 'Fra'; $wb['to_txt'] = 'Til'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Indeholder'; $wb['is_txt'] = 'Er'; $wb['begins_with_txt'] = 'Begynder med'; diff --git a/interface/web/mail/lib/lang/dk_spamfilter_policy.lng b/interface/web/mail/lib/lang/dk_spamfilter_policy.lng index b225eb48ac99a1a1d57ce7e577448a90a28d9854..97b02923d82718f6fc748c1812408b0c4aea10ad 100644 --- a/interface/web/mail/lib/lang/dk_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/dk_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Meddelelses størrelse grænse'; $wb['banned_rulenames_txt'] = 'Bandlyste reglnavne'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/el.lng b/interface/web/mail/lib/lang/el.lng index f8cadc62f009b1763e9c1ce6e0d7efc720834792..cb873eac2a3ab46f81813deaba0405598f169b4d 100644 --- a/interface/web/mail/lib/lang/el.lng +++ b/interface/web/mail/lib/lang/el.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Καθολικά Φίλτρα'; $wb['Domain Alias'] = 'Ψευδώνυμο Domain'; $wb['Relay Recipients'] = 'Παραλήπτες Relay'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng index 43c0bdf5658a522b34f3badebc2ddec1849d5c5d..b04b43cfcce3e4f179a14d74e02ac30c82dc5d63 100644 --- a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Μη έγκρυρο όνομα domain ή το όν $wb['limit_mailcatchall_txt'] = 'Το μέγιστο πλήθος των email catchall για τον λογαριασμό σας, έχει εξαντληθεί.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/el_spamfilter_policy.lng b/interface/web/mail/lib/lang/el_spamfilter_policy.lng index 4ab7291697d37d7932f3a1ce950b641116258d46..0eed35023946f2d04adb1c1fd50ccc0c6a150d71 100644 --- a/interface/web/mail/lib/lang/el_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/el_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Όριο μεγέθους μηνύματος'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/en.lng b/interface/web/mail/lib/lang/en.lng index e5f9e678c79eda6a4741562f06f1b337cfedeaef..22c67a286b0d3d7d40ab647f87aa0b067a5d9e0b 100644 --- a/interface/web/mail/lib/lang/en.lng +++ b/interface/web/mail/lib/lang/en.lng @@ -48,4 +48,5 @@ $wb['Global Filters'] = 'Global Filters'; $wb['Domain Alias'] = 'Domain Alias'; $wb["Relay Recipients"] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; -?> \ No newline at end of file +$wb['add_header_txt'] = 'Header (adds "X-Spam: Yes")'; +$wb['rewrite_subject_txt'] = 'Subject (adds "***SPAM***" at the beginning)'; diff --git a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng index 1f1726e54094dfe36f6979ee4b534abbc4105457..a49722802eb6c80bb13831621f838a0c44812f1b 100644 --- a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb["limit_mailcatchall_txt"] = 'The max. number of email catchall accounts for $wb['domain_txt'] = 'Domain'; $wb["source_txt"] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/en_mail_user_filter.lng b/interface/web/mail/lib/lang/en_mail_user_filter.lng index e78f808efa8a4a8df9e9d889581b57e6199ad790..462ee6d93653f8fd07abf97f2f7b82d23b053f39 100644 --- a/interface/web/mail/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/en_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb["limit_mailfilter_txt"] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/en_spamfilter_policy.lng b/interface/web/mail/lib/lang/en_spamfilter_policy.lng index 2e0f05d6c0019511862054456e91a503b60a29af..af1aac5d7f6d3172de2d07e1b215a25d173b01b3 100644 --- a/interface/web/mail/lib/lang/en_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/en_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb["bad_header_admin_txt"] = 'Bad header admin'; $wb["spam_admin_txt"] = 'SPAM admin'; $wb["message_size_limit_txt"] = 'Message size limit'; $wb["banned_rulenames_txt"] = 'Banned rulenames'; -?> +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; + +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; \ No newline at end of file diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng index 797aeeeb60db992af2a0f93ac0a6cfb3f7b85897..fdf4e5b00dc53d9b1ff7fa0d0de35c425a54499f 100755 --- a/interface/web/mail/lib/lang/es.lng +++ b/interface/web/mail/lib/lang/es.lng @@ -45,4 +45,6 @@ $wb['Tag-Level'] = 'Nivel de etiqueta'; $wb['User / Domain'] = 'Usuario / Dominio'; $wb['Users'] = 'Usuarios'; $wb['Whitelist'] = 'Lista blanca'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng index 48ead68ac16742c12d73f9ab35b8413d1159e029..68e03c8c3712d4e5730303d782022fc2fd31bcc6 100755 --- a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_txt'] = 'Dominio'; $wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \\"recoge-todo\\" para correo permitidos para su cuenta.'; $wb['no_domain_perm'] = 'No tiene permisos para usar este dominio.'; $wb['source_txt'] = 'Origen'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_user_filter.lng b/interface/web/mail/lib/lang/es_mail_user_filter.lng index 94100ef7a3c6a3d38f01eb68a970d295236791d1..ed221d5cb30a702fa181b27ecf4969f43299e045 100755 --- a/interface/web/mail/lib/lang/es_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/es_mail_user_filter.lng @@ -25,5 +25,6 @@ $wb['subject_txt'] = 'Asunto'; $wb['target_error_regex'] = 'El destino solo puede contener los siguientes caracteres: a-z, 0-9, -, ., _, y {espacio}'; $wb['target_txt'] = 'Carpeta'; $wb['to_txt'] = 'Para'; +$wb['list_id_txt'] = 'List ID'; $wb['move_to_txt'] = 'Move to'; ?> diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy.lng b/interface/web/mail/lib/lang/es_spamfilter_policy.lng index 1cb1d436305bc088cc4ef1df46f5432f5f88d583..b7a168c9834566eba572e3abd0f56089b48c58d7 100755 --- a/interface/web/mail/lib/lang/es_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/es_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['virus_quarantine_to_txt'] = 'Reenviar virus al correo'; $wb['warnbadhrecip_txt'] = 'Avisar al receptor de la cabecera incorrecta.'; $wb['warnbannedrecip_txt'] = 'Avisar al receptor del bloqueo.'; $wb['warnvirusrecip_txt'] = 'Avisar al receptor del virus.'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/fi.lng b/interface/web/mail/lib/lang/fi.lng index 3738c7fd64154b1ca086d9fc5afa49a9cfff1b6f..78a4328336db951c351d5385aaa78d7370c3ba90 100755 --- a/interface/web/mail/lib/lang/fi.lng +++ b/interface/web/mail/lib/lang/fi.lng @@ -45,4 +45,6 @@ $wb['Server'] = 'Palvelin'; $wb['Domain Alias'] = 'Aliasverkkotunnus'; $wb['Relay Recipients'] = 'Välityksen vastaanottajat'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng index f835f5667a8fa4f6f268f21b28a7c123c7bb0761..085a116c2c76ae262b97e7220c6e9a8813965eae 100755 --- a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Vääränlainen verkkotunnus tai se sisältää kie $wb['limit_mailcatchall_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä CatchAll-tunnuksia.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter.lng b/interface/web/mail/lib/lang/fi_mail_user_filter.lng index 1a4e7218a2807cf2f2e6ea293cbdfeb7880ab1c2..1238dc86fd79bc1a85fbf911121b65fabcc04488 100755 --- a/interface/web/mail/lib/lang/fi_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/fi_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng index 8f61ba411b64d7bc3b9541af4d39f086e488c7fa..4f720210773d06530551f13ae152049ebf461591 100755 --- a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Otsikkovirhetunnisteiden ylläpitäjä'; $wb['spam_admin_txt'] = 'Roskapostitunnisteiden ylläpitäjä'; $wb['message_size_limit_txt'] = 'Viestin kokoraja'; $wb['banned_rulenames_txt'] = 'Estojen sääntönimet'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/fr.lng b/interface/web/mail/lib/lang/fr.lng index 3437d371003e1c6036001e26c0c099a0211a8a5a..a70f08029586cbe971d32de21e57c56fc90c2dcd 100644 --- a/interface/web/mail/lib/lang/fr.lng +++ b/interface/web/mail/lib/lang/fr.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Alias de domaine'; $wb['Relay Recipients'] = 'Destinataires de relais'; $wb['Mailbox quota'] = 'Mailbox quota'; $wb['Email'] = 'Email'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng index b7c4b607601e0f4d9a0df31ec12bb3939330e246..199cd47224810f26214d75b82615ddb4b8ec5bfc 100644 --- a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nom de domaine invalide, ou contient des caractère $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour votre compte a été atteint.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid e-mail address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_user_filter.lng b/interface/web/mail/lib/lang/fr_mail_user_filter.lng index 49c5076d954656178667b5b42d1a08f192e5f7b5..b5cacf2e98628f05d922532ef14e023f12d9ee08 100644 --- a/interface/web/mail/lib/lang/fr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/fr_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Le nombre max de filtres e-mail est atteint.'; $wb['subject_txt'] = 'Sujet'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Pour'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contient'; $wb['is_txt'] = 'Est'; $wb['begins_with_txt'] = 'Commence par'; diff --git a/interface/web/mail/lib/lang/fr_spamfilter_policy.lng b/interface/web/mail/lib/lang/fr_spamfilter_policy.lng index d07b382ddf7781c993f3382dddc875e4e7738c00..7b593f0a1697c9b78dc1f64dd0da707abf33de0f 100644 --- a/interface/web/mail/lib/lang/fr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/fr_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin mauvais entête'; $wb['spam_admin_txt'] = 'Admin SPAM'; $wb['message_size_limit_txt'] = 'Limite de taille de message'; $wb['banned_rulenames_txt'] = 'Noms des règles bannir'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/hr.lng b/interface/web/mail/lib/lang/hr.lng index 882f6d2b7e1174df778c2e01a26dd91c7ed73064..877f8827f5bd5de291022b96528d15afb92109ec 100644 --- a/interface/web/mail/lib/lang/hr.lng +++ b/interface/web/mail/lib/lang/hr.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Alias domena'; $wb['Relay Recipients'] = 'Relay primatelji'; $wb['Mailbox quota'] = 'Mailbox quota'; $wb['Domain'] = 'Domain'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng index 2c8d23e2184db732dd9ae9d3f91696fcf4880e7b..1c8da72ab3ee0107c9b09b518cfc5e6c677a5ba7 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Neispravan naziv domene ili naziv sadrži nedozvolj $wb['limit_mailcatchall_txt'] = 'Iskorišten ja maksimalan broj email catchall računa.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng index e876330a68c7c365b12bf9a3f3cf6b5a652a6093..683b378c21e0eebc93556c6914165bc708521c02 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/hu.lng b/interface/web/mail/lib/lang/hu.lng index 752f4003a8f4683f53dedc7e4e30c061f443b92b..f3ffa4aef0414529a3048700bb37e983663842fc 100644 --- a/interface/web/mail/lib/lang/hu.lng +++ b/interface/web/mail/lib/lang/hu.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Server'] = 'Server'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng index 8331f2210178793142f38498dc0c334c8f559f2e..e26795953dc06ac0ae227577a9bdbaaefc06f72b 100644 --- a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Érvénytelen domain vagy a domain érvénytelen ka $wb['limit_mailcatchall_txt'] = 'Nincs több catchall lehetőség.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/hu_spamfilter_policy.lng b/interface/web/mail/lib/lang/hu_spamfilter_policy.lng index 391d4ab43aee0e05aabd367c850527eebb81e2ea..c2b6b9244c4fd14d4328ae39f9c70f8956c32bdc 100644 --- a/interface/web/mail/lib/lang/hu_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/hu_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Hibás fejléc admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Levél méret limit'; $wb['banned_rulenames_txt'] = 'Tiltószabály nevek'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/id.lng b/interface/web/mail/lib/lang/id.lng index c9acaf27f169e12d7bada6a4f21bc960bc753bf3..3a2b5dfe452b76e838f7b3d4f2cc180861247af2 100644 --- a/interface/web/mail/lib/lang/id.lng +++ b/interface/web/mail/lib/lang/id.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Penyaringan Global'; $wb['Domain Alias'] = 'Alias Domain'; $wb['Relay Recipients'] = 'Penerima Relay'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng index 435856c1059e8900ca00d218853009449be044cd..c380957fdc210a831adacd6059a232378ee4fe79 100644 --- a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nama domain tidak valid atau domain mengandung kara $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email untuk akun Anda sudah tercapai.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_user_filter.lng b/interface/web/mail/lib/lang/id_mail_user_filter.lng index 0def30d1a8db3e0ee6f1137af335d36edf72a348..93f45979f39348b4af6d623eb201895daee9775e 100644 --- a/interface/web/mail/lib/lang/id_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/id_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/id_spamfilter_policy.lng b/interface/web/mail/lib/lang/id_spamfilter_policy.lng index afa0ba1a0918c4401d61716d29627b25a0208906..9813dec470d870a8c507f0d343ff9de4c38c335b 100644 --- a/interface/web/mail/lib/lang/id_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/id_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin Bad header'; $wb['spam_admin_txt'] = 'Admin SPAM'; $wb['message_size_limit_txt'] = 'Batasan ukuran pesan'; $wb['banned_rulenames_txt'] = 'Nama aturan Banned'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/it.lng b/interface/web/mail/lib/lang/it.lng index 715e2efb8e43c73aa3679293b213e4a8f2af527a..15bc87ea3f470e39913aa49780cbe5a356e8a41f 100644 --- a/interface/web/mail/lib/lang/it.lng +++ b/interface/web/mail/lib/lang/it.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtri globali'; $wb['Domain Alias'] = 'Alias dominio'; $wb['Relay Recipients'] = 'Destinatari inoltro'; $wb['Mailbox quota'] = 'Quota Casella di Posta'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng index 6ff4cbdf1c9304d990b8092d050d8789bfef08e3..3345bed9c7e646b0cdab80cee00daa478c60a9cf 100644 --- a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Invalid domain name od domain contiene caratteri no $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts raggiunto per il tuo account.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/it_spamfilter_policy.lng b/interface/web/mail/lib/lang/it_spamfilter_policy.lng index e876330a68c7c365b12bf9a3f3cf6b5a652a6093..683b378c21e0eebc93556c6914165bc708521c02 100644 --- a/interface/web/mail/lib/lang/it_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/it_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ja.lng b/interface/web/mail/lib/lang/ja.lng index f8289d49070912e680894b451d301ea189a02fc7..818a3ed126e4c3823692a00db81cb1983f9d3ceb 100644 --- a/interface/web/mail/lib/lang/ja.lng +++ b/interface/web/mail/lib/lang/ja.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'グローバルフィルター'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng index cb430fefe650083a1b65cabf1e3b8a298f1626eb..6da7d05c5608ab897af68322f7c5a6e1203a84fd 100644 --- a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'ドメイン名が不正です。無効な文字を $wb['limit_mailcatchall_txt'] = 'キャッチオールアカウントが最大数に達したため、これ以上追加できません。'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_user_filter.lng b/interface/web/mail/lib/lang/ja_mail_user_filter.lng index 847640fee4a1f01ccdb0e3af6377026b8b29e1b9..8ee3801cc8d146ab6086a6c66f082dc0d5902a14 100644 --- a/interface/web/mail/lib/lang/ja_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ja_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/ja_spamfilter_policy.lng b/interface/web/mail/lib/lang/ja_spamfilter_policy.lng index 89d377a38429c6870ab5fccff09de4cf92cb7cc5..a23f28a7668c21998b91267daefb3e03dbd33502 100644 --- a/interface/web/mail/lib/lang/ja_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ja_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/nl.lng b/interface/web/mail/lib/lang/nl.lng index e47cc658114c9dfd015e145fd4a36b3bc24ee6dc..6664809b46c0df078a6b3caa4bd20713bcd694fb 100644 --- a/interface/web/mail/lib/lang/nl.lng +++ b/interface/web/mail/lib/lang/nl.lng @@ -13,7 +13,7 @@ $wb['Spamfilter'] = 'Spamfilter'; $wb['Email Routing'] = 'Email routing'; $wb['Email transport'] = 'Email transport'; $wb['Mailbox'] = 'Mailbox'; -$wb['Autoresponder'] = 'Autoresponder'; +$wb['Autoresponder'] = 'Autobeantwoorden'; $wb['Mail Filter'] = 'Mail filter'; $wb['Custom Rules'] = 'Custom rules'; $wb['Email filter'] = 'E-mail filter'; @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globale filters'; $wb['Domain Alias'] = 'Domein alias'; $wb['Relay Recipients'] = 'Relay ontvangers'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng index 06ad66c9bee5e0956fc4c12592dda50dae85f405..ee9c1f7678ae28fb04365a245a331d5848c1397f 100644 --- a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ongeldige domeinnaam of domein bevat ongeldige kara $wb['limit_mailcatchall_txt'] = 'Het max. aantal e-mail catchall accounts voor uw account is bereikt.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_get.lng b/interface/web/mail/lib/lang/nl_mail_get.lng index 5cbeab14e71c65c41eed389fae10e3dda398b44f..738f93e663f6a1cd26fe86fef7cf1941a27f5564 100644 --- a/interface/web/mail/lib/lang/nl_mail_get.lng +++ b/interface/web/mail/lib/lang/nl_mail_get.lng @@ -13,7 +13,7 @@ $wb['source_username_error_isempty'] = 'Gebruikersnaam is niet ingvuld.'; $wb['source_password_error_isempty'] = 'Wachtwoord is niet ingvuld.'; $wb['destination_error_isemail'] = 'Geen bestemming geselecteerd.'; $wb['source_server_error_regex'] = 'Pop3/Imap server is geen geldige domeinnaam.'; -$wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; -$wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; +$wb['source_read_all_txt'] = 'Haal alle berichten op (incl. reeds gelezen)'; +$wb['error_delete_read_all_combination'] = 'Ongeldige combinatie van opties. \\"Verwijder e-mails na ontvangst\\" en \\"Haal alle berichten op (incl. reeds gelezen)\\" werken niet samen.'; +$wb['source_delete_note_txt'] = 'Controleer voor het activeren van deze optie of het ophalen van berichten naar verwachting werkt.'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 94dd0183329ea6a9d369f939763c9f70c7e836c7..65d89a32afa938b07d3fc066e6152f2c299b63d7 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -9,7 +9,6 @@ $wb['email_error_unique'] = 'Duplicaat e-mail adres.'; $wb['autoresponder_text_txt'] = 'Tekst'; $wb['autoresponder_txt'] = 'Actief'; $wb['autoresponder_start_date_txt'] = 'Start op'; -$wb['autoresponder_start_date_ispast'] = 'Start datum mag niet in het verleden liggen.'; $wb['autoresponder_end_date_txt'] = 'Eindigt op'; $wb['autoresponder_end_date_isgreater'] = 'Einddatum moet later zijn dan de startdatum.'; $wb['no_domain_perm'] = 'U heeft geen toestemming voor dit domein.'; @@ -34,11 +33,11 @@ $wb['quota_error_value'] = 'Ongeldige quota waarde. Toegestane waarden zijn: 0 = $wb['move_junk_txt'] = 'Verplaats SPAM e-mails naar junk folder'; $wb['name_txt'] = 'Echte naam'; $wb['name_optional_txt'] = '(Optioneel)'; -$wb['autoresponder_active'] = 'Inschakelen autoresponder'; +$wb['autoresponder_active'] = 'Inschakelen autobeantwoorden'; $wb['cc_txt'] = 'Stuur kopie naar'; $wb['cc_error_isemail'] = 'Het \\"Stuur kopie naar\\" veld bevat geen geldig e-mail adres'; $wb['domain_txt'] = 'Domain'; -$wb['now_txt'] = 'Now'; +$wb['now_txt'] = 'Nu'; $wb['login_error_unique'] = 'Login is already taken.'; $wb['login_error_regex'] = 'Valid characters are A-Z, a-z, 0-9, ., _ and -.'; $wb['login_txt'] = 'Login (optional)'; @@ -58,7 +57,7 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; +$wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor het inschakelen van Autobeantwoorden.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; diff --git a/interface/web/mail/lib/lang/nl_mail_user_filter.lng b/interface/web/mail/lib/lang/nl_mail_user_filter.lng index 903b61072928c03f49e88a7d56ff92660364116b..95af45d96e51577b7f1c5fd1db3f3fe43889cf27 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_filter.lng @@ -7,23 +7,23 @@ $wb['rulename_error_empty'] = 'Naam is niet ingvuld.'; $wb['searchterm_is_empty'] = 'Zoekterm is niet ingvuld.'; $wb['source_txt'] = 'Bron'; $wb['target_error_regex'] = 'Het doel mag alleen de volgende karakters bevatten: a-z, 0-9, -, ., _, en {spatie}'; -$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; -$wb['subject_txt'] = 'Subject'; -$wb['from_txt'] = 'From'; -$wb['to_txt'] = 'To'; -$wb['contains_txt'] = 'Contains'; +$wb['limit_mailfilter_txt'] = 'Het max. aantal e-mail filters voor uw account is bereikt.'; +$wb['subject_txt'] = 'Onderwerp'; +$wb['from_txt'] = 'Afzender'; +$wb['to_txt'] = 'Bestemming'; +$wb['contains_txt'] = 'Bevat'; $wb['is_txt'] = 'Is'; -$wb['begins_with_txt'] = 'Begins with'; -$wb['ends_with_txt'] = 'Ends with'; -$wb['delete_txt'] = 'Delete'; -$wb['move_stop_txt'] = 'Move to'; +$wb['begins_with_txt'] = 'Begint met'; +$wb['ends_with_txt'] = 'Eindigt in'; +$wb['delete_txt'] = 'Verwijderen'; +$wb['move_stop_txt'] = 'Verplaatsen naar'; $wb['header_txt'] = 'Header'; -$wb['size_over_txt'] = 'Email size over (KB)'; -$wb['size_under_txt'] = 'Email size under (KB)'; +$wb['size_over_txt'] = 'Email grootte bove (KB)'; +$wb['size_under_txt'] = 'Email grootte onder (KB)'; $wb['localpart_txt'] = 'Localpart'; -$wb['domain_txt'] = 'Domain'; -$wb['keep_txt'] = 'Keep'; -$wb['reject_txt'] = 'Reject'; +$wb['domain_txt'] = 'Domein'; +$wb['keep_txt'] = 'Behouden'; +$wb['reject_txt'] = 'Afwijzen'; $wb['stop_txt'] = 'Stop'; -$wb['move_to_txt'] = 'Move to'; +$wb['move_to_txt'] = 'Verplaatsen naar'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user_list.lng b/interface/web/mail/lib/lang/nl_mail_user_list.lng index e421af0ecc6d674117e75721b808b96c9c70afaa..39125af2e0b544140587ca56ab95376a837351d5 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_list.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mail/lib/lang/nl_spamfilter_users.lng b/interface/web/mail/lib/lang/nl_spamfilter_users.lng index 4b7144b1f30d6baff0b0c3be6b66fdbcd1186126..697e130b35b684598ec557f33e87614e51ad65b5 100644 --- a/interface/web/mail/lib/lang/nl_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/nl_spamfilter_users.lng @@ -4,7 +4,7 @@ $wb['priority_txt'] = 'Prioriteit'; $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'E-mail (Patroon)'; $wb['fullname_txt'] = 'Naam'; -$wb['local_txt'] = 'Locaal'; +$wb['local_txt'] = 'Lokaal'; $wb['email_error_notempty'] = 'The email address must not be empty.'; $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; diff --git a/interface/web/mail/lib/lang/pl.lng b/interface/web/mail/lib/lang/pl.lng index 93861b784d051e3bf1f0136b7d2b611ab517c327..17b77019928c2b11d7eb14812ffb29ed7b56f8ee 100644 --- a/interface/web/mail/lib/lang/pl.lng +++ b/interface/web/mail/lib/lang/pl.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globalne filtry'; $wb['Domain Alias'] = 'Alias domeny'; $wb['Relay Recipients'] = 'Odbiorcy przekierowania'; $wb['Mailbox quota'] = 'Użycie skrzynek email'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng index 3630b954bfe00f3dccaeb2b8d61e9cb53ea7de6d..fad83875ca1b49db9b09a750e13b07c08348e2e6 100644 --- a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nieprawidłowa nazwa domeny. Domena zawiera niedozo $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall dla Twojej domeny została przekroczona.'; $wb['source_txt'] = 'Źródło'; $wb['destination_error_isemail'] = 'Cel nie jest poprawnym adresem email.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/pl_spamfilter_policy.lng b/interface/web/mail/lib/lang/pl_spamfilter_policy.lng index 8a825b55946b39c68fb62b2fd44339a978b00561..8291102308654357da915677a39d56430e350eb5 100644 --- a/interface/web/mail/lib/lang/pl_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/pl_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin obsługi złych nagłowków'; $wb['spam_admin_txt'] = 'Admin obsługi spamu'; $wb['message_size_limit_txt'] = 'Limit wielkości wiadomości'; $wb['banned_rulenames_txt'] = 'Zabronione nazwy zasad'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/pt.lng b/interface/web/mail/lib/lang/pt.lng index 7a9a69cf838c9e80ea109927e7d7061df11b93ce..d47eb6183bdcfe5f10c3a579c545034d9649a4c4 100644 --- a/interface/web/mail/lib/lang/pt.lng +++ b/interface/web/mail/lib/lang/pt.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtros Globais'; $wb['Domain Alias'] = 'Domínios Alias'; $wb['Relay Recipients'] = 'Recipientes de Relay'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng index 1fde21c02051139d5c116dd393227a1788075fe2..e81afd74b904f757edfe264b9146c95d64099ce3 100644 --- a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'O nome do domínio contém caracteres inválidos'; $wb['limit_mailcatchall_txt'] = 'O número máximo de catchall para este domínio foi atingido.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_user_filter.lng b/interface/web/mail/lib/lang/pt_mail_user_filter.lng index 42a7481d70fd920312f11f51706a6fe19097e0ac..906c27ecd2d6e523b6b8ec5c255383e1d065f33e 100644 --- a/interface/web/mail/lib/lang/pt_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/pt_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/pt_spamfilter_policy.lng b/interface/web/mail/lib/lang/pt_spamfilter_policy.lng index 1610aebdcaf6814a35a9b5938f55438eed093227..af960c99f610a4800f4e0a323ad8b00d98b5df83 100644 --- a/interface/web/mail/lib/lang/pt_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/pt_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Administrador de Bad header'; $wb['spam_admin_txt'] = 'Administrador SPAM'; $wb['message_size_limit_txt'] = 'Tamanho limite da mensagem'; $wb['banned_rulenames_txt'] = 'Regras de Banimento'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ro.lng b/interface/web/mail/lib/lang/ro.lng index dbfa06bcc8510e898890dbe6267abf5db66d82b2..0c0e85995eadbea6e8b9024dfcadd4f3d3744ee0 100644 --- a/interface/web/mail/lib/lang/ro.lng +++ b/interface/web/mail/lib/lang/ro.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtre Global'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng index 97add765ab27660b2057353b254679e74a66a95f..c0689ca04465f0174fae8f64c43df4ef5d9d7d21 100644 --- a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'nume de domeniu invalid sau caractere nepermise'; $wb['limit_mailcatchall_txt'] = 'numarul maxim de CATCHALL pe contul dumneavoatra a fost atins'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_user_filter.lng b/interface/web/mail/lib/lang/ro_mail_user_filter.lng index 7c5c72ad72a34bca4e01c691e2014f1d0f2a7309..22435d9e91524bfa0167dd2a79a4940e828cc404 100644 --- a/interface/web/mail/lib/lang/ro_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ro_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/ro_spamfilter_policy.lng b/interface/web/mail/lib/lang/ro_spamfilter_policy.lng index 3645b3e1d1c444f8cfc66b514cd7ff847069952b..f77d0f3e5a9f08cedd95c2f319e2fbfbb5b25923 100644 --- a/interface/web/mail/lib/lang/ro_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ro_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = ' header defect admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned nume reguli'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ru.lng b/interface/web/mail/lib/lang/ru.lng index 124441ffa9ee2153460f68e3b3e28325ab8fda8f..1b7995e024a5f4366b544ec2cb74ced8e7664523 100644 --- a/interface/web/mail/lib/lang/ru.lng +++ b/interface/web/mail/lib/lang/ru.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Глобальные фильтры'; $wb['Domain Alias'] = 'Алиасы доменов'; $wb['Relay Recipients'] = 'Relay получатели'; $wb['Mailbox quota'] = 'Квота почтового ящика'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng index 60d3ebd326e87ae26ce931316aefa05e1a3c8e25..25349ca4972447406c55fcfa33558bbd548286a7 100644 --- a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Некорректное имя домена.'; $wb['limit_mailcatchall_txt'] = 'Максимальное число Макс. количество учётных записей сводных почтовых ящиков достигнуто.'; $wb['source_txt'] = 'Источник'; $wb['destination_error_isemail'] = 'Не выбран получатель или запись некорректна.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_get.lng b/interface/web/mail/lib/lang/ru_mail_get.lng index 0ce613cd0538cd1f020b538c1b1a111c5e7edc51..b3f2f0b6bf993b5ea160c822947364ff2ef426c2 100644 --- a/interface/web/mail/lib/lang/ru_mail_get.lng +++ b/interface/web/mail/lib/lang/ru_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Пустой пароль.'; $wb['destination_error_isemail'] = 'Не выбран получатель или запись некорректна.'; $wb['source_server_error_regex'] = 'Некорректное доменное имя для сервера POP3/IMAP.'; $wb['source_read_all_txt'] = 'Получать все сообщения электронной почты (включая прочитанные письма)'; -$wb['error_delete_read_all_combination'] = 'Недопустимая комбинация параметров. Вы не можете использовать \"Удалить письма после получения\" = НЕТ вместе с \"Получить все письма\" = ДА'; +$wb['error_delete_read_all_combination'] = 'Недопустимая комбинация параметров. Вы не можете использовать \\"Удалить письма после получения\\" = НЕТ вместе с \\"Получить все письма\\" = ДА'; $wb['source_delete_note_txt'] = 'Пожалуйста, прежде чем активировать этот параметр, убедитесь в том, что сборщик почты работает.'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_user_filter.lng b/interface/web/mail/lib/lang/ru_mail_user_filter.lng index ecc2d25b9de7fad9ee7bc584aea3c7ec8013c1f4..c8306f9838ece9c91db26e241b3ae531bbe04464 100644 --- a/interface/web/mail/lib/lang/ru_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ru_mail_user_filter.lng @@ -6,7 +6,7 @@ $wb['active_txt'] = 'Активно'; $wb['rulename_error_empty'] = 'Имя пустое.'; $wb['searchterm_is_empty'] = 'Поле поиска пустое.'; $wb['source_txt'] = 'Источник'; -$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \"a-z\", \"0-9\", \"-\", \".\", \"_\" и {пробел}'; +$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \\"a-z\\", \\"0-9\\", \\"-\\", \\".\\", \\"_\\" и {пробел}'; $wb['limit_mailfilter_txt'] = 'Максимальное число почтовых фильтров достигнуто.'; $wb['subject_txt'] = 'Тема'; $wb['from_txt'] = 'От'; diff --git a/interface/web/mail/lib/lang/ru_spamfilter_policy.lng b/interface/web/mail/lib/lang/ru_spamfilter_policy.lng index 7bae8a0fd0b2ef0b5490bfbb3a1b436a6b5c4a7e..bab0a9ba0c96072796ba75fe397fc1b117d0b636 100644 --- a/interface/web/mail/lib/lang/ru_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ru_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Админ: кривые заголовки'; $wb['spam_admin_txt'] = 'Админ: СПАМ'; $wb['message_size_limit_txt'] = 'Превышен размер сообщения'; $wb['banned_rulenames_txt'] = 'Правила банов'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/se.lng b/interface/web/mail/lib/lang/se.lng index 3edc2034d007c8f49e8ee0d6f9eb2da5b37021bb..7a415aa9011c8b1375d81419670403ff2c4b3dc0 100644 --- a/interface/web/mail/lib/lang/se.lng +++ b/interface/web/mail/lib/lang/se.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filters'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng index 7ef1116390f8acddcd7d556415746b566757c5d7..39c6e6c55943bb69f20f95d8aee594becf10e700 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ogiltig domän eller domänen innehåller ogiltiga $wb['limit_mailcatchall_txt'] = 'Det maximala antalet catchall-adresser för ditt konto är uppnått.'; $wb['source_txt'] = 'Källa'; $wb['destination_error_isemail'] = 'Destinationen när inte en giltig epostadress.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/se_spamfilter_policy.lng b/interface/web/mail/lib/lang/se_spamfilter_policy.lng index e876330a68c7c365b12bf9a3f3cf6b5a652a6093..683b378c21e0eebc93556c6914165bc708521c02 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/sk.lng b/interface/web/mail/lib/lang/sk.lng index 22773a574a1ef64778d0d885701ea0c999d8f414..7b00f9d52c575ad9c4713751c9f83b177c907536 100644 --- a/interface/web/mail/lib/lang/sk.lng +++ b/interface/web/mail/lib/lang/sk.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globálne Filtere'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng index 38c37544e6411712ded4afd018d5503060885dc4..03c701c6db9edef1841ce6f03cc7d85059d486b9 100644 --- a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Neplatný názov domény alebo doména obsahuje nep $wb['limit_mailcatchall_txt'] = 'Max. počet e-mailových doménových košov pre Váš účet je dosiahnutý.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_user_filter.lng b/interface/web/mail/lib/lang/sk_mail_user_filter.lng index 20904653c65588524f931debd9eb890d8f5569eb..7546cd6afa278c1cf57224c389335b9ee147f6dc 100644 --- a/interface/web/mail/lib/lang/sk_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/sk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/sk_spamfilter_policy.lng b/interface/web/mail/lib/lang/sk_spamfilter_policy.lng index b58988d60b992ae6e1935c5f08feb4ad9e57f6a1..6a4d6362595b5df63fa9a54467ff6e7b7e6a3e73 100644 --- a/interface/web/mail/lib/lang/sk_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/sk_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Zlé hlavičky admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Limit veľkosti správy'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/tr.lng b/interface/web/mail/lib/lang/tr.lng index e2deaca006ce30b6fb2e01b73c017c7f53a6b575..52d1868b3eb79a95f935fd6913e74b64bf6ba6a2 100644 --- a/interface/web/mail/lib/lang/tr.lng +++ b/interface/web/mail/lib/lang/tr.lng @@ -4,45 +4,48 @@ $wb['Email Blacklist'] = 'E-posta Kara Listesi'; $wb['Blacklist'] = 'Kara Liste'; $wb['Mail Content Filter'] = 'E-posta İçerik Süzgeci'; $wb['Filter'] = 'Süzgeç'; -$wb['Mail Domain'] = 'E-posta Alan Adı'; -$wb['Domain'] = 'Alan Adı'; +$wb['Mail Domain'] = 'E-posta Etki Alanı'; +$wb['Domain'] = 'Etki Alanı'; $wb['Email Catchall'] = 'E-posta Tümünü Alma'; $wb['Email Forward'] = 'E-posta Yönlendirme'; $wb['Get Email'] = 'E-posta Al'; -$wb['Spamfilter'] = 'Önemsiz Posta Süzgeci'; +$wb['Spamfilter'] = 'Önemsiz İleti Süzgeci'; $wb['Email Routing'] = 'E-posta Yöneltme'; $wb['Email transport'] = 'E-posta Aktarma'; -$wb['Mailbox'] = 'Posta Kutusu'; +$wb['Mailbox'] = 'E-posta Kutusu'; $wb['Autoresponder'] = 'Otomatik Yanıtlayıcı'; -$wb['Mail Filter'] = 'Posta Süzgeci'; +$wb['Mail Filter'] = 'E-posta Süzgeci'; $wb['Custom Rules'] = 'Özel Kurallar'; $wb['Email filter'] = 'E-posta Süzgeci'; $wb['Email Whitelist'] = 'E-posta Beyaz Listesi'; $wb['Whitelist'] = 'Beyaz Liste'; -$wb['Spamfilter blacklist'] = 'Önemsiz Posta Süzgeci Kara Listesi'; -$wb['Spamfilter Config'] = 'Önemsiz Posta Süzgeci Ayarları'; +$wb['Spamfilter blacklist'] = 'Önemsiz İleti Süzgeci Kara Listesi'; +$wb['Blacklist'] = 'Kara Liste'; +$wb['Spamfilter Config'] = 'Önemsiz İleti Süzgeci Ayarları'; $wb['Server'] = 'Sunucu'; -$wb['Spamfilter policy'] = 'Önemsiz Posta Süzgeci Kuralları'; +$wb['Spamfilter policy'] = 'Önemsiz İleti Süzgeci Kuralları'; $wb['Policy'] = 'Kural'; $wb['Quarantine'] = 'Karantina'; $wb['Tag-Level'] = 'Etiket Düzeyi'; $wb['Other'] = 'Diğer'; -$wb['Spamfilter users'] = 'Önemsiz Posta Süzgeci Kullanıcıları'; +$wb['Spamfilter users'] = 'Önemsiz İleti Süzgeci Kullanıcıları'; $wb['Users'] = 'Kullanıcılar'; -$wb['Spamfilter Whitelist'] = 'Önemsiz Posta Beyaz Listesi'; +$wb['Spamfilter Whitelist'] = 'Önemsiz İleti Beyaz Listesi'; +$wb['Whitelist'] = 'Beyaz Liste'; $wb['Email'] = 'E-posta'; $wb['Email Mailbox'] = 'E-posta Kutusu'; $wb['Email Accounts'] = 'E-posta Hesapları'; -$wb['User / Domain'] = 'Kullanıcı / Alan Adı'; +$wb['User / Domain'] = 'Kullanıcı / Etki Alanı'; $wb['Server Settings'] = 'Sunucu Ayarları'; -$wb['Fetchmail'] = 'Posta Alma'; -$wb['Mailbox traffic'] = 'Posta Kutusu Trafiği'; +$wb['Spamfilter'] = 'Önemsiz İleti Süzgeci'; +$wb['Fetchmail'] = 'E-posta Alma'; +$wb['Mailbox traffic'] = 'E-posta Kutusu Trafiği'; $wb['Statistics'] = 'İstatistikler'; $wb['Postfix Whitelist'] = 'Postfix Beyaz Liste'; $wb['Postfix Blacklist'] = 'Postfix Kara Liste'; $wb['Content Filter'] = 'İçerik Süzgeci'; $wb['Global Filters'] = 'Genel Süzgeçler'; -$wb['Domain Alias'] = 'Takma Alan Adı'; +$wb['Domain Alias'] = 'Takma Etki Alanı'; $wb['Relay Recipients'] = 'Aktarılan Alıcılar'; -$wb['Mailbox quota'] = 'Posta Kutusu Kotası'; +$wb['Mailbox quota'] = 'E-posta Kutusu Kotası'; ?> diff --git a/interface/web/mail/lib/lang/tr_backup_stats_list.lng b/interface/web/mail/lib/lang/tr_backup_stats_list.lng index 79cd6c9a63589ba43dd7772821c3d63f7b7a8394..125bfc8284c22feda733a6e37db8ae1cdf5a05b4 100644 --- a/interface/web/mail/lib/lang/tr_backup_stats_list.lng +++ b/interface/web/mail/lib/lang/tr_backup_stats_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_alias.lng b/interface/web/mail/lib/lang/tr_mail_alias.lng index d3fd3f1271fd5bc078118526b82644db4c11dc64..ea440b2e63004a783c017a9c6580106493e34cd8 100644 --- a/interface/web/mail/lib/lang/tr_mail_alias.lng +++ b/interface/web/mail/lib/lang/tr_mail_alias.lng @@ -4,14 +4,14 @@ $wb['destination_txt'] = 'Hedef'; $wb['active_txt'] = 'Etkin'; $wb['email_error_isemail'] = 'E-posta adresi geçersiz.'; $wb['email_error_unique'] = 'Bu e-posta adresi zaten var'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.'; $wb['limit_mailalias_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma e-posta adresi sayısına ulaştınız.'; -$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir posta kutusu zaten var'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['duplicate_mailbox_txt'] = 'Bu adresi kullanan bir e-posta kutusu zaten var'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['duplicate_email_alias_txt'] = 'Bu takma e-posta adresi zaten var.'; $wb['source_txt'] = 'Takma Ad'; -$wb['send_as_txt'] = 'Send as'; -$wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -$wb['greylisting_txt'] = 'Enable greylisting'; +$wb['send_as_txt'] = 'Gönderen'; +$wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin'; +$wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng b/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng index d39c6f46a37f0b0371ff5b82e704c811792ec878..f6cd98261b171071ea21f50418bf7f2f892f660b 100644 --- a/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng +++ b/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng @@ -2,10 +2,10 @@ $wb['source_txt'] = 'Kaynak'; $wb['destination_txt'] = 'Hedef'; $wb['active_txt'] = 'Etkin'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; -$wb['limit_mailaliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma alan adı sayısına ulaştınız.'; -$wb['source_destination_identical_txt'] = 'Kaynak ve Hedef alan adları aynı.'; -$wb['source_error_empty'] = 'Kaynak alan adı boş olamaz.'; -$wb['source_error_unique'] = 'Bu kaynak alan adı zaten var.'; -$wb['source_error_regex'] = 'Kaynak alan adı geçersiz.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; +$wb['limit_mailaliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.'; +$wb['source_destination_identical_txt'] = 'Kaynak ve Hedef etki alanları aynı.'; +$wb['source_error_empty'] = 'Kaynak etki alanı boş olamaz.'; +$wb['source_error_unique'] = 'Bu kaynak etki alanı zaten var.'; +$wb['source_error_regex'] = 'Kaynak etki alanı geçersiz.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng index a6d3dfc3b98ad4a51a12e0ca5187e4bf19b0fef3..7cbc3aef9e72b8dae796c55eeaef9d56306d3cd1 100644 --- a/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng @@ -1,7 +1,8 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_backup_list.lng b/interface/web/mail/lib/lang/tr_mail_backup_list.lng index 73286a0737103be7877ad8d6c3f4aaa669042224..1a5ae7227b7ecc08956e808a98d1cac7b900889c 100644 --- a/interface/web/mail/lib/lang/tr_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_backup_list.lng @@ -1,16 +1,16 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist.lng b/interface/web/mail/lib/lang/tr_mail_blacklist.lng index ecdca0b1a5b390899b2c0ffe20c58d43475bdf4b..381a11fa98c2f651fd77a823bff5c88e4cb0ebda 100644 --- a/interface/web/mail/lib/lang/tr_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/tr_mail_blacklist.lng @@ -4,6 +4,6 @@ $wb['source_txt'] = 'Kara Listedeki Adres'; $wb['recipient_txt'] = 'Alıcı'; $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boş olamaz.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng b/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng index b9bf6ff92c1ee35879b86c488eb8294d810629d3..9446569f4f48683b7b057b44c89d4d61b1846d33 100644 --- a/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'E-posta Kara Listesi'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['source_txt'] = 'Kara Listedeki Adres'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['recipient_txt'] = 'Alıcı'; $wb['add_new_record_txt'] = 'Kara Liste Kaydı Ekle'; $wb['access_txt'] = 'Erişim'; diff --git a/interface/web/mail/lib/lang/tr_mail_content_filter.lng b/interface/web/mail/lib/lang/tr_mail_content_filter.lng index f13b01a680adeec05acb4472a1504c3941a43ac8..df2d4d5c431278891289998d15333408d3600e85 100644 --- a/interface/web/mail/lib/lang/tr_mail_content_filter.lng +++ b/interface/web/mail/lib/lang/tr_mail_content_filter.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_domain.lng b/interface/web/mail/lib/lang/tr_mail_domain.lng index 4ee4aa50fa54f3a56fbd8ad649f1fd5bba1f2454..3e7d9cc4122771cb73fdcf4d7e212007959b37fb 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain.lng @@ -1,23 +1,23 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng index 7d56618eef6a061be68efceb10bd2017e711ccdf..f6937ab382c8b1dd5cc2896a8a4e86129268951d 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng index 037d2ad16e295bba7ff12cbe315b68584a130356..bcdf6298469c4abae5b2785636387d18a12f73cd 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng @@ -1,11 +1,12 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng index 596e2dbdaed1447bb1ec374a2be070da081e9370..45a59fe831c628121c0b0305cc989e8a31bc391c 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng @@ -2,8 +2,8 @@ $wb['list_head_txt'] = 'E-posta Tümünü Al Hesabı'; $wb['active_txt'] = 'Etkin'; $wb['source_txt'] = 'Kaynak'; -$wb['destination_txt'] = 'Hedef e-posta adresi'; +$wb['destination_txt'] = 'Hedef E-posta Adresi'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Tümünü Al Hesabı Ekle'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_list.lng index 7a4a1f2b64a1c25e7451f57942e55aad2a4b9f6f..06a44455ebea967a1250c3cb7c51e73e93d409c4 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_forward.lng b/interface/web/mail/lib/lang/tr_mail_forward.lng index f96a0e4c070a1230606778be23f5fa806360a584..2352cd945f1922157886698000a7d5637f5681d0 100644 --- a/interface/web/mail/lib/lang/tr_mail_forward.lng +++ b/interface/web/mail/lib/lang/tr_mail_forward.lng @@ -3,11 +3,11 @@ $wb['email_txt'] = 'E-posta'; $wb['destination_txt'] = 'Hedef E-posta'; $wb['active_txt'] = 'Etkin'; $wb['limit_mailforward_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta yönlendirme sayısına ulaştınız.'; -$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir posta kutusu zaten var'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir e-posta kutusu zaten var'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['source_txt'] = 'Kaynak E-posta'; -$wb['email_error_isemail'] = 'Please enter a valid email address.'; -$wb['send_as_txt'] = 'Send as'; -$wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -$wb['greylisting_txt'] = 'Enable greylisting'; +$wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.'; +$wb['send_as_txt'] = 'Gönderen'; +$wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin (hedef iç kullanıcı ise)'; +$wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_get.lng b/interface/web/mail/lib/lang/tr_mail_get.lng index b82b6c8c9a7f441d3bfc9da60b17ae97232b0f4f..2ad34342658f2d25e7bb4ac2cceb4c79f799679d 100644 --- a/interface/web/mail/lib/lang/tr_mail_get.lng +++ b/interface/web/mail/lib/lang/tr_mail_get.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng index 17bfab31dcfce0b251f4a1ae22498a25bcf208be..4bd52db75e65b96c2fa8320e8408ee60e215e288 100644 --- a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng @@ -1,19 +1,19 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng b/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng index 90153f8c4dc0944f2677bd129f074e702292caf0..a7d83620cb8bc5054d44f3cfbe8d0015c16d8f7e 100644 --- a/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng +++ b/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng @@ -4,6 +4,6 @@ $wb['source_txt'] = 'Aktarılan Alıcı'; $wb['recipient_txt'] = 'Alıcı'; $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boş olamaz.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_spamfilter.lng b/interface/web/mail/lib/lang/tr_mail_spamfilter.lng index be63f712007019d7c8a10ea4e885fe432ac1ed10..6a708982f1bd8ab960a80cef9e4a972cc81de67a 100644 --- a/interface/web/mail/lib/lang/tr_mail_spamfilter.lng +++ b/interface/web/mail/lib/lang/tr_mail_spamfilter.lng @@ -7,11 +7,11 @@ $wb['spam_rewrite_subject_txt'] = 'Konuyu yeniden yaz'; $wb['spam_redirect_maildir_txt'] = 'Mail kutusuna yönlendir'; $wb['active_txt'] = 'Etkin'; $wb['spam_rewrite_txt'] = 'Bu puanın üzerindeki e-posta konusunu yeniden yaz.'; -$wb['spam_redirect_txt'] = 'Bu puanın üzerindeki e-postayı seçilmiş posta kutusuna yönlendir.'; +$wb['spam_redirect_txt'] = 'Bu puanın üzerindeki e-postayı seçilmiş e-posta kutusuna yönlendir.'; $wb['spam_delete_txt'] = 'Bu puanın üzerindeki e-postayı sil.'; $wb['disable_txt'] = 'İpucu: Bir süzgeç seçeneğini devre dışı bırakmak için, puanı 0.00 olarak yazın.'; $wb['email_error_isemail'] = 'E-posta adresi geçersiz.'; -$wb['email_error_unique'] = 'Bu e-posta adresi için önemiz posta süzgeci kaydı zaten var.'; -$wb['spam_redirect_maildir_purge_txt'] = 'Posta klasörü'; +$wb['email_error_unique'] = 'Bu e-posta adresi için önemiz e-posta süzgeci kaydı zaten var.'; +$wb['spam_redirect_maildir_purge_txt'] = 'E-posta Klasörü'; $wb['days_txt'] = ' gün aralıklarla temizlensin.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng index 90981ad8fe48984c13ffde8e724205c408e6a4af..6901f541bd06a5d9988301bbb588f8bdbbe9f755 100644 --- a/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_transport.lng b/interface/web/mail/lib/lang/tr_mail_transport.lng index f268fd5475855bd3e7421835c312dc07f903f83b..0b417703924b126b2dcfbf5a46fd13d30861844c 100644 --- a/interface/web/mail/lib/lang/tr_mail_transport.lng +++ b/interface/web/mail/lib/lang/tr_mail_transport.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_user_filter.lng b/interface/web/mail/lib/lang/tr_mail_user_filter.lng index 8897a9d18b472f2968e2389d3da6f9f5fa4bb06d..ba55be63dcb89295da8d59729da755fad6bd1e02 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_filter.lng @@ -7,7 +7,7 @@ $wb['rulename_error_empty'] = 'Ad boş olamaz.'; $wb['searchterm_is_empty'] = 'Aranacak ifade boş olamaz.'; $wb['source_txt'] = 'Kaynak'; $wb['target_error_regex'] = 'Hedef için yalnız şu karakterler kullanılabilir: a-z, 0-9, -, ., _, ve {boşluk}'; -$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla posta süzgeci sayısına ulaştınız.'; +$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla e-posta süzgeci sayısına ulaştınız.'; $wb['subject_txt'] = 'Konu'; $wb['from_txt'] = 'Kimden'; $wb['to_txt'] = 'Kime'; @@ -25,5 +25,5 @@ $wb['domain_txt'] = 'Etki alanı'; $wb['keep_txt'] = 'Tut'; $wb['reject_txt'] = 'Reddet'; $wb['stop_txt'] = 'Durdur'; -$wb['move_to_txt'] = 'Move to'; +$wb['move_to_txt'] = 'Şuraya Taşı'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_user_list.lng b/interface/web/mail/lib/lang/tr_mail_user_list.lng index 6310ce40380f0c9e29f593a113b5a188bc61b76b..66d33becae6743af9de7d590b72237b97af9851b 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng b/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng index 7809a24fe87d858e17cc2e51d7313549dfe81f5f..736b395ca0af6e7e2fc73758217cfa17918cd3f0 100644 --- a/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'E-posta Beyaz Listesi'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['source_txt'] = 'Beyaz Listedeki Adres'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['recipient_txt'] = 'Alıcı'; $wb['add_new_record_txt'] = 'Beyaz Liste Kaydı Ekle'; $wb['access_txt'] = 'Erişim'; diff --git a/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng index 1e0f673474eca86e236788bc45068a24d22bd648..40e3c5fb141dd0f6ee767b0ed4931ed5bb507da3 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng index 2b6e0b3c18ce550c38b4a5ceb243d31d8faefeca..dc30cf868a26b78dab30fb4268ba7cfdf91df060 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng index 721b0490f7eb6ad5d7ceb7e8ebee01a63cb5b059..45a52ffc92ffdd4b808a2f32209c3feb15f59d2c 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng @@ -1,38 +1,38 @@ diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng index 78459c3f238285d4d59f94e172249493461eede6..cb5b9b83afa6d245fe96c179132a7ba5d0423ff8 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng index 847c5bdf4fd79412bc4e0a81b95cf0f41d793c2c..bee9372cbf2665a1256e633fd38e724a38fe3e43 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng index c29bf003c5cbbf1e07dc4ec22eb938cf95bebd92..5e1f95da1c83f0c858ef60b4077d23f0cb274f2e 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng b/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng index af643eab5aee3835de27ff78c851d0048052fefe..0a0c7abe6071c0dd0a876fcba1987a63313f26de 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng b/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng index ebfebab7d50cc92cd87be46e8de665ba2bfb6f23..50a7d55cd22bfbef355a7ba53e3f57c94baf8185 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/mail/lib/lang/tr_xmpp_user.lng b/interface/web/mail/lib/lang/tr_xmpp_user.lng index 6ab739d98b9ad877f9f9de5f04530b7add424fd5..c83f1ecef04c507a50a55c4bb3a93ddad3b2b93d 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_user.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_user.lng @@ -1,15 +1,15 @@ diff --git a/interface/web/mail/lib/lang/tr_xmpp_user_list.lng b/interface/web/mail/lib/lang/tr_xmpp_user_list.lng index f2651cb62b0cfbe55156d943e91fd7e0c33ac515..a6af23d15bb8655737cb40e563325c09f36b3173 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_user_list.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_user_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mail/mail_blacklist_del.php b/interface/web/mail/mail_blacklist_del.php index 3cb83a50a00dcc3859335bc5f7e3df4546c1994b..d3bbc5d5d581991078d44997aa583d1550243181 100644 --- a/interface/web/mail/mail_blacklist_del.php +++ b/interface/web/mail/mail_blacklist_del.php @@ -42,6 +42,9 @@ $tform_def_file = "form/mail_blacklist.tform.php"; require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; + +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); + //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_blacklist_edit.php b/interface/web/mail/mail_blacklist_edit.php index f7e2d15e3f519c1c79690b5b0fd0a47ba0107eb9..e2f284a34ed84df3a0c397aee67107eeabb15468 100644 --- a/interface/web/mail/mail_blacklist_edit.php +++ b/interface/web/mail/mail_blacklist_edit.php @@ -53,16 +53,7 @@ class page_action extends tform_actions { function onShowNew() { global $app, $conf; - // we will check only users, not admins - if($_SESSION["s"]["user"]["typ"] == 'user') { - if(!$app->tform->checkClientLimit('limit_mailfilter')) { - $app->error($app->tform->wordbook["limit_mailfilter_txt"]); - } - if(!$app->tform->checkResellerLimit('limit_mailfilter')) { - $app->error('Reseller: '.$app->tform->wordbook["limit_mailfilter_txt"]); - } - } - + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); parent::onShowNew(); } @@ -70,6 +61,8 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + //* Check if the server has been changed // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { @@ -86,24 +79,10 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if(substr($this->dataRecord['source'], 0, 1) === '@') $this->dataRecord['source'] = substr($this->dataRecord['source'], 1); - // Check the client limits, if user is not the admin - if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin - // Get the limits of the client - $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); - $client = $app->db->queryOneRecord("SELECT limit_mailfilter FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?" , $client_group_id); - - // Check if the user may add another mailbox. - if($this->id == 0 && $client["limit_mailfilter"] >= 0) { - $tmp = $app->db->queryOneRecord("SELECT count(access_id) as number FROM mail_access WHERE sys_groupid = ?", $client_group_id); - if($tmp["number"] >= $client["limit_mailfilter"]) { - $app->tform->errorMessage .= $app->tform->wordbook["limit_mailfilter_txt"]."
"; - } - unset($tmp); - } - } // end if user is not admin - parent::onSubmit(); } diff --git a/interface/web/mail/mail_blacklist_list.php b/interface/web/mail/mail_blacklist_list.php index cf1e50ddaaf5a319cc605f1376ac47d0e6921a4a..2bdc1e93b8270148285eb4d705dfa7b47cadcfce 100644 --- a/interface/web/mail/mail_blacklist_list.php +++ b/interface/web/mail/mail_blacklist_list.php @@ -12,6 +12,8 @@ $list_def_file = "list/mail_blacklist.list.php"; * End Form configuration ******************************************/ +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); + //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index e39de91e0ffe02f90c4ec9f907c8d8e12520dab9..28d4f40917045d3f731260699baadfa26ea3fa77 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -273,7 +273,10 @@ class page_action extends tform_actions { } //* make sure that the email domain is lowercase - if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); + if(isset($this->dataRecord["domain"])){ + $this->dataRecord["domain"] = $app->functions->idn_encode($this->dataRecord["domain"]); + $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); + } parent::onSubmit(); @@ -281,11 +284,13 @@ class page_action extends tform_actions { function onAfterInsert() { global $app, $conf; + + $domain = $app->functions->idn_encode($this->dataRecord["domain"]); // Spamfilter policy $policy_id = $app->functions->intval($this->dataRecord["policy"]); if($policy_id > 0) { - $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $this->dataRecord["domain"]); + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $domain); if($tmp_user["id"] > 0) { // There is already a record that we will update $app->db->datalogUpdate('spamfilter_users', array("policy_id" => $policy_id), 'id', $tmp_user["id"]); @@ -301,8 +306,8 @@ class page_action extends tform_actions { "server_id" => $this->dataRecord["server_id"], "priority" => 5, "policy_id" => $policy_id, - "email" => '@' . $this->dataRecord["domain"], - "fullname" => '@' . $this->dataRecord["domain"], + "email" => '@' . $domain, + "fullname" => '@' . $domain, "local" => 'Y' ); $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); @@ -315,7 +320,7 @@ class page_action extends tform_actions { $soaDomain = $this->dataRecord['domain'].'.'; while ((!isset($soa) && (substr_count($soaDomain,'.') > 1))) { $soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $soaDomain); - $soaDomain = preg_replace("/^\w+\./","",$soaDomain); + $soaDomain = preg_replace("/^[^\.]+\./","",$soaDomain); } if ( isset($soa) && !empty($soa) ) $this->update_dns($this->dataRecord, $soa); } @@ -324,6 +329,8 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; + + $domain = $app->functions->idn_encode($this->dataRecord["domain"]); //* Check if the server has been changed // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway @@ -339,7 +346,7 @@ class page_action extends tform_actions { } else { //* We do not allow users to change a domain which has been created by the admin $rec = $app->db->queryOneRecord("SELECT domain from mail_domain WHERE domain_id = ?", $this->id); - if($rec['domain'] != $this->dataRecord["domain"] && !$app->tform->checkPerm($this->id, 'u')) { + if($rec['domain'] != $domain && !$app->tform->checkPerm($this->id, 'u')) { //* Add a error message and switch back to old server $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'); $this->dataRecord["domain"] = $rec['domain']; @@ -352,9 +359,11 @@ class page_action extends tform_actions { function onAfterUpdate() { global $app, $conf; + $domain = $app->functions->idn_encode($this->dataRecord["domain"]); + // Spamfilter policy $policy_id = $app->functions->intval($this->dataRecord["policy"]); - $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $this->dataRecord["domain"]); + $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = ?", '@' . $domain); if($policy_id > 0) { if($tmp_user["id"] > 0) { // There is already a record that we will update @@ -371,8 +380,8 @@ class page_action extends tform_actions { "server_id" => $this->dataRecord["server_id"], "priority" => 5, "policy_id" => $policy_id, - "email" => '@' . $this->dataRecord["domain"], - "fullname" => '@' . $this->dataRecord["domain"], + "email" => '@' . $domain, + "fullname" => '@' . $domain, "local" => 'Y' ); $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); @@ -385,7 +394,7 @@ class page_action extends tform_actions { } } // endif spamfilter policy //** If the domain name or owner has been changed, change the domain and owner in all mailbox records - if($this->oldDataRecord['domain'] != $this->dataRecord['domain'] || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) { + if($this->oldDataRecord['domain'] != $domain || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) { $app->uses('getconf'); $mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"], 'mail'); @@ -398,7 +407,7 @@ class page_action extends tform_actions { foreach($mailusers as $rec) { // setting Maildir, Homedir, UID and GID $mail_parts = explode("@", $rec['email']); - $maildir = str_replace("[domain]", $this->dataRecord['domain'], $mail_config["maildir_path"]); + $maildir = str_replace("[domain]", $domain, $mail_config["maildir_path"]); $maildir = str_replace("[localpart]", $mail_parts[0], $maildir); $email = $mail_parts[0].'@'.$this->dataRecord['domain']; $app->db->datalogUpdate('mail_user', array("maildir" => $maildir, "email" => $email, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailuser_id', $rec['mailuser_id']); @@ -409,8 +418,8 @@ class page_action extends tform_actions { $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like ? OR destination like ?", '%@' . $this->oldDataRecord['domain'], '%@' . $this->oldDataRecord['domain']); if(is_array($forwardings)) { foreach($forwardings as $rec) { - $destination = str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['destination']); - $source = str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['source']); + $destination = str_replace($this->oldDataRecord['domain'], $domain, $rec['destination']); + $source = str_replace($this->oldDataRecord['domain'], $domain, $rec['source']); $app->db->datalogUpdate('mail_forwarding', array("source" => $source, "destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'forwarding_id', $rec['forwarding_id']); } } @@ -422,7 +431,7 @@ class page_action extends tform_actions { $fetchmail = $app->db->queryAllRecords("SELECT * FROM mail_get WHERE destination like ?", '%@' . $this->oldDataRecord['domain']); if(is_array($fetchmail)) { foreach($fetchmail as $rec) { - $destination = str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['destination']); + $destination = str_replace($this->oldDataRecord['domain'], $domain, $rec['destination']); $app->db->datalogUpdate('mail_get', array("destination" => $destination, "sys_userid" => $client_user_id, "sys_groupid" => $sys_groupid), 'mailget_id', $rec['mailget_id']); } } @@ -436,15 +445,15 @@ class page_action extends tform_actions { //* update dns-record when the dkim record was changed // NOTE: only if the domain-name was not changed - if ( $this->dataRecord['active'] == 'y' && $this->dataRecord['domain'] == $this->oldDataRecord['domain'] ) { + if ( $this->dataRecord['active'] == 'y' && $domain == $this->oldDataRecord['domain'] ) { $dkim_active = @($this->dataRecord['dkim'] == 'y') ? true : false; $selector = @($this->dataRecord['dkim_selector'] != $this->oldDataRecord['dkim_selector']) ? true : false; $dkim_private = @($this->dataRecord['dkim_private'] != $this->oldDataRecord['dkim_private']) ? true : false; - $soaDomain = $this->dataRecord['domain'].'.'; + $soaDomain = $domain.'.'; while ((!isset($soa) && (substr_count($soaDomain,'.') > 1))) { $soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $soaDomain); - $soaDomain = preg_replace("/^\w+\./","",$soaDomain); + $soaDomain = preg_replace("/^[^\.]+\./","",$soaDomain); } if ( ($selector || $dkim_private || $dkim_active) && $dkim_active ) @@ -455,7 +464,7 @@ class page_action extends tform_actions { if (! $dkim_active) { // updated existing dmarc-record to policy 'none' $sql = "SELECT * from dns_rr WHERE name = ? AND data LIKE 'v=DMARC1%' AND " . $app->tform->getAuthSQL('r'); - $rec = $app->db->queryOneRecord($sql, '_dmarc.'.$this->dataRecord['domain'].'.'); + $rec = $app->db->queryOneRecord($sql, '_dmarc.'.$domain.'.'); if (is_array($rec)) if (strpos($rec['data'], 'p=none=') === false) { $rec['data'] = str_replace(array('quarantine', 'reject'), 'none', $rec['data']); diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 910d7a096a5f1acb49c3e231d1966895a2eeac45..263b98ef31a6054dd0965b33157d33c09992f2f3 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -295,7 +295,7 @@ class page_action extends tform_actions { "priority" => 10, "policy_id" => $policy_id, "email" => $this->dataRecord["email"], - "fullname" => $this->dataRecord["email"], + "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), "local" => 'Y' ); $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); @@ -342,7 +342,7 @@ class page_action extends tform_actions { "priority" => 10, "policy_id" => $policy_id, "email" => $this->dataRecord["email"], - "fullname" => $this->dataRecord["email"], + "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), "local" => 'Y' ); $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); diff --git a/interface/web/mail/mail_whitelist_del.php b/interface/web/mail/mail_whitelist_del.php index 94be228f67035481bbfc4dd24057b325ce8a8445..2294f4486806d41ffc7777d5bec207ae9c519c48 100644 --- a/interface/web/mail/mail_whitelist_del.php +++ b/interface/web/mail/mail_whitelist_del.php @@ -42,6 +42,8 @@ $tform_def_file = "form/mail_whitelist.tform.php"; require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); + //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_whitelist_edit.php b/interface/web/mail/mail_whitelist_edit.php index 9bb04fab7a21155e9197893106ce9801751ec6e3..2cf56b1ec451626491830f41acb54196341d6505 100644 --- a/interface/web/mail/mail_whitelist_edit.php +++ b/interface/web/mail/mail_whitelist_edit.php @@ -53,55 +53,33 @@ class page_action extends tform_actions { function onShowNew() { global $app, $conf; - // we will check only users, not admins - if($_SESSION["s"]["user"]["typ"] == 'user') { - if(!$app->tform->checkClientLimit('limit_mailfilter')) { - $app->error($app->tform->wordbook["limit_mailfilter_txt"]); - } - if(!$app->tform->checkResellerLimit('limit_mailfilter')) { - $app->error('Reseller: '.$app->tform->wordbook["limit_mailfilter_txt"]); - } - } - + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + parent::onShowNew(); } function onBeforeUpdate() { global $app, $conf; + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + //* Check if the server has been changed // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway - if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { - $rec = $app->db->queryOneRecord("SELECT server_id from mail_access WHERE access_id = ?", $this->id); - if($rec['server_id'] != $this->dataRecord["server_id"]) { - //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); - $this->dataRecord["server_id"] = $rec['server_id']; - } - unset($rec); + $rec = $app->db->queryOneRecord("SELECT server_id from mail_access WHERE access_id = ?", $this->id); + if($rec['server_id'] != $this->dataRecord["server_id"]) { + //* Add a error message and switch back to old server + $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); + $this->dataRecord["server_id"] = $rec['server_id']; } + unset($rec); } function onSubmit() { global $app, $conf; + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if(substr($this->dataRecord['source'], 0, 1) === '@') $this->dataRecord['source'] = substr($this->dataRecord['source'], 1); - - // Check the client limits, if user is not the admin - if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin - // Get the limits of the client - $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); - $client = $app->db->queryOneRecord("SELECT limit_mailfilter FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - - // Check if the user may add another mailbox. - if($this->id == 0 && $client["limit_mailfilter"] >= 0) { - $tmp = $app->db->queryOneRecord("SELECT count(access_id) as number FROM mail_access WHERE sys_groupid = ?", $client_group_id); - if($tmp["number"] >= $client["limit_mailfilter"]) { - $app->tform->errorMessage .= $app->tform->wordbook["limit_mailfilter_txt"]."
"; - } - unset($tmp); - } - } // end if user is not admin parent::onSubmit(); } diff --git a/interface/web/mail/mail_whitelist_list.php b/interface/web/mail/mail_whitelist_list.php index 4fd33dd977b0259f46c83c2f2634ff787a9f7910..1a09b6b16578dd81455536a425d110597ed99168 100644 --- a/interface/web/mail/mail_whitelist_list.php +++ b/interface/web/mail/mail_whitelist_list.php @@ -12,6 +12,8 @@ $list_def_file = "list/mail_whitelist.list.php"; * End Form configuration ******************************************/ +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); + //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 5320506846fc3e36364a482a0e1c5c0c5d993373..572a184020c28cef8f219fae5879a6231ff69fed 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -49,8 +49,9 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { + function onShowNew() { - global $app, $conf; + global $app; // we will check only users, not admins if($_SESSION["s"]["user"]["typ"] == 'user') { @@ -66,7 +67,7 @@ class page_action extends tform_actions { } function onSubmit() { - global $app, $conf; + global $app; // Check the client limits, if user is not the admin if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin @@ -86,11 +87,43 @@ class page_action extends tform_actions { parent::onSubmit(); } + + function onAfterUpdate() { + global $app; + + $record_has_changed = false; + foreach($this->dataRecord as $key => $val) { + if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { + // Record has changed + $record_has_changed = true; + } + } + if($record_has_changed){ + $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id)); + + if(is_array($spamfilter_users) && !empty($spamfilter_users)){ + foreach($spamfilter_users as $spamfilter_user){ + $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); + + // check if this is an email domain + if(substr($spamfilter_user['email'],0,1) == '@') { + $domain = substr($spamfilter_user['email'],1); + $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); + + // Force-update aliases and forwards + if(is_array($forwardings)) { + foreach($forwardings as $rec) { + $app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true); + } + } + } + + } + } + } + } } $app->tform_actions = new page_action; $app->tform_actions->onLoad(); - - -?> diff --git a/interface/web/mail/spamfilter_policy_list.php b/interface/web/mail/spamfilter_policy_list.php index c2ab38d5f7eea35dd36a9fac367ebea1e1c443ca..2aa7c7bec132ea3bc80d59d6c4b7545284ffc052 100644 --- a/interface/web/mail/spamfilter_policy_list.php +++ b/interface/web/mail/spamfilter_policy_list.php @@ -16,9 +16,28 @@ $list_def_file = "list/spamfilter_policy.list.php"; $app->auth->check_module_permissions('mail'); $app->uses('listform_actions'); -//$app->listform_actions->SQLExtWhere = "wb = 'W'"; -$app->listform_actions->onLoad(); - - -?> +class list_action extends listform_actions { + + function onShow() { + global $app, $conf; + + // get the config + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + $content_filter = 'amavisd'; + if($mail_config['content_filter'] == 'rspamd'){ + $content_filter = 'rspamd'; + } + $app->tpl->setVar("content_filter", $content_filter); + + parent::onShow(); + } + +} + +$list = new list_action; +//$list->SQLExtWhere = "wb = 'W'"; +$list->onLoad(); +?> \ No newline at end of file diff --git a/interface/web/mail/templates/mail_alias_list.htm b/interface/web/mail/templates/mail_alias_list.htm index 5f19fba1387bc8fba7a4cbafc191b95be3a0322d..f65e40a9083065969f9eb6d566740403c86ee59a 100644 --- a/interface/web/mail/templates/mail_alias_list.htm +++ b/interface/web/mail/templates/mail_alias_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="source"} {tmpl_var name="destination"} - + diff --git a/interface/web/mail/templates/mail_aliasdomain_list.htm b/interface/web/mail/templates/mail_aliasdomain_list.htm index 6ce208b48b62bfe3cca51292f29c9d7ecfce8d82..06166ae3c4a9bded392eff6d0d589daed21d8369 100644 --- a/interface/web/mail/templates/mail_aliasdomain_list.htm +++ b/interface/web/mail/templates/mail_aliasdomain_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="source"} {tmpl_var name="destination"} - + diff --git a/interface/web/mail/templates/mail_blacklist_list.htm b/interface/web/mail/templates/mail_blacklist_list.htm index b023f5404253eb9a8fb1927e5dd02a4fb1647ab3..a52c797e8b73f9d2181295b7733feba219df1766 100644 --- a/interface/web/mail/templates/mail_blacklist_list.htm +++ b/interface/web/mail/templates/mail_blacklist_list.htm @@ -56,7 +56,7 @@ {tmpl_var name="source"} {tmpl_var name="type"} - + diff --git a/interface/web/mail/templates/mail_content_filter_list.htm b/interface/web/mail/templates/mail_content_filter_list.htm index 01689aa4d6fab13d30e75ab6cd60ce5248f4c410..5dcd8e7ff969ea39cd3997de7dfa85a5f7c4ccc1 100644 --- a/interface/web/mail/templates/mail_content_filter_list.htm +++ b/interface/web/mail/templates/mail_content_filter_list.htm @@ -56,7 +56,7 @@ {tmpl_var name="pattern"} {tmpl_var name="action"} - + diff --git a/interface/web/mail/templates/mail_domain_admin_list.htm b/interface/web/mail/templates/mail_domain_admin_list.htm index 1b2b41f3924a95a060ea7034cdd9de10de2cc087..69680cf30810e02db4f78cd3f36c50878259c0b2 100644 --- a/interface/web/mail/templates/mail_domain_admin_list.htm +++ b/interface/web/mail/templates/mail_domain_admin_list.htm @@ -39,7 +39,7 @@ {tmpl_var name="server_id"} {tmpl_var name="domain"} - + diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm index 63c4405de243819c80e653a8b428bdb98d99af32..5991f2aecc21ad3729cd68f7a80e8ba5100f56d7 100644 --- a/interface/web/mail/templates/mail_domain_catchall_edit.htm +++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm @@ -14,6 +14,12 @@
+
+ +
+ {tmpl_var name='greylisting'} +
+
diff --git a/interface/web/mail/templates/mail_domain_catchall_list.htm b/interface/web/mail/templates/mail_domain_catchall_list.htm index 29483ae3d054072f6d5894ca6b8c3f68d1513e3a..a9c0d9acd700a4067a607526b060de9ff28d5b71 100644 --- a/interface/web/mail/templates/mail_domain_catchall_list.htm +++ b/interface/web/mail/templates/mail_domain_catchall_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="source"} {tmpl_var name="destination"} - + diff --git a/interface/web/mail/templates/mail_domain_list.htm b/interface/web/mail/templates/mail_domain_list.htm index bb1eba146b9bf5d7ab63f02ae3b47720f7afcb44..f0d6e532e7c6194e064cef9c043e90fa5f0d2dfa 100644 --- a/interface/web/mail/templates/mail_domain_list.htm +++ b/interface/web/mail/templates/mail_domain_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="server_id"} {tmpl_var name="domain"} - + diff --git a/interface/web/mail/templates/mail_forward_list.htm b/interface/web/mail/templates/mail_forward_list.htm index bb4b95ed12fcd5d6869ebdab91311d377b7b3358..c4d7e1f60a3de4c52db37596ca2b2463a496efd4 100644 --- a/interface/web/mail/templates/mail_forward_list.htm +++ b/interface/web/mail/templates/mail_forward_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="source"} {tmpl_var name="destination"} - + diff --git a/interface/web/mail/templates/mail_get_list.htm b/interface/web/mail/templates/mail_get_list.htm index 58a550a7d1d11ba54e3db2a451b978f9737979d4..747220c2dadabe790bb7ad0e20e9aa5689802583 100644 --- a/interface/web/mail/templates/mail_get_list.htm +++ b/interface/web/mail/templates/mail_get_list.htm @@ -59,7 +59,7 @@ {tmpl_var name="source_username"} {tmpl_var name="destination"} - + diff --git a/interface/web/mail/templates/mail_mailinglist_list.htm b/interface/web/mail/templates/mail_mailinglist_list.htm index 7e15df3aad961490cdbd87ae4b655088125d47b0..78e216dc084e5290549834ad6865352c0b6c2061 100644 --- a/interface/web/mail/templates/mail_mailinglist_list.htm +++ b/interface/web/mail/templates/mail_mailinglist_list.htm @@ -52,7 +52,7 @@ - + diff --git a/interface/web/mail/templates/mail_relay_recipient_list.htm b/interface/web/mail/templates/mail_relay_recipient_list.htm index 7dac3e7ce5a4aa42f110162d9cc8423ba8664c5a..3aeeb12e6c2f7e139d0cf30c7762cd2189ccc066 100644 --- a/interface/web/mail/templates/mail_relay_recipient_list.htm +++ b/interface/web/mail/templates/mail_relay_recipient_list.htm @@ -52,7 +52,7 @@ {tmpl_var name="server_id"} {tmpl_var name="source"} - + diff --git a/interface/web/mail/templates/mail_transport_list.htm b/interface/web/mail/templates/mail_transport_list.htm index 4b4b2d9e53d6529f5bf4bb339ab8aeb5575844cc..9795f0093e9e5e91acc1d3139cb29c2c55944f9e 100644 --- a/interface/web/mail/templates/mail_transport_list.htm +++ b/interface/web/mail/templates/mail_transport_list.htm @@ -59,7 +59,7 @@ {tmpl_var name="transport"} {tmpl_var name="sort_order"} - + diff --git a/interface/web/mail/templates/mail_user_filter_list.htm b/interface/web/mail/templates/mail_user_filter_list.htm index 990558bd11e4b13e16b61e5bf884905f9b06ca29..c38df26a8e4f86dd1a77796ae3c81bb475c7a58d 100644 --- a/interface/web/mail/templates/mail_user_filter_list.htm +++ b/interface/web/mail/templates/mail_user_filter_list.htm @@ -42,7 +42,7 @@ {tmpl_var name="rulename"} - + diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm index 4e2fedd50c2af2111bef51f836925b4dc04e74fc..6d800de57e3b1397247ffb216fd3925c72b4e2ad 100644 --- a/interface/web/mail/templates/mail_user_list.htm +++ b/interface/web/mail/templates/mail_user_list.htm @@ -75,7 +75,7 @@ - + diff --git a/interface/web/mail/templates/mail_whitelist_list.htm b/interface/web/mail/templates/mail_whitelist_list.htm index cb3b783e7f68c46200c4502e957b3b594090bf2e..dcc018f717de54830efdde1c29e47fd9453ee7b4 100644 --- a/interface/web/mail/templates/mail_whitelist_list.htm +++ b/interface/web/mail/templates/mail_whitelist_list.htm @@ -40,7 +40,7 @@ {tmpl_var name="source"} {tmpl_var name="type"} - + diff --git a/interface/web/mail/templates/spamfilter_amavis_edit.htm b/interface/web/mail/templates/spamfilter_amavis_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..41bf6b5410eb6046746f51c18e29d800fc348b82 --- /dev/null +++ b/interface/web/mail/templates/spamfilter_amavis_edit.htm @@ -0,0 +1,198 @@ + +

+ +
+ +
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+ + +
+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ + +
+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
Bytes
+
+
+ +
+
+
+
+ + + + +
+ + +
\ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_blacklist_list.htm b/interface/web/mail/templates/spamfilter_blacklist_list.htm index 91a45916ba6f79632b375c18c1fa5d4d6afcdd0c..ae013bdff435b71d3e1f4dd70782f044cd836197 100644 --- a/interface/web/mail/templates/spamfilter_blacklist_list.htm +++ b/interface/web/mail/templates/spamfilter_blacklist_list.htm @@ -43,7 +43,7 @@ {tmpl_var name="rid"} {tmpl_var name="email"} - + diff --git a/interface/web/mail/templates/spamfilter_config_list.htm b/interface/web/mail/templates/spamfilter_config_list.htm index 486a79e6d9c017c289fb7eca2bd4e4e3c33e5511..3bcac6767a72fab4708e35c578bee9dbb650500e 100644 --- a/interface/web/mail/templates/spamfilter_config_list.htm +++ b/interface/web/mail/templates/spamfilter_config_list.htm @@ -31,7 +31,7 @@ {tmpl_var name="server_name"} - + diff --git a/interface/web/mail/templates/spamfilter_other_edit.htm b/interface/web/mail/templates/spamfilter_other_edit.htm deleted file mode 100644 index 83cd4a95c906c0d742a1ec37965feb0ba711f2ba..0000000000000000000000000000000000000000 --- a/interface/web/mail/templates/spamfilter_other_edit.htm +++ /dev/null @@ -1,67 +0,0 @@ - -

- - - -
- -
-
- -
-
- -
-
- -
-
- -
-
-
- -
-
-
- -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
Bytes
-
-
- -
- - - - -
- - -
diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm index 317bbdb82283b5a6be84558c5e7bc9ca98a726e4..506b4d5b89fa1f1dd7062265361ce7ec79927905 100644 --- a/interface/web/mail/templates/spamfilter_policy_edit.htm +++ b/interface/web/mail/templates/spamfilter_policy_edit.htm @@ -3,8 +3,7 @@

- - +
@@ -20,37 +19,7 @@ {tmpl_var name='spam_lover'}
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
- + diff --git a/interface/web/mail/templates/spamfilter_policy_list.htm b/interface/web/mail/templates/spamfilter_policy_list.htm index da1183d75f9af0dcbf526e0ac68cb400c33d6942..665fa613af05201c97e035e43610893d9df5c013 100644 --- a/interface/web/mail/templates/spamfilter_policy_list.htm +++ b/interface/web/mail/templates/spamfilter_policy_list.htm @@ -19,16 +19,20 @@ + + {tmpl_var name='search_limit'} + + @@ -40,23 +44,25 @@ {tmpl_var name="policy_name"} {tmpl_var name="virus_lover"} {tmpl_var name="spam_lover"} + {tmpl_var name="banned_files_lover"} {tmpl_var name="bad_header_lover"} + - + - {tmpl_var name='globalsearch_noresults_text_txt'} + {tmpl_var name='globalsearch_noresults_text_txt'} - + diff --git a/interface/web/mail/templates/spamfilter_quarantine_edit.htm b/interface/web/mail/templates/spamfilter_quarantine_edit.htm deleted file mode 100644 index 7f44b58020f1c093cb825b39b0cecacaaa399630..0000000000000000000000000000000000000000 --- a/interface/web/mail/templates/spamfilter_quarantine_edit.htm +++ /dev/null @@ -1,35 +0,0 @@ - -

- - - -
- -
-
- -
-
- -
-
- -
- - - - - -
- - -
\ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..2f8ea0f4513592a73f2bf7dc76c59b6128b38d9c --- /dev/null +++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm @@ -0,0 +1,30 @@ + +

+ +
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+ + + +
+ + +
\ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_taglevel_edit.htm b/interface/web/mail/templates/spamfilter_taglevel_edit.htm deleted file mode 100644 index ba92662ba6f1b96a138dc0afcfc43136eac68cf3..0000000000000000000000000000000000000000 --- a/interface/web/mail/templates/spamfilter_taglevel_edit.htm +++ /dev/null @@ -1,42 +0,0 @@ - -

- - - -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
- -
-
- -
- - - - -
- - -
\ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_users_list.htm b/interface/web/mail/templates/spamfilter_users_list.htm index 5f8ef83baecf356f8496554ace6e759b435ad066..d13fe32ccb4c1aaa1ba47e6e87b6a2a6eada1d9b 100644 --- a/interface/web/mail/templates/spamfilter_users_list.htm +++ b/interface/web/mail/templates/spamfilter_users_list.htm @@ -43,7 +43,7 @@ {tmpl_var name="policy_id"} {tmpl_var name="fullname"} - + diff --git a/interface/web/mail/templates/spamfilter_whitelist_list.htm b/interface/web/mail/templates/spamfilter_whitelist_list.htm index 87ef0bde23215e76c9580f605804635ca0895bda..614f2a8f5e3ff163ccb97fcd043b314b46d8b158 100644 --- a/interface/web/mail/templates/spamfilter_whitelist_list.htm +++ b/interface/web/mail/templates/spamfilter_whitelist_list.htm @@ -43,7 +43,7 @@ {tmpl_var name="rid"} {tmpl_var name="email"} - + diff --git a/interface/web/mail/templates/xmpp_domain_admin_list.htm b/interface/web/mail/templates/xmpp_domain_admin_list.htm index ccda2d503263caa1a1dc00f61294b6bfa61c8b3d..c6338037f1ad9cfdbabd2a0eb2c960cbf0dc4d1c 100644 --- a/interface/web/mail/templates/xmpp_domain_admin_list.htm +++ b/interface/web/mail/templates/xmpp_domain_admin_list.htm @@ -39,7 +39,7 @@ {tmpl_var name="server_id"} {tmpl_var name="domain"} - + diff --git a/interface/web/mail/templates/xmpp_domain_list.htm b/interface/web/mail/templates/xmpp_domain_list.htm index 79579142d7e874d8a71524c4774ed163925892e3..dff0adb3992022e51d74f5e29b47508b9eba5b16 100644 --- a/interface/web/mail/templates/xmpp_domain_list.htm +++ b/interface/web/mail/templates/xmpp_domain_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="server_id"} {tmpl_var name="domain"} - + diff --git a/interface/web/mail/templates/xmpp_user_list.htm b/interface/web/mail/templates/xmpp_user_list.htm index 68668b4928975cc2ac21081e8b38de5fe95a6ce1..bb8e91c6d08eed9dd8e86ee96f0725cb52be640b 100644 --- a/interface/web/mail/templates/xmpp_user_list.htm +++ b/interface/web/mail/templates/xmpp_user_list.htm @@ -53,7 +53,7 @@ {tmpl_var name="is_domain_admin"} {tmpl_var name="is_muc_admin"} - + diff --git a/interface/web/mailuser/form/mail_user_filter.tform.php b/interface/web/mailuser/form/mail_user_filter.tform.php index b785ae0263ab03176d5b2677bff31827804e80a6..9fdd8bdfc0ef45c9168a4c5c0d7a6cae694fa651 100644 --- a/interface/web/mailuser/form/mail_user_filter.tform.php +++ b/interface/web/mailuser/form/mail_user_filter.tform.php @@ -83,7 +83,7 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt') + 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt') ), 'op' => array ( 'datatype' => 'VARCHAR', @@ -128,7 +128,7 @@ $form["tabs"]['filter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/br.lng b/interface/web/mailuser/lib/lang/br.lng index 55eca578a4cb61ffeb603a7db8d6966f00dc2dfa..64f93468087de1ecffb6397b4f3dcccad606d0a2 100644 --- a/interface/web/mailuser/lib/lang/br.lng +++ b/interface/web/mailuser/lib/lang/br.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mailuser/lib/lang/br_index.lng b/interface/web/mailuser/lib/lang/br_index.lng index eb7d7e1e7e40e63fc58a75fcdb35b20d3f24a57f..9be2fbdb2aece4e439fe79301515ecce0209f96b 100644 --- a/interface/web/mailuser/lib/lang/br_index.lng +++ b/interface/web/mailuser/lib/lang/br_index.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng index 6e00682a446b6356a86c31afdde3256cbdf031c0..9de387d7988c1b3910083be4afd3d9e73ddb5981 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng index f6d96f02a34bd2affccdc75e4e8b919922ef2ed6..7a1e9a3d95a91ecea9173c8b7104cfc9cf8b2f19 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng index 37196f5d6c961fe17e01d989e9238722493e235e..acefe8be6eeff36105556b42011eefd2fb2f67c1 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng @@ -5,17 +5,17 @@ $wb['target_txt'] = 'Pasta'; $wb['active_txt'] = 'Ativo'; $wb['rulename_error_empty'] = 'Nome está em branco.'; $wb['searchterm_is_empty'] = 'Termo de pesquisa está em branco.'; -$wb['source_txt'] = 'Fonte'; -$wb['target_error_regex'] = 'O alvo pode conter os seguintes caracteres: \'a-z\', \'0-9\', \'-\', \'.\', \'_\', e \'{espaço}\'.'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mails para esta conta foi alcançado.'; +$wb['source_txt'] = 'Origem'; +$wb['target_error_regex'] = 'O alvo pode conter apenas estes caracteres: "a-z", "0-9", "-", ".", "_", e "{espaço}".'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; +$wb['mailbox_filter_txt'] = 'Filtro de conta de e-mail'; $wb['subject_txt'] = 'Assunto'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Para'; -$wb['contains_txt'] = 'Contém'; -$wb['is_txt'] = 'É'; +$wb['contains_txt'] = 'Contêm'; +$wb['is_txt'] = 'é'; $wb['begins_with_txt'] = 'Iniciando com'; -$wb['ends_with_txt'] = 'Terminando com'; +$wb['ends_with_txt'] = 'Finalizando com'; $wb['move_to_txt'] = 'Mover para'; $wb['delete_txt'] = 'Remover'; -$wb['mailbox_filter_txt'] = 'Filtro de e-mail'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng index 5d0f2419745b00f495c353c7c3ef15cf705d4b3f..5e13e8c303b3aed9b05f01ce985868e885ae8909 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng @@ -4,5 +4,5 @@ $wb['rulename_txt'] = 'Nome'; $wb['add_new_record_txt'] = 'Adicionar novo filtro'; $wb['page_txt'] = 'Página'; $wb['page_of_txt'] = 'de'; -$wb['delete_confirmation'] = 'Você tem certeza que gostaria de remover este filtro de e-mail?'; +$wb['delete_confirmation'] = 'Você tem certeza que deseja remover este filtro de e-mail?'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_password.lng b/interface/web/mailuser/lib/lang/br_mail_user_password.lng index 154a44cd7b11743ae755a874df735edf3b0d1198..7a64df748a9b8e70baf2bed833daf90da4cd2417 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_password.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng index a4973817a201e6fc2c25d0f02a9145a5ad0fd928..eb369220412e340952738ed60bffcd81f943c356 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng index e164d54bb2aefb167824b6377dce1fe32489848a..0a92f580a10ab1548c4a3426f73e1a8cc8fece9b 100644 --- a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Max. antal af mailfiltere er nået.'; $wb['subject_txt'] = 'Emne'; $wb['from_txt'] = 'Fra'; $wb['to_txt'] = 'Til'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Indeholder'; $wb['is_txt'] = 'Er'; $wb['begins_with_txt'] = 'Begynder med'; diff --git a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng index 23451b74dba6d02a5e79cd6029f6b430713e87b7..c26150ba1d183e8cea68c1aa9e3d0d3fc246664d 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng @@ -12,6 +12,7 @@ $wb['mailbox_filter_txt'] = 'Mailbox filter'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng index 426ad1ad010a293f586d320b43569d149f60bbdd..b8a19359f538c8da7ff662b0310b29eb3c95e96a 100755 --- a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng @@ -17,5 +17,6 @@ $wb['subject_txt'] = 'Asunto'; $wb['target_error_regex'] = 'La carpeta solo debe contener estos caracteres: a-z, 0-9, -, ., _, y {espacio}'; $wb['target_txt'] = 'Carpeta'; $wb['to_txt'] = 'Para'; +$wb['list_id_txt'] = 'List ID'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; ?> diff --git a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/nl.lng b/interface/web/mailuser/lib/lang/nl.lng index 114dec9b9195adcaa18ca636b75e5d162569d6b1..6383a82864d6aa28122674ed58cabdb2008022a4 100644 --- a/interface/web/mailuser/lib/lang/nl.lng +++ b/interface/web/mailuser/lib/lang/nl.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng b/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..0092c288a06a1845afa038f398c497dd2129e7b1 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng @@ -1,21 +1,21 @@ diff --git a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng index f10dd4ddb24e7abead46488aa725e142b5f93dba..d834e4057a0688ee6c2302933a9edf07d1aa0d43 100644 --- a/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng @@ -6,7 +6,7 @@ $wb['active_txt'] = 'Активно'; $wb['rulename_error_empty'] = 'Имя пустое.'; $wb['searchterm_is_empty'] = 'Поле поиска пустое.'; $wb['source_txt'] = 'Источник'; -$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \"a-z\", \"0-9\", \"-\", \".\", \"_\" и {пробел}'; +$wb['target_error_regex'] = 'Назначение может содержать только следующие символы: \\"a-z\\", \\"0-9\\", \\"-\\", \\".\\", \\"_\\" и {пробел}'; $wb['limit_mailfilter_txt'] = 'Максимальное число почтовых фильтров достигнуто.'; $wb['subject_txt'] = 'Тема'; $wb['from_txt'] = 'От'; diff --git a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng index 4069a153518d08a7ab855e15bad2a7c3707e0ebc..9ac4be357efcb3ce2912c717d9e6f341e9f2941e 100644 --- a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/tr.lng b/interface/web/mailuser/lib/lang/tr.lng index fa5a7e12abbb492d7ab139dee668d2e3946595e4..c9d03bfff682f8253c666813b596934ae26ae496 100644 --- a/interface/web/mailuser/lib/lang/tr.lng +++ b/interface/web/mailuser/lib/lang/tr.lng @@ -4,6 +4,6 @@ $wb['Overview'] = 'Özet'; $wb['Password'] = 'Parola'; $wb['Autoresponder'] = 'Otomatik yanıtlayıcı'; $wb['Send copy'] = 'Kopya gönder'; -$wb['Spamfilter'] = 'Önemsiz posta süzgeci'; +$wb['Spamfilter'] = 'Önemsiz ileti süzgeci'; $wb['Email Filters'] = 'E-posta Süzgeçleri'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_index.lng b/interface/web/mailuser/lib/lang/tr_index.lng index 4c0c553b79f18638a1ac7ae0db64559cd0686f17..47e12d69822d6cb1da3e7a4a12495a6642a5aeec 100644 --- a/interface/web/mailuser/lib/lang/tr_index.lng +++ b/interface/web/mailuser/lib/lang/tr_index.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng index 36bfe6a25ce3015bacd7c73d18909d3015dfc34f..3a14043e9254adb5eeebfd7df1517e8a7237458e 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng @@ -4,5 +4,5 @@ $wb['rulename_txt'] = 'Ad'; $wb['add_new_record_txt'] = 'Süzgeç Ekle'; $wb['page_txt'] = 'Sayfa'; $wb['page_of_txt'] = '/'; -$wb['delete_confirmation'] = 'Posta süzgecini silmek istediğinize emin misiniz?'; +$wb['delete_confirmation'] = 'E-posta süzgecini silmek istediğinize emin misiniz?'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_password.lng b/interface/web/mailuser/lib/lang/tr_mail_user_password.lng index d06ad94bb059394423c3a6e18984dcfe8e01bbc6..c35319ced1b2c8ec926ce84aea5efef7c06b502d 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_password.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng index d63f274e4993a606bb11dce8ece53c1a2c5619bc..3426385a2effcb7bb7a449896f768a4e03b772b2 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng @@ -1,6 +1,6 @@ {tmpl_var name="rulename"} - + diff --git a/interface/web/monitor/lib/lang/ar.lng b/interface/web/monitor/lib/lang/ar.lng index e00287a8e75da8aade3675ae8ff9b6d0100092cb..9d54ea1f5db7fbb85cff83b20b0065728efa5e13 100644 --- a/interface/web/monitor/lib/lang/ar.lng +++ b/interface/web/monitor/lib/lang/ar.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/bg.lng b/interface/web/monitor/lib/lang/bg.lng index 0db4623d03fc374f1f6388ef5c4aac55c4912054..a8b7f491aca6e00f622fe0863bc3cc9aa14159e0 100644 --- a/interface/web/monitor/lib/lang/bg.lng +++ b/interface/web/monitor/lib/lang/bg.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_view.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng index 048fec64be5cbfac4bbcd8175b298cc5bf792552..172891cfd9bcf6c489b4f120917f621db3e9108b 100644 --- a/interface/web/monitor/lib/lang/br.lng +++ b/interface/web/monitor/lib/lang/br.lng @@ -1,37 +1,39 @@ Não encontramos nenhum dos dois neste servidor.

Isto significa que não podemos oferecer suporte ao seu RAID ainda.'; +$wb['monitor_norkhunter_txt'] = 'O RKHunter não está instalado, desta forma, não existe log'; $wb['monitor_serverstate_server_txt'] = 'Servidor'; $wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Estado'; -$wb['monitor_serverstate_unknown_txt'] = 'desconhecido(s)'; -$wb['monitor_serverstate_info_txt'] = 'informação(es)'; -$wb['monitor_serverstate_warning_txt'] = 'aviso(s)'; -$wb['monitor_serverstate_critical_txt'] = 'crítico(s)'; -$wb['monitor_serverstate_error_txt'] = 'erro(s)'; +$wb['monitor_serverstate_unknown_txt'] = 'desconhecido'; +$wb['monitor_serverstate_info_txt'] = 'info'; +$wb['monitor_serverstate_warning_txt'] = 'alerta'; +$wb['monitor_serverstate_critical_txt'] = 'crítico'; +$wb['monitor_serverstate_error_txt'] = 'erro'; $wb['monitor_serverstate_moreinfo_txt'] = 'Mais informações...'; $wb['monitor_serverstate_more_txt'] = 'Mais...'; -$wb['monitor_serverstate_fclamok_txt'] = 'Definições de anti-vírus OK'; -$wb['monitor_serverstate_fclamoutdated_txt'] = 'Definições de anti-vírus DESATUALIZADAS!'; +$wb['monitor_serverstate_fclamok_txt'] = 'A proteção anti-vírus está ok'; +$wb['monitor_serverstate_fclamoutdated_txt'] = 'A proteção anti-vírus está desatualizada!'; $wb['monitor_serverstate_fclamunknown_txt'] = 'Freshclam: ???!'; -$wb['monitor_serverstate_hdok_txt'] = 'Disco OK'; -$wb['monitor_serverstate_hdgoingfull_txt'] = 'Disco cheio'; -$wb['monitor_serverstate_hdnearlyfull_txt'] = 'Disco com pouco espaço'; -$wb['monitor_serverstate_hdveryfull_txt'] = 'Disco com espaço insuficiente'; -$wb['monitor_serverstate_hdfull_txt'] = 'Disco sem espaço'; -$wb['monitor_serverstate_hdunknown_txt'] = 'Disco rígido: ???'; +$wb['monitor_serverstate_hdok_txt'] = 'O uso do disco está ok'; +$wb['monitor_serverstate_hdgoingfull_txt'] = 'O uso do disco está moderado'; +$wb['monitor_serverstate_hdnearlyfull_txt'] = 'O uso do disco está próximo do limite'; +$wb['monitor_serverstate_hdveryfull_txt'] = 'O uso do disco está crítico'; +$wb['monitor_serverstate_hdfull_txt'] = 'Não existe mais espaço no disco para uso'; +$wb['monitor_serverstate_hdunknown_txt'] = 'Disco(HDD): ???'; $wb['monitor_serverstate_listok_txt'] = 'ok'; -$wb['monitor_serverstate_listinfo_txt'] = 'informação'; -$wb['monitor_serverstate_listwarning_txt'] = 'aviso'; +$wb['monitor_serverstate_listinfo_txt'] = 'info'; +$wb['monitor_serverstate_listwarning_txt'] = 'alerta'; $wb['monitor_serverstate_listcritical_txt'] = 'crítico'; $wb['monitor_serverstate_listerror_txt'] = 'erro'; $wb['monitor_serverstate_listunknown_txt'] = 'desconhecido'; -$wb['monitor_serverstate_loadok_txt'] = 'Carga do servidor OK'; -$wb['monitor_serverstate_loadheavy_txt'] = 'Carga do servidor: alta'; -$wb['monitor_serverstate_loadhigh_txt'] = 'Carga do servidor: média'; -$wb['monitor_serverstate_loaghigher_txt'] = 'Carga do servidor: excessiva'; -$wb['monitor_serverstate_loadhighest_txt'] = 'Carga do servidor: extrema'; -$wb['monitor_serverstate_loadunknown_txt'] = 'Carga do servidor: ???'; -$wb['monitor_serverstate_mailqok_txt'] = 'Fila de e-mails OK'; -$wb['monitor_serverstate_mailqheavy_txt'] = 'Fila de e-mails: alta'; -$wb['monitor_serverstate_mailqhigh_txt'] = 'Fila de e-mails: média'; -$wb['monitor_serverstate_mailqhigher_txt'] = 'Fila de e-mails: excessiva'; -$wb['monitor_serverstate_mailqhighest_txt'] = 'Fila de e-mails: extrema'; +$wb['monitor_serverstate_loadok_txt'] = 'A carga do servidor está ok'; +$wb['monitor_serverstate_loadheavy_txt'] = 'O servidor está sob carga média'; +$wb['monitor_serverstate_loadhigh_txt'] = 'O servidor está sob carga alta'; +$wb['monitor_serverstate_loaghigher_txt'] = 'O servidor está sob carga muito alta'; +$wb['monitor_serverstate_loadhighest_txt'] = 'O servidor está sob carga crítica'; +$wb['monitor_serverstate_loadunknown_txt'] = 'Carga do Servidor: ???'; +$wb['monitor_serverstate_mailqok_txt'] = 'A fila de e-mails está ok'; +$wb['monitor_serverstate_mailqheavy_txt'] = 'A fila de e-mails está moderada'; +$wb['monitor_serverstate_mailqhigh_txt'] = 'A fila de e-mails está grande'; +$wb['monitor_serverstate_mailqhigher_txt'] = 'A fila de está muito grande'; +$wb['monitor_serverstate_mailqhighest_txt'] = 'A fila de e-mails está crítica'; $wb['monitor_serverstate_mailqunknown_txt'] = 'Fila de e-mails: ???'; -$wb['monitor_serverstate_raidok_txt'] = 'RAID OK'; -$wb['monitor_serverstate_raidresync_txt'] = 'RAID em modo RESYNC'; -$wb['monitor_serverstate_raidfault_txt'] = 'RAID possui um disco com falhas. Troque-o o mais rápido possível!'; -$wb['monitor_serverstate_raiderror_txt'] = 'RAID parado.'; -$wb['monitor_serverstate_raidunknown_txt'] = 'RAID: ???'; -$wb['monitor_serverstate_servicesonline_txt'] = 'Todos os serviços necessários estão on-line'; -$wb['monitor_serverstate_servicesoffline_txt'] = 'Um ou mais serviços necessários estão off-line'; +$wb['monitor_serverstate_raidok_txt'] = 'O RAID está ok'; +$wb['monitor_serverstate_raidresync_txt'] = 'O RAID está em modo RESYNC'; +$wb['monitor_serverstate_raidfault_txt'] = 'O RAID possui uma disco com falha. Substitua o mais rápido possível!'; +$wb['monitor_serverstate_raiderror_txt'] = 'O RAID não está funcionando'; +$wb['monitor_serverstate_raidunknown_txt'] = 'Estado do RAID: ???'; +$wb['monitor_serverstate_servicesonline_txt'] = 'Todos os serviços estão on-line'; +$wb['monitor_serverstate_servicesoffline_txt'] = 'Um ou mais serviços estão off-line'; $wb['monitor_serverstate_servicesunknown_txt'] = 'Serviços: ???'; -$wb['monitor_serverstate_syslogok_txt'] = 'O log do sistema está OK'; -$wb['monitor_serverstate_syslogwarning_txt'] = 'Existem alguns alertas no log do sistema'; -$wb['monitor_serverstate_syslogerror_txt'] = 'Existem erros no log do sistema'; -$wb['monitor_serverstate_syslogunknown_txt'] = 'syslog:???'; -$wb['monitor_serverstate_updatesok_txt'] = 'Sistema atualizado.'; -$wb['monitor_serverstate_updatesneeded_txt'] = 'Um ou mais componentes necessitam de atualização'; -$wb['monitor_serverstate_updatesunknown_txt'] = 'Estado do sistema:???'; +$wb['monitor_serverstate_syslogok_txt'] = 'O log do sistema está ok.'; +$wb['monitor_serverstate_syslogwarning_txt'] = 'Existem algumas mensagens de alerta no log do sistema'; +$wb['monitor_serverstate_syslogerror_txt'] = 'Existem algumas mensagens de erros no log do sistema'; +$wb['monitor_serverstate_syslogunknown_txt'] = 'Log do sistema: ???'; +$wb['monitor_serverstate_updatesok_txt'] = 'O sistema está atualizado.'; +$wb['monitor_serverstate_updatesneeded_txt'] = 'Um ou mais componentes do sistema necessitam atualização'; +$wb['monitor_serverstate_updatesunknown_txt'] = 'Atualizar Sistema: ???'; +$wb['monitor_serverstate_beancounterok_txt'] = 'O beancounter está ok'; +$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existe uma falha de visualização no beancounter'; +$wb['monitor_serverstate_beancounterwarning_txt'] = 'Existe alguma falha no beancounter'; +$wb['monitor_serverstate_beancountercritical_txt'] = 'Existem várias falhas no beancounter'; +$wb['monitor_serverstate_beancountererror_txt'] = 'Existem muitas falhas no beancounter'; $wb['monitor_services_online_txt'] = 'On-line'; $wb['monitor_services_offline_txt'] = 'Off-line'; -$wb['monitor_services_web_txt'] = 'Servidor de páginas:'; -$wb['monitor_services_ftp_txt'] = 'Servidor ftp:'; -$wb['monitor_services_smtp_txt'] = 'Servidor smtp:'; -$wb['monitor_services_pop_txt'] = 'Servidor pop:'; -$wb['monitor_services_imap_txt'] = 'Servidor imap:'; -$wb['monitor_services_mydns_txt'] = 'Servidor dns:'; -$wb['monitor_services_mysql_txt'] = 'Servidor mysql:'; -$wb['monitor_settings_datafromdate_txt'] = 'Data de: '; -$wb['monitor_settings_datetimeformat_txt'] = 'd/m/Y H:i'; -$wb['monitor_settings_refreshsq_txt'] = 'Atualizar sequência:'; +$wb['monitor_services_web_txt'] = 'Servidor WEB:'; +$wb['monitor_services_ftp_txt'] = 'Servidor FTP:'; +$wb['monitor_services_smtp_txt'] = 'Servidor SMTP:'; +$wb['monitor_services_pop_txt'] = 'Servidor POP3:'; +$wb['monitor_services_imap_txt'] = 'Servidor IMAP:'; +$wb['monitor_services_mydns_txt'] = 'Servidor DNS:'; +$wb['monitor_services_mongodb_txt'] = 'Servidor MONGODB:'; +$wb['monitor_services_mysql_txt'] = 'Servidor MYSQL:'; +$wb['monitor_settings_datafromdate_txt'] = 'Dados de: '; +$wb['monitor_settings_datetimeformat_txt'] = 'd-m-Y H:i'; +$wb['monitor_settings_refreshsq_txt'] = 'Sequência de atualização:'; $wb['monitor_settings_server_txt'] = 'Servidor'; -$wb['monitor_title_cpuinfo_txt'] = 'Informação da cpu'; -$wb['monitor_title_updatestate_txt'] = 'Atualizar estado'; +$wb['monitor_title_cpuinfo_txt'] = 'Informações de CPU'; +$wb['monitor_title_updatestate_txt'] = 'Atualizar Estado'; $wb['monitor_title_mailq_txt'] = 'Fila de e-mails'; $wb['monitor_title_raidstate_txt'] = 'Estado do RAID'; -$wb['monitor_title_rkhunterlog_txt'] = 'Log do RKHunter'; -$wb['monitor_updates_nosupport_txt'] = 'Sua distribuição não suporta este tipo de monitoramento'; +$wb['monitor_title_rkhunterlog_txt'] = 'Log do rkhunter'; $wb['monitor_title_fail2ban_txt'] = 'Log do fail2ban'; -$wb['monitor_nosupportedraid1_txt'] = 'Até o presente momento, o suporte a mdadm ou mpt-status para monitoramento do RAID não foi encontrado.

Provavelmente seu servidor não possui recursos de RAID a serem monitorados.'; -$wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter OK'; -$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existem poucas falhas no beancounter'; -$wb['monitor_serverstate_beancounterwarning_txt'] = 'Existem algumas falhas no beancounter'; -$wb['monitor_serverstate_beancountercritical_txt'] = 'Existem falhas críticas no beancounter'; -$wb['monitor_serverstate_beancountererror_txt'] = 'Existem diversas falhas no beancounter'; -$wb['monitor_title_beancounter_txt'] = 'Beancounter openvz ve'; -$wb['monitor_beancounter_nosupport_txt'] = 'Este servidor não é um um contêiner openvz e não contém informações de beancounter.'; -$wb['monitor_title_iptables_txt'] = 'Regras do firewall'; -$wb['Show fail2ban-Log'] = 'Exibir log do fail2ban'; -$wb['Show IPTables'] = 'Exibir regras do firewall'; -$wb['Show OpenVz VE BeanCounter'] = 'Exibir beancounter do openvz'; +$wb['monitor_title_mongodb_txt'] = 'Log do mongodb'; +$wb['monitor_title_iptables_txt'] = 'Regras de Firewall'; +$wb['monitor_title_beancounter_txt'] = 'Beancounter openvz'; +$wb['monitor_updates_nosupport_txt'] = 'Sua distribuição não é suportada por este monitoramento'; +$wb['monitor_beancounter_nosupport_txt'] = 'Este servidor não é um openvz e não possui nenhuma informação do beancounter'; $wb['Show Monit'] = 'Exibir Monit'; -$wb['no_monit_url_defined_txt'] = 'Nenhuma url do Monit configurada.'; +$wb['no_monit_url_defined_txt'] = 'Nenhuma URL do Monit definida.'; $wb['no_permissions_to_view_monit_txt'] = 'Você não tem permissão para acessar o Monit.'; $wb['Show Munin'] = 'Exibir Munin'; -$wb['no_munin_url_defined_txt'] = 'Nenhuma url do Muni configurada.'; +$wb['no_munin_url_defined_txt'] = 'Nenhuma URL do Munin definida.'; $wb['no_permissions_to_view_munin_txt'] = 'Você não tem permissão para acessar o Munin.'; -$wb['no_data_database_size_txt'] = 'Nenhuma informação de uso do banco de dados disponível no momento. Por favor verifique novamente mais tarde.'; -$wb['monitor_database_name_txt'] = 'Banco de dados'; -$wb['monitor_database_size_txt'] = 'Tamanho'; -$wb['monitor_database_client_txt'] = 'Cliente'; -$wb['monitor_database_domain_txt'] = 'Domínio'; -$wb['Show MongoDB-Log'] = 'Exibir logs do MongoDB'; -$wb['monitor_services_mongodb_txt'] = 'Servidor MongoDB:'; -$wb['monitor_title_mongodb_txt'] = 'Logs do MongoDB'; ?> diff --git a/interface/web/monitor/lib/lang/br_datalog_list.lng b/interface/web/monitor/lib/lang/br_datalog_list.lng index e6b2f554c339049812daa0504d398d61304295f6..8e044daeb7447a8125eed0c133743753d43e717a 100644 --- a/interface/web/monitor/lib/lang/br_datalog_list.lng +++ b/interface/web/monitor/lib/lang/br_datalog_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..0a02fda077e1ba5cbf716f4f841255307e7977f5 --- /dev/null +++ b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..be544e61194dd47b6ae3d356f816d167acbd5cd6 --- /dev/null +++ b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_view.lng b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..83546932809cc54956ef4b19b03c562becb283fd --- /dev/null +++ b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/br_syslog_list.lng b/interface/web/monitor/lib/lang/br_syslog_list.lng index 23f3c6d5daf43245f060b7de39004ede9e1895d4..ca5a3735644e78ef124a6b39011af8addf7f1fe4 100644 --- a/interface/web/monitor/lib/lang/br_syslog_list.lng +++ b/interface/web/monitor/lib/lang/br_syslog_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/monitor/lib/lang/ca.lng b/interface/web/monitor/lib/lang/ca.lng index 4575be2ff1f54a8584363c49e8e1e869157d197c..b57b255a745abbd3252f91709843843d2198219b 100644 --- a/interface/web/monitor/lib/lang/ca.lng +++ b/interface/web/monitor/lib/lang/ca.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng index dc3e3cb341781ce68ca9e5076e3cb4f43de27f22..be2d9eadbb410a52ead1e3b0907d6c91fda03afa 100644 --- a/interface/web/monitor/lib/lang/cz.lng +++ b/interface/web/monitor/lib/lang/cz.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Klient'; $wb['monitor_database_domain_txt'] = 'Doména'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Zobrazit historii datového logu'; ?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..ce89af1a880f3f29c4204d3b5ee25da6caeb27f9 --- /dev/null +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0d25364ec14b8c1a866ad65c0e17165fd7e6c768 --- /dev/null +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..1f20cf12d453d532ae95ba77615db60c0433dbc3 --- /dev/null +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/dk.lng b/interface/web/monitor/lib/lang/dk.lng index dc43c1306fcbf486e6e2462142848ee8ff2e9049..4c7bfab1e750e91a1da8bf0bf4567b718c9414d9 100644 --- a/interface/web/monitor/lib/lang/dk.lng +++ b/interface/web/monitor/lib/lang/dk.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_view.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/el.lng b/interface/web/monitor/lib/lang/el.lng index 414642e2e359fa1fe4c3b3ad416691d569e4169f..245c80c6666b36b19050e298e1d05c3108e618a9 100644 --- a/interface/web/monitor/lib/lang/el.lng +++ b/interface/web/monitor/lib/lang/el.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_list.lng b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/el_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/el_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_view.lng b/interface/web/monitor/lib/lang/el_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/el_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index 8cc87b4801809002201cb6f6e9b929a59edf86d9..f4acb3c45c0c9e80162986cce5d112c37f1e7180 100755 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -161,4 +161,5 @@ $wb['System load 15 minutes'] = 'Carga del sistema hace 15 minutos'; $wb['System load 5 minutes'] = 'Carga del sistema hace 5 minutos'; $wb['System State (All Servers)'] = 'Estado de los sistemas'; $wb['Users online'] = 'Usuarios en línea'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_list.lng b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/es_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/es_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_view.lng b/interface/web/monitor/lib/lang/es_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/es_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng index 44143f3d207ced3c6086a8f6a90a65a1b1508b59..911aae9bd12fc4374ca4070a910dad087a7908cf 100755 --- a/interface/web/monitor/lib/lang/fi.lng +++ b/interface/web/monitor/lib/lang/fi.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_view.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/fr.lng b/interface/web/monitor/lib/lang/fr.lng index 9fb2ab5e8c41de82de381d5724b97bcd067c82c1..c08fe749482b2731e68cb93226ebec2b554e7b61 100644 --- a/interface/web/monitor/lib/lang/fr.lng +++ b/interface/web/monitor/lib/lang/fr.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_view.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/hr.lng b/interface/web/monitor/lib/lang/hr.lng index d878568104d37fd8c9700d1c1d3f09325bca0db6..17899ff3f0b30b8dfb4f589e151c9fcdd2d6e756 100644 --- a/interface/web/monitor/lib/lang/hr.lng +++ b/interface/web/monitor/lib/lang/hr.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_view.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/hu.lng b/interface/web/monitor/lib/lang/hu.lng index 85fda979087b48f424ea1f3d828b90a3bebfb781..9a5c41654ff351cd5652a405bb2c7c40ee03691d 100644 --- a/interface/web/monitor/lib/lang/hu.lng +++ b/interface/web/monitor/lib/lang/hu.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_view.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/id.lng b/interface/web/monitor/lib/lang/id.lng index d77f1456496bc650db3e2ff4c6ebaf554d574d53..4cdbf5d8ba3e03cdccf1768a7f008613c90ce6b0 100644 --- a/interface/web/monitor/lib/lang/id.lng +++ b/interface/web/monitor/lib/lang/id.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_list.lng b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/id_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/id_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_view.lng b/interface/web/monitor/lib/lang/id_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/id_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/it.lng b/interface/web/monitor/lib/lang/it.lng index c7a6823683d4c32d2ce8f92e257317ccd0f9eb25..e6feadf01f9e68d9429be17e13e0dddc896d97fc 100644 --- a/interface/web/monitor/lib/lang/it.lng +++ b/interface/web/monitor/lib/lang/it.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_list.lng b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/it_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/it_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_view.lng b/interface/web/monitor/lib/lang/it_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/it_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/ja.lng b/interface/web/monitor/lib/lang/ja.lng index bc2c7d2b5c2cf2fb5068934db32e3c428a1ac251..cccd678cb7b9ba2351ba1518f04c7d7a7051d866 100644 --- a/interface/web/monitor/lib/lang/ja.lng +++ b/interface/web/monitor/lib/lang/ja.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/nl.lng b/interface/web/monitor/lib/lang/nl.lng index 81caa02b704a990f6b3c72c5b2a39577d5a05ad1..a534b9afb36a6a5038211a54f3008755da7cb690 100644 --- a/interface/web/monitor/lib/lang/nl.lng +++ b/interface/web/monitor/lib/lang/nl.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_view.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/pl.lng b/interface/web/monitor/lib/lang/pl.lng index 77d05e0569e66a0154103a505e72a84ab8296f4c..a8e1b3e53c2086a8b4d1dee058c2e40562f88899 100644 --- a/interface/web/monitor/lib/lang/pl.lng +++ b/interface/web/monitor/lib/lang/pl.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_view.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/pt.lng b/interface/web/monitor/lib/lang/pt.lng index 2218ede892b5a89f327d54cc49f61bcc38791587..7930febda22cb515d5e6462f0b809037fffc2878 100644 --- a/interface/web/monitor/lib/lang/pt.lng +++ b/interface/web/monitor/lib/lang/pt.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_view.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/ro.lng b/interface/web/monitor/lib/lang/ro.lng index 7b06c4ba0c37b9b65d1c39b85d8230979babdac5..96a2ce10e69d4dc9e7f5d1fe83130c427cc4b7c4 100644 --- a/interface/web/monitor/lib/lang/ro.lng +++ b/interface/web/monitor/lib/lang/ro.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/ru.lng b/interface/web/monitor/lib/lang/ru.lng index 49e9d4604d6cd1bb8a8c525c6b41c537f2da6ed8..823174b71665e3d318652d22f3252ba480398c2b 100644 --- a/interface/web/monitor/lib/lang/ru.lng +++ b/interface/web/monitor/lib/lang/ru.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Домен'; $wb['Show MongoDB-Log'] = 'Показать журнал MongoDB'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-сервер:'; $wb['monitor_title_mongodb_txt'] = 'Журнал MongoDB'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/se.lng b/interface/web/monitor/lib/lang/se.lng index 732805d2a633d2c37ff15be6ef40ee2d424853b7..78dd5ed1be944dc9ca00ddf4c3d86acb3ee6703e 100644 --- a/interface/web/monitor/lib/lang/se.lng +++ b/interface/web/monitor/lib/lang/se.lng @@ -161,4 +161,5 @@ $wb['no_permissions_to_view_munin_txt'] = 'Du har inte behörighet att visa Muni $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_list.lng b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/se_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/se_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_view.lng b/interface/web/monitor/lib/lang/se_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/se_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/sk.lng b/interface/web/monitor/lib/lang/sk.lng index 7697242386a4cd279ae2f0b5be354d6e1e5b421b..36af834eaf26eeda4a3806896d327c91ee804f45 100644 --- a/interface/web/monitor/lib/lang/sk.lng +++ b/interface/web/monitor/lib/lang/sk.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_view.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng index 00beedb1dc2d54f704d0cb848a0ddee746ce332d..20a9e8e140167eb5b56b989256986ea53b237f31 100644 --- a/interface/web/monitor/lib/lang/tr.lng +++ b/interface/web/monitor/lib/lang/tr.lng @@ -1,21 +1,22 @@ Bunlardan biri sunucunuzda bulunamadı.

Bu nedenle RAID sürücünüz henüz desteklenemiyor.'; -$wb['monitor_norkhunter_txt'] = 'RKHunter yüklü olmadığından herhangi bir günlük verisi yok'; +$wb['monitor_nosupportedraid1_txt'] = 'Şimdilik RAID durumunu izlemek için ya da destekleniyor.
Bunlardan biri sunucunuzda bulunamadı.

Bu nedenle RAID sürücünüz henüz desteklenemiyor.'; +$wb['monitor_norkhunter_txt'] = 'RKHunter kurulu olmadığından herhangi bir günlük verisi yok'; $wb['monitor_serverstate_server_txt'] = 'Sunucu'; $wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Durum'; @@ -75,7 +81,7 @@ $wb['monitor_serverstate_info_txt'] = 'bilgi'; $wb['monitor_serverstate_warning_txt'] = 'uyarı'; $wb['monitor_serverstate_critical_txt'] = 'kritik'; $wb['monitor_serverstate_error_txt'] = 'hata'; -$wb['monitor_serverstate_moreinfo_txt'] = 'Ayrıntılı bilgi...'; +$wb['monitor_serverstate_moreinfo_txt'] = 'Ayrıntılı bilgiler...'; $wb['monitor_serverstate_more_txt'] = 'Ayrıntılar...'; $wb['monitor_serverstate_fclamok_txt'] = 'Virüs koruması sorunsuz'; $wb['monitor_serverstate_fclamoutdated_txt'] = 'Virüs koruması GÜNCEL DEĞİL!'; @@ -93,17 +99,17 @@ $wb['monitor_serverstate_listcritical_txt'] = 'kritik'; $wb['monitor_serverstate_listerror_txt'] = 'hata'; $wb['monitor_serverstate_listunknown_txt'] = 'bilinmiyor'; $wb['monitor_serverstate_loadok_txt'] = 'Sunucu yükü: Sorunsuz'; -$wb['monitor_serverstate_loadheavy_txt'] = 'Sunucu yükü: Ağır'; +$wb['monitor_serverstate_loadheavy_txt'] = 'Sunucu yükü: Fazla'; $wb['monitor_serverstate_loadhigh_txt'] = 'Sunucu yükü: Yüksek'; $wb['monitor_serverstate_loaghigher_txt'] = 'Sunucu yükü: Çok yüksek'; $wb['monitor_serverstate_loadhighest_txt'] = 'Sunucu yükü: En yüksek'; $wb['monitor_serverstate_loadunknown_txt'] = 'Sunucu yükü: ???'; -$wb['monitor_serverstate_mailqok_txt'] = 'Posta kuyruğu yükü: Sorunsuz'; -$wb['monitor_serverstate_mailqheavy_txt'] = 'Posta kuyruğu yükü: Ağır'; -$wb['monitor_serverstate_mailqhigh_txt'] = 'Posta kuyruğu yükü: Yüksek'; -$wb['monitor_serverstate_mailqhigher_txt'] = 'Posta kuyruğu yükü: Çok yüksek'; -$wb['monitor_serverstate_mailqhighest_txt'] = 'Posta kuyruğu yükü: En yüksek'; -$wb['monitor_serverstate_mailqunknown_txt'] = 'Posta kuyruğu yükü: ???'; +$wb['monitor_serverstate_mailqok_txt'] = 'E-posta kuyruğu yükü: Sorunsuz'; +$wb['monitor_serverstate_mailqheavy_txt'] = 'E-posta kuyruğu yükü: Fazla'; +$wb['monitor_serverstate_mailqhigh_txt'] = 'E-posta kuyruğu yükü: Yüksek'; +$wb['monitor_serverstate_mailqhigher_txt'] = 'E-posta kuyruğu yükü: Çok yüksek'; +$wb['monitor_serverstate_mailqhighest_txt'] = 'E-posta kuyruğu yükü: En yüksek'; +$wb['monitor_serverstate_mailqunknown_txt'] = 'E-posta kuyruğu yükü: ???'; $wb['monitor_serverstate_raidok_txt'] = 'RAID sorunsuz'; $wb['monitor_serverstate_raidresync_txt'] = 'RAID, RESYNC kipinde'; $wb['monitor_serverstate_raidfault_txt'] = 'RAID dizisinde hatalı bir disk var. Bu diski en kısa sürede değiştirmelisiniz!'; @@ -118,6 +124,7 @@ $wb['monitor_serverstate_syslogerror_txt'] = 'Sistem günlüğünde hatalar var' $wb['monitor_serverstate_syslogunknown_txt'] = 'Sistem Günlüğü: ???'; $wb['monitor_serverstate_updatesok_txt'] = 'Sistem güncel'; $wb['monitor_serverstate_updatesneeded_txt'] = 'Bir ya da daha fazla bileşenin güncellenmesi gerekiyor'; +$wb['monitor_serverstate_updatesunknown_txt'] = 'Sistem Güncelleme: ???'; $wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter sorunsuz'; $wb['monitor_serverstate_beancounterinfo_txt'] = 'Beancounter kayıtlarında az sayıda hata var'; $wb['monitor_serverstate_beancounterwarning_txt'] = 'Beancounter kayıtlarında ortalama sayıda hata var'; @@ -130,7 +137,8 @@ $wb['monitor_services_ftp_txt'] = 'FTP Sunucu:'; $wb['monitor_services_smtp_txt'] = 'SMTP Sunucu:'; $wb['monitor_services_pop_txt'] = 'POP3 Sunucu:'; $wb['monitor_services_imap_txt'] = 'IMAP Sunucu:'; -$wb['monitor_services_mydns_txt'] = 'myDNS Sunucu:'; +$wb['monitor_services_mydns_txt'] = 'DNS Sunucu:'; +$wb['monitor_services_mongodb_txt'] = 'MongoDB Sunucusu:'; $wb['monitor_services_mysql_txt'] = 'mySQL Sunucu:'; $wb['monitor_settings_datafromdate_txt'] = 'Veri tarihi: '; $wb['monitor_settings_datetimeformat_txt'] = 'Y-m-d H:i'; @@ -138,10 +146,11 @@ $wb['monitor_settings_refreshsq_txt'] = 'Yenileme Sıklığı:'; $wb['monitor_settings_server_txt'] = 'Sunucu'; $wb['monitor_title_cpuinfo_txt'] = 'İşlemci Bilgileri'; $wb['monitor_title_updatestate_txt'] = 'Güncellik Durumu'; -$wb['monitor_title_mailq_txt'] = 'Posta Kuyruğu'; +$wb['monitor_title_mailq_txt'] = 'E-posta Kuyruğu'; $wb['monitor_title_raidstate_txt'] = 'RAID Durumu'; $wb['monitor_title_rkhunterlog_txt'] = 'RKHunter Günlüğü'; $wb['monitor_title_fail2ban_txt'] = 'Fail2Ban Günlüğü'; +$wb['monitor_title_mongodb_txt'] = 'MongoDB Günlüğü'; $wb['monitor_title_iptables_txt'] = 'IPTables Kuralları'; $wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter'; $wb['monitor_updates_nosupport_txt'] = 'Dağıtımınız, bu izlemeyi desteklemiyor'; @@ -152,13 +161,4 @@ $wb['no_permissions_to_view_monit_txt'] = 'Monit erişimi izniniz yok.'; $wb['Show Munin'] = 'Munin Durumu'; $wb['no_munin_url_defined_txt'] = 'Munin adresi belirtilmemiş.'; $wb['no_permissions_to_view_munin_txt'] = 'Munin erişimi izniniz yok.'; -$wb['no_data_database_size_txt'] = 'No data about the database usage available at the moment. Please check again later.'; -$wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; -$wb['monitor_database_name_txt'] = 'Database'; -$wb['monitor_database_size_txt'] = 'Size'; -$wb['monitor_database_client_txt'] = 'Client'; -$wb['monitor_database_domain_txt'] = 'Domain'; -$wb['monitor_serverstate_updatesunknown_txt'] = 'System Update: ???'; -$wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; -$wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; ?> diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..f1ba8c67b8eed44c916f66d91ec4bd7a1af49872 --- /dev/null +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng @@ -0,0 +1,8 @@ + diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng new file mode 100644 index 0000000000000000000000000000000000000000..0e040a3e77d48b89a779f7c7d3fb4198df0fe02e --- /dev/null +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng @@ -0,0 +1,7 @@ + diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_view.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_view.lng new file mode 100644 index 0000000000000000000000000000000000000000..df9ddd286f46e816e06132e7465929ab8dd87229 --- /dev/null +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_view.lng @@ -0,0 +1,26 @@ + diff --git a/interface/web/monitor/templates/datalog_list.htm b/interface/web/monitor/templates/datalog_list.htm index eb79f46b54457796fe58945e34db80c07835c980..53ca89997f039b1e01205d8a793013bbc289d937 100644 --- a/interface/web/monitor/templates/datalog_list.htm +++ b/interface/web/monitor/templates/datalog_list.htm @@ -33,7 +33,7 @@ {tmpl_var name="action"} {tmpl_var name="dbtable"} - + diff --git a/interface/web/monitor/templates/syslog_list.htm b/interface/web/monitor/templates/syslog_list.htm index 8f62422a847717cafec01fa7e11195bde73835ee..7196e3ab02bbeb413c994b2eaaeafdb54e8bf72e 100644 --- a/interface/web/monitor/templates/syslog_list.htm +++ b/interface/web/monitor/templates/syslog_list.htm @@ -34,10 +34,10 @@ {tmpl_var name="message"} - + - + diff --git a/interface/web/remote/rest.php b/interface/web/remote/rest.php index d57915004520e9895d4fafe1b463a3ffc47b1d21..4f202c6eeedff5c2f51d57dfc6ee9149be738215 100644 --- a/interface/web/remote/rest.php +++ b/interface/web/remote/rest.php @@ -6,7 +6,11 @@ require_once '../../lib/config.inc.php'; $conf['start_session'] = false; require_once '../../lib/app.inc.php'; -$app->load('rest_handler'); +$app->load('rest_handler,getconf'); + +$security_config = $app->getconf->get_security_config('permissions'); +if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.'); + $rest_handler = new ISPConfigRESTHandler(); $rest_handler->run(); diff --git a/interface/web/sites/aps_do_operation.php b/interface/web/sites/aps_do_operation.php index ff0705f9bbb722114029f4f4a4db957e31ca64a8..8de3ed4e29b012793c8055a83b08173c8445030c 100644 --- a/interface/web/sites/aps_do_operation.php +++ b/interface/web/sites/aps_do_operation.php @@ -64,6 +64,9 @@ if($_GET['action'] == 'change_status') } else if($_GET['action'] == 'delete_instance') { + // Check CSRF Token + $app->auth->csrf_token_check('GET'); + // Make sure a valid package ID is given (also corresponding to the calling user) $client_id = 0; $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false; diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php index 4739e25b8a69798e2d253a059e10a12f0e2652c3..1a38190a9f2590f5070c6e75c5073cfd4dd96893 100644 --- a/interface/web/sites/aps_install_package.php +++ b/interface/web/sites/aps_install_package.php @@ -93,6 +93,9 @@ if(!empty($domains_assoc)) foreach($domains_assoc as $domain) $domains[] = $doma $result['input'] = array(); if(count($_POST) > 1) { + // Check CSRF Token + $app->auth->csrf_token_check(); + $result = $gui->validateInstallerInput($_POST, $details, $domains, $settings); if(empty($result['error'])) { @@ -117,13 +120,16 @@ foreach($details as $key => $value) else if($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']); } +// get new csrf token +$csrf_token = $app->auth->csrf_token_get('aps_install_package'); +$app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']); +$app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']); + // Parse the template as far as possible, then do the rest manually $app->tpl_defaults(); $parsed_tpl = $app->tpl->grab(); -// ISPConfig has a very old and functionally limited template engine. We have to style parts on our own... - // Print the domain list $domains_tpl = ''; if(!empty($domains)) diff --git a/interface/web/sites/aps_installedpackages_list.php b/interface/web/sites/aps_installedpackages_list.php index 28f334019f5706f617602af096a7beb055e41d52..32849ad740f12f67f662a43cd7bca77532e866e5 100644 --- a/interface/web/sites/aps_installedpackages_list.php +++ b/interface/web/sites/aps_installedpackages_list.php @@ -112,12 +112,16 @@ if(!$is_admin) { $records = $app->db->queryAllRecords($query); $app->listform_actions->DataRowColor = '#FFFFFF'; +$csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); +$_csrf_id = $csrf_token['csrf_id']; +$_csrf_key = $csrf_token['csrf_key']; + // Re-form all result entries and add extra entries $records_new = array(); if(is_array($records)) { $app->listform_actions->idx_key = $app->listform->listDef["table_idx"]; - foreach($records as $rec) + foreach($records as $key => $rec) { // Set an abbreviated install location to beware the page layout $ils = ''; @@ -129,7 +133,9 @@ if(is_array($records)) if($rec['instance_status'] != INSTANCE_REMOVE && $rec['instance_status'] != INSTANCE_INSTALL) $rec['delete_possible'] = 'true'; - $records_new[] = $app->listform_actions->prepareDataRow($rec); + $records_new[$key] = $app->listform_actions->prepareDataRow($rec); + $records_new[$key]['csrf_id'] = $_csrf_id; + $records_new[$key]['csrf_key'] = $_csrf_key; } } $app->tpl->setLoop('records', $records_new); diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php index 148aa127ae493be1fdced8804f96276dc2c321c9..5f550cf8d141a352945e86bda2eca4ff31f6854a 100644 --- a/interface/web/sites/database_quota_stats.php +++ b/interface/web/sites/database_quota_stats.php @@ -83,7 +83,8 @@ class list_action extends listform_actions { } else { $web_database = $app->db->queryOneRecord("SELECT * FROM web_database WHERE database_id = ?", $rec[$this->idx_key]); $rec['database'] = $rec['database_name']; - $rec['server_name'] = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $web_database['server_id'])['server_name']; + $temp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $web_database['server_id']); + $rec['server_name'] = $temp['server_name']; $sys_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE groupid = ?", $web_database['sys_groupid']); $client = $app->db->queryOneRecord("SELECT * FROM client WHERE client_id = ?", $sys_group['client_id']); $rec['client'] = $client['username']; diff --git a/interface/web/sites/form/cron.tform.php b/interface/web/sites/form/cron.tform.php index 4a169c3a6710f46926c73cddd68ef066c27acdac..aedfcb26ca74019bdd1c9d991f06a57a0bbbb2cd 100644 --- a/interface/web/sites/form/cron.tform.php +++ b/interface/web/sites/form/cron.tform.php @@ -185,7 +185,7 @@ $form["tabs"]['cron'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php index 3bb2f9af73c9c3875c2bf9069155d4b4e651ff2e..dd3910c0434a850915aec7eeb5ede5201955d0a9 100644 --- a/interface/web/sites/form/database.tform.php +++ b/interface/web/sites/form/database.tform.php @@ -185,7 +185,7 @@ $form["tabs"]['database'] = array ( 'searchable' => 2 ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/database_user.tform.php b/interface/web/sites/form/database_user.tform.php index 09d2c32b2c3e94ca714fd8e574bb09df3ebb0563..5f91cbd1f30a4617bdc702fd98cb21dfc8fa91c9 100644 --- a/interface/web/sites/form/database_user.tform.php +++ b/interface/web/sites/form/database_user.tform.php @@ -125,7 +125,7 @@ $form["tabs"]['database_user'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index 239bfdb8583a7ec0a6e52b699a7ed98164dcbcb9..0b48d7a92d59da48a71698fd5fc50a660ad38ddc 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -146,7 +146,7 @@ $form["tabs"]['ftp'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -256,7 +256,7 @@ if($app->auth->is_admin()) { 'maxlength' => '7' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -276,7 +276,10 @@ if($app->auth->is_admin()) { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'directory_error_empty'), - 1 => array ( 'type' => 'CUSTOM', + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', + 'errmsg'=> 'directory_error_regex'), + 2 => array ( 'type' => 'CUSTOM', 'class' => 'validate_ftpuser', 'function' => 'ftp_dir', 'errmsg' => 'directory_error_notinweb'), @@ -287,7 +290,7 @@ if($app->auth->is_admin()) { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index 4268fc08ecd8a6a8f6ef1f9c5634c517e1bc174d..f4e83a1b57e9b7469142286dab4cfb4a5ce7732a 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -164,7 +164,7 @@ $form["tabs"]['shell'] = array ( 'maxlength' => '600' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -248,7 +248,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_childdomain.tform.php b/interface/web/sites/form/web_childdomain.tform.php index 6cfaa38c2a5188f1441d8f3db59d44bea4a1f3be..01132a75dc4dcd20db5e23486e08c8531a64a4e3 100644 --- a/interface/web/sites/form/web_childdomain.tform.php +++ b/interface/web/sites/form/web_childdomain.tform.php @@ -146,7 +146,7 @@ $form["tabs"]['domain'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -193,7 +193,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_folder.tform.php b/interface/web/sites/form/web_folder.tform.php index 5fec523a690d55f416a6f8243adcac9aa1fbbe92..9f8418446cf36b5e0a80aa0ce06d838fe0cb2ba1 100644 --- a/interface/web/sites/form/web_folder.tform.php +++ b/interface/web/sites/form/web_folder.tform.php @@ -99,7 +99,7 @@ $form["tabs"]['folder'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_folder_user.tform.php b/interface/web/sites/form/web_folder_user.tform.php index c3386a5a223812ffffb5d67ca01a853395f3bad9..b5f0b711c6837a3398723328b6f9b276472b0e67 100644 --- a/interface/web/sites/form/web_folder_user.tform.php +++ b/interface/web/sites/form/web_folder_user.tform.php @@ -119,7 +119,7 @@ $form["tabs"]['user'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index be06d34634aa20251ac1c4cb66f53be1a1954b58..838445e3615276f5a8250c039ea07e5e71bc005b 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -250,7 +250,7 @@ $form["tabs"]['domain'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'fast-cgi', - 'valuelimit' => 'client:web_php_options', + 'valuelimit' => 'system:sites:web_php_options;client:web_php_options', 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), 'searchable' => 2 ), @@ -299,7 +299,7 @@ $form["tabs"]['domain'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ), 'plugins' => array ( @@ -435,7 +435,7 @@ $form["tabs"]['redirect'] = array ( ) ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -601,7 +601,7 @@ if($ssl_available) { ) ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -641,7 +641,7 @@ $form["tabs"]['stats'] = array ( 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -683,7 +683,7 @@ if ($backup_available) { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ), 'plugins' => array ( @@ -772,6 +772,12 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'php_fpm_chroot' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'pm' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', @@ -966,7 +972,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'maxlength' => '4' ) //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/webdav_user.tform.php b/interface/web/sites/form/webdav_user.tform.php index 8d5c0c561f29b4a33db9da70f05367d5163ec21b..73ea898b680125df4a00b3da3be17db42463392f 100644 --- a/interface/web/sites/form/webdav_user.tform.php +++ b/interface/web/sites/form/webdav_user.tform.php @@ -85,7 +85,7 @@ $form["tabs"]['webdav'] = array ( 'validators' => array ( 0 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'username_error_unique'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{0,64}$/', + 'regex' => '/^[\w\.\-@]{0,64}$/', 'errmsg'=> 'username_error_regex'), ), 'default' => '', @@ -142,7 +142,7 @@ $form["tabs"]['webdav'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/lib/lang/ar_aps.lng b/interface/web/sites/lib/lang/ar_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..881c146a4dd1a58e7bd50cfc34f7ea21e0073bb4 100644 --- a/interface/web/sites/lib/lang/ar_aps.lng +++ b/interface/web/sites/lib/lang/ar_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Password strength'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng index ff063e88c9ba226abb40ad9bbd1b0acc3a77bb8f..f208ab3f3698882517a59a2a062a4e51e5b7e0ec 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -80,6 +80,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/bg_aps.lng b/interface/web/sites/lib/lang/bg_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..6a5f9819439880418389846d329389fcf2a13e02 100644 --- a/interface/web/sites/lib/lang/bg_aps.lng +++ b/interface/web/sites/lib/lang/bg_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Сила на паролата'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng index e1dce797cf0757a44a811262567964c11bc47e25..a84d915230bd3f789ed1a24b099067256c96b3af 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO редирект'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Използвай сокет за PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng index 3fdd93585ec8e05b83eb8750964d30e38e2c46d6..8710dc11407242a2a88cecbb7b335cee88ccdd69 100644 --- a/interface/web/sites/lib/lang/br.lng +++ b/interface/web/sites/lib/lang/br.lng @@ -2,34 +2,37 @@ $wb['Websites'] = 'Sites'; $wb['Website'] = 'Site'; $wb['Subdomain'] = 'Subdomínio'; -$wb['Aliasdomain'] = 'Apelido de domínio'; -$wb['Database'] = 'Bancos de dados'; +$wb['Aliasdomain'] = 'Alias de domínio'; +$wb['Database'] = 'Banco de dados'; +$wb['Database User'] = 'Usuários do banco de dados'; $wb['Web Access'] = 'Acesso web'; $wb['FTP-User'] = 'Usuários ftp'; $wb['Webdav-User'] = 'Usuários webdav'; $wb['Folder'] = 'Pastas protegidas'; -$wb['Folder users'] = 'Usuários de pastas'; +$wb['Folder users'] = 'Usuários de pastas protegidas'; $wb['Command Line'] = 'Linha de comando'; -$wb['Shell-User'] = 'Usuários shell'; +$wb['Shell-User'] = 'Usuários do shell'; $wb['Cron Jobs'] = 'Tarefas no cron'; $wb['Statistics'] = 'Estatísticas'; $wb['Web traffic'] = 'Tráfego web'; -$wb['Website quota (Harddisk)'] = 'Cota para sites (disco)'; +$wb['FTP traffic'] = 'Tráfego ftp'; +$wb['Website quota (Harddisk)'] = 'Cota de site (disco)'; +$wb['Database quota'] = 'Cota do banco de dados'; +$wb['Backup Stats'] = 'Estatísticas de backups'; $wb['Cron'] = 'Cron'; $wb['Stats'] = 'Estatísticas'; $wb['Shell'] = 'Shell'; $wb['Webdav'] = 'Webdav'; $wb['FTP'] = 'FTP'; $wb['Options'] = 'Opções'; +$wb['Domain'] = 'Domínio'; $wb['Redirect'] = 'Redirecionamento'; $wb['SSL'] = 'SSL'; $wb['Sites'] = 'Sites'; -$wb['Database User'] = 'Usuários'; -$wb['APS Installer'] = 'Instalação de apps'; +$wb['APS Installer'] = 'Instalador de APPs'; $wb['Available packages'] = 'Pacotes disponíveis'; $wb['Installed packages'] = 'Pacotes instalados'; $wb['Update Packagelist'] = 'Atualizar lista de pacotes'; $wb['Subdomain (Vhost)'] = 'Subdomínio (vhost)'; -$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \"proxy\" exige uma url como caminho do redirecionamento.'; -$wb['Domain'] = 'Domínio'; +$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.'; ?> diff --git a/interface/web/sites/lib/lang/br_aps.lng b/interface/web/sites/lib/lang/br_aps.lng index 6c5be1da543b191955939f1887120259c5f2649f..744c215192d5e8f4686b26e949fdfe51ee6f8a4c 100644 --- a/interface/web/sites/lib/lang/br_aps.lng +++ b/interface/web/sites/lib/lang/br_aps.lng @@ -5,54 +5,59 @@ $wb['available_packages_txt'] = 'Pacotes disponíveis'; $wb['installed_packages_txt'] = 'Pacotes instalados'; $wb['yes_txt'] = 'Sim'; $wb['no_txt'] = 'Não'; -$wb['invalid_id_txt'] = 'Nenhuma ID válida inserida.'; +$wb['invalid_id_txt'] = 'Nenhuma ID válida informada.'; $wb['details_txt'] = 'Detalhes'; $wb['version_txt'] = 'Versão'; $wb['category_txt'] = 'Categoria'; -$wb['homepage_txt'] = 'Página'; +$wb['homepage_txt'] = 'Página Inicial'; $wb['supported_languages_txt'] = 'Idiomas suportados'; $wb['description_txt'] = 'Descrição'; $wb['config_script_txt'] = 'Script de configuração'; -$wb['installed_size_txt'] = 'Tamanho após instalação'; +$wb['installed_size_txt'] = 'Tamanho após a instalação'; $wb['license_txt'] = 'Licença'; -$wb['screenshots_txt'] = 'Telas'; -$wb['changelog_txt'] = 'Log de mudanças'; -$wb['server_requirements_txt'] = 'Requisitos do servidor'; -$wb['php_extensions_txt'] = 'Extensões PHP'; -$wb['php_settings_txt'] = 'Configurações do PHP'; -$wb['supported_php_versions_txt'] = 'Versões do PHP suportadas'; +$wb['screenshots_txt'] = 'Captura de telas'; +$wb['changelog_txt'] = 'Mudanças Recentes'; +$wb['server_requirements_txt'] = 'Requisitos do Servidor'; +$wb['php_extensions_txt'] = 'Extensões php'; +$wb['php_settings_txt'] = 'Configurações php'; +$wb['supported_php_versions_txt'] = 'Versões do php suportadas'; $wb['database_txt'] = 'Banco de Dados'; $wb['settings_txt'] = 'Configurações'; -$wb['install_package_txt'] = 'Instalar esse pacote'; +$wb['install_package_txt'] = 'Instalar este pacote'; $wb['installation_txt'] = 'Instalação'; $wb['install_location_txt'] = 'Local da instalação'; -$wb['acceptance_txt'] = 'Aceitação'; -$wb['acceptance_text_txt'] = 'Sim, eu li a licença e aceito os termos.'; +$wb['btn_install_txt'] = 'Instalar'; +$wb['btn_cancel_txt'] = 'Cancelar'; +$wb['acceptance_txt'] = 'Aceitar a licença'; +$wb['acceptance_text_txt'] = 'Sim, li e aceito os termos da licença.'; $wb['install_language_txt'] = 'Idioma da interface'; $wb['new_database_password_txt'] = 'Nova senha do banco de dados'; $wb['basic_settings_txt'] = 'Configurações básicas'; -$wb['package_settings_txt'] = 'Configurações do pacote'; -$wb['error_main_domain'] = 'O domínio no caminho da instalação é é inválido.'; -$wb['error_no_main_location'] = 'Você inseriu um caminho inválido para a instalação.'; -$wb['error_inv_main_location'] = 'A pasta informada para a instalação é inválida.'; -$wb['error_license_agreement'] = 'Para continuar é preciso aceitar os termos da licenciamento.'; -$wb['error_no_database_pw'] = 'Você informou uma senha inválida para o banco de dados.'; -$wb['error_short_database_pw'] = 'Por favor, escolha uma senha com maior complexidade para o banco de dados.'; -$wb['error_no_value_for'] = 'O campo \'%s\' não pode ficar está em branco.'; -$wb['error_short_value_for'] = 'O campo \'%s\' exige um valor maior.'; -$wb['error_long_value_for'] = 'O campo \'%s\' exige um valor mais curto.'; -$wb['error_inv_value_for'] = 'Você inseriu um valor inválido para o campo \'%s\'.'; -$wb['error_inv_email_for'] = 'Você inseriu um e-mail inválido para o campo \'%s\'.'; -$wb['error_inv_domain_for'] = 'Você inseriu um domínio inválido para o campo \'%s\'.'; -$wb['error_inv_integer_for'] = 'Você inseriu um número inválido para o campo \'%s\'.'; -$wb['error_inv_float_for'] = 'Você inseriu um número de ponto flutuante inválido para o campo \'%s\'.'; -$wb['error_used_location'] = 'O caminho da instalação contém um pacote de instalação.'; -$wb['installation_task_txt'] = 'Agendamento de instalação'; +$wb['package_settings_txt'] = 'Configurações de pacotes'; +$wb['error_main_domain'] = 'O domínio para a instalação é inválido.'; +$wb['error_no_main_location'] = 'Não foi informado um caminho válido para a instalação.'; +$wb['error_inv_main_location'] = 'Local da pasta de instalação informado é inválido.'; +$wb['error_license_agreement'] = 'Para continuar é necessário aceitar os termos da licença.'; +$wb['error_no_database_pw'] = 'Não foi informado uma senha válida para o banco de dados.'; +$wb['error_short_database_pw'] = 'Por favor informe uma senha do banco de dados com maior complexidade.'; +$wb['error_no_value_for'] = 'O campo "%s" não pode estar está em branco.'; +$wb['error_short_value_for'] = 'O campo "%s" requer um valor de entrada maior.'; +$wb['error_long_value_for'] = 'O campo "%s" requer um valor de entrada menor.'; +$wb['error_inv_value_for'] = 'O valor informado no campo "%s" é inválido.'; +$wb['error_inv_email_for'] = 'O e-mail informado no campo "%s" é inválido.'; +$wb['error_inv_domain_for'] = 'O domínio informado no campo "%s" é inválido.'; +$wb['error_inv_integer_for'] = 'O número informado no campo "%s" é inválido.'; +$wb['error_inv_float_for'] = 'O número de ponto flutuante informado no campo "%s" é inválido.'; +$wb['error_used_location'] = 'O caminho da instalação selecionado já possui uma instalação de pacote.'; +$wb['installation_task_txt'] = 'Instalação agendada'; $wb['installation_error_txt'] = 'Erro de instalação'; $wb['installation_success_txt'] = 'Instalado'; -$wb['installation_remove_txt'] = 'Remove agendamento'; -$wb['packagelist_update_finished_txt'] = 'Atualização da lista de pacotes finalizada.'; -$wb['btn_install_txt'] = 'Instalar'; -$wb['btn_cancel_txt'] = 'Cancelar'; -$wb['limit_aps_txt'] = 'O limite de instâncias de apps para esta conta foi alcançado.'; +$wb['installation_remove_txt'] = 'Remover instalação agendada'; +$wb['packagelist_update_finished_txt'] = 'Lista de APPs atualizada.'; +$wb['limit_aps_txt'] = 'O limite de instâncias de APPs para esta conta foi alcançado.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['password_strength_txt'] = 'Dificuldade da senha'; ?> diff --git a/interface/web/sites/lib/lang/br_aps_instances_list.lng b/interface/web/sites/lib/lang/br_aps_instances_list.lng index fb6a2addd8db607ae6e4960d331db289e09328b2..da5b80d68e3e2380b59f4f2c6dc48ded2223c5c8 100644 --- a/interface/web/sites/lib/lang/br_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/br_aps_instances_list.lng @@ -5,7 +5,7 @@ $wb['version_txt'] = 'Versão'; $wb['customer_txt'] = 'Cliente'; $wb['status_txt'] = 'Estado'; $wb['install_location_txt'] = 'Local da instalação'; -$wb['pkg_delete_confirmation'] = 'Você realmente deseja remover esta instalação?'; +$wb['pkg_delete_confirmation'] = 'Deseja realmente remover esta instalação?'; $wb['filter_txt'] = 'Pesquisar'; $wb['delete_txt'] = 'Remover'; ?> diff --git a/interface/web/sites/lib/lang/br_aps_packages_list.lng b/interface/web/sites/lib/lang/br_aps_packages_list.lng index 641d807f52475f545c86ad32f2081ce7a74a7ff5..bbd0e1ad3d95ad97f4e3e3ddf3ead4d763088815 100644 --- a/interface/web/sites/lib/lang/br_aps_packages_list.lng +++ b/interface/web/sites/lib/lang/br_aps_packages_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/sites/lib/lang/br_backup_stats_list.lng b/interface/web/sites/lib/lang/br_backup_stats_list.lng index 5f7f2d9ec740787e4e60e05619bccb7d24537bfe..932ad5dba71ae3e670e1f6f40c22e3ad9a364a48 100644 --- a/interface/web/sites/lib/lang/br_backup_stats_list.lng +++ b/interface/web/sites/lib/lang/br_backup_stats_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/sites/lib/lang/br_cron.lng b/interface/web/sites/lib/lang/br_cron.lng index eab5b9f688c89a6b8efcac26fb39d777592640a4..98d98efa25b2c75cd21b0dc46496e560952b43b4 100644 --- a/interface/web/sites/lib/lang/br_cron.lng +++ b/interface/web/sites/lib/lang/br_cron.lng @@ -8,19 +8,19 @@ $wb['run_hour_txt'] = 'Horas'; $wb['run_mday_txt'] = 'Dias do mês'; $wb['run_month_txt'] = 'Meses'; $wb['run_wday_txt'] = 'Dias da semana'; -$wb['command_txt'] = 'Comando a executar (os comandos serão executados via sh ou urls via wget)'; +$wb['command_txt'] = 'Comando a executar (comandos são executados através do sh, urls através do wget)'; $wb['limit_cron_txt'] = 'O limite de tarefas no cron foi alcançado.'; -$wb['limit_cron_frequency_txt'] = 'A frequência das tarefas no cron ultrapassou o limite permitido.'; -$wb['run_min_error_format'] = 'Formato dos minutos é inválido.'; -$wb['run_hour_error_format'] = 'Formato das horas é inválido.'; -$wb['run_mday_error_format'] = 'Formato dos dias do mês é inválido.'; -$wb['run_month_error_format'] = 'Formato dos meses é inválido.'; -$wb['run_wday_error_format'] = 'Formato dos dias da semana é inválido.'; -$wb['command_error_format'] = 'Formato de comando é inválido. Somente endereços url http/https são permitidos.'; -$wb['unknown_fieldtype_error'] = 'Um tipo desconhecido de campo foi usado.'; -$wb['server_id_error_empty'] = 'O ID do servidor está em branco.'; -$wb['limit_cron_url_txt'] = 'Somente url do cron. Por favor, insira uma url iniciando com \"http://\" e um comando do cron.'; -$wb['command_error_empty'] = 'Comando está em branco.'; -$wb['command_hint_txt'] = 'Você poderá usar, por exemplo: \"/var/www/clients/clientX/webY/meu_script.sh\" ou \"http://www.dominio.com.br/path/script.php\" e também a palavra reservada \"[web_root]\" substituído por \"/var/www/clients/clientX/webY/web\".'; -$wb['log_output_txt'] = 'Saída do Log'; +$wb['limit_cron_frequency_txt'] = 'O limite de execuções das tarefas no cron foi alcançado.'; +$wb['run_min_error_format'] = 'Formato inválido para minutos.'; +$wb['run_hour_error_format'] = 'Formato inválido para horas.'; +$wb['run_mday_error_format'] = 'Formato inválido para dias do mês.'; +$wb['run_month_error_format'] = 'Formato inválido para meses.'; +$wb['run_wday_error_format'] = 'Formato inválido para dias da semana.'; +$wb['command_error_format'] = 'Comando possui formato inválido. Por favor, observe que em alguns casos somente chamadas http/https são permitidas.'; +$wb['unknown_fieldtype_error'] = 'Um tipo de campo desconhecido foi utilizado.'; +$wb['server_id_error_empty'] = 'O servidor está em branco.'; +$wb['command_hint_txt'] = 'ex.: /var/www/clients/clientX/webY/myscript.sh ou http://www.dominio.com.br/caminho/script.php, você pode utilizar a área reservada [web_root] para substituir /var/www/clients/clientX/webY/web.'; +$wb['log_output_txt'] = 'Gravar saída do log'; +$wb['limit_cron_url_txt'] = 'Somente URL no cron. Por favor insira uma URL iniciando com http:// como um comando no cron.'; +$wb['command_error_empty'] = 'Comando a executar está em branco.'; ?> diff --git a/interface/web/sites/lib/lang/br_cron_list.lng b/interface/web/sites/lib/lang/br_cron_list.lng index 89fe7932f6251434eeb10d66925fd2ed7efa385e..31017512d3f40c9663ef662c40ad788b1d3f7bbf 100644 --- a/interface/web/sites/lib/lang/br_cron_list.lng +++ b/interface/web/sites/lib/lang/br_cron_list.lng @@ -1,10 +1,10 @@ qualquer um)'; +$wb['database_remote_error_ips'] = 'Ao menos um endereço IP informado é inválido.'; $wb['client_txt'] = 'Cliente'; $wb['active_txt'] = 'Ativo'; +$wb['database_client_differs_txt'] = 'O cliente do site pai e o banco de dados não coincidem.'; $wb['database_name_error_empty'] = 'Nome do banco de dados está em branco.'; -$wb['database_name_error_unique'] = 'Já existe um banco de dados com este nome no servidor. O nome escolhido deve ser exclusivo.'; -$wb['database_name_error_regex'] = 'Nome do banco de dados é inválido. Só é permitido para o nome do banco os caracteres: \'a-z\', \'A-Z\', \'0-9\' e o \'underscrore\'. Tamanho: 2 - 64 caracteres.'; -$wb['database_user_error_empty'] = 'Nome do usuário do banco de dados está em branco.'; -$wb['database_user_error_unique'] = 'Já existe um usuário do banco de dados com este nome no servidor. O nome escolhido deve ser exclusivo.'; -$wb['database_user_error_regex'] = 'Nome do usuário do banco de dados é inválido. Só é permitido para nome do usuário banco de dados os caracteres: \'a-z\', \'A-Z\', \'0-9\' e o \'underscrore\'. Tamanho: 2 - 64 caracteres.'; -$wb['limit_database_txt'] = 'O limite de bancos de dados permitido para esta conta foi alcançado.'; -$wb['database_name_change_txt'] = 'O nome do banco de dados não pode ser modificado.'; -$wb['database_charset_change_txt'] = 'O charset do banco de dados não pode ser modificado.'; -$wb['remote_ips_txt'] = 'Endereços IP Remotos (separados por vírgula. Em branco para quaisquer IPs)'; -$wb['database_remote_error_ips'] = 'Pelo menos um dos endereços IP informados não é válido.'; -$wb['database_name_error_len'] = 'Nome do banco de dados - {db} - é muito longo. 64 caracteres, incluindo o prefixo, é o limite permitido.'; -$wb['database_user_error_len'] = 'Nome do usuário do banco de dados \'{user}\' é muito longo. 16 caracteres, incluindo o prefixo, é o limite permitido.'; +$wb['database_name_error_unique'] = 'Já existe um banco de dados com este nome no servidor. Para ter um nome exclusivo, por exemplo, insira o domínio como prefixo do nome.'; +$wb['database_name_error_regex'] = 'Nome do banco de dados é inválido. O nome do banco de dados pode conter os seguintes caracteres: a-z, A-Z, 0-9 e underscore. Comprimento 2 - 64 caracteres.'; +$wb['database_user_error_empty'] = 'Usuário do banco de dados está em branco.'; +$wb['database_user_error_unique'] = 'Já existe um usuário de banco de dados com esse nome. Para ter um nome exclusivo, por exemplo, insira o domínio como prefixo do nome.'; +$wb['database_user_error_regex'] = 'Usuário do banco de dados é inválido. O nome do usuário pode conter os seguintes caracteres: a-z, A-Z, 0-9 e underscore. Comprimento: 2 a 16 caracteres.'; +$wb['limit_database_txt'] = 'O limite de banco de dados foi alcançado para esta conta.'; +$wb['database_name_change_txt'] = 'O nome do banco de dados não pode ser alterado.'; +$wb['database_user_missing_txt'] = 'Por favor, selecione um usuário para este banco de dados.'; +$wb['database_charset_change_txt'] = 'O charset do banco de dados não pode ser alterado.'; +$wb['database_name_error_len'] = 'Nome do banco de dados - {db} - muito longo. O comprimento do nome do banco de dados, incluindo o prefixo, são 64 caracteres.'; +$wb['database_user_error_len'] = 'Nome do usuário do banco de dados - {user} - muito longo. O comprimento do nome do usuário, incluindo o prefixo, são 16 caracteres.'; $wb['parent_domain_id_txt'] = 'Site'; -$wb['database_site_error_empty'] = 'Selecione o \"site\" ao qual o banco de dados pertence.'; -$wb['select_site_txt'] = '- Selecionar site -'; +$wb['database_site_error_empty'] = 'Selecione o site ao qual o banco de dados pertence.'; +$wb['select_site_txt'] = '-Selecionar Site-'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['globalsearch_resultslimit_of_txt'] = 'de'; $wb['globalsearch_resultslimit_results_txt'] = 'resultados'; $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.'; $wb['globalsearch_noresults_limit_txt'] = '0 resultados'; $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar'; $wb['globalsearch_suggestions_text_txt'] = 'Sugestões'; -$wb['database_ro_user_txt'] = 'Usuário do banco de dados somente leitura'; -$wb['optional_txt'] = 'opcional'; -$wb['select_dbuser_txt'] = 'Selecionar o usuário do banco de dados'; -$wb['no_dbuser_txt'] = 'Nenhum'; -$wb['database_client_differs_txt'] = 'O cliente do site e banco de dados não coincidem.'; -$wb['database_user_missing_txt'] = 'Por favor, selecione um usuário do banco de dados para este banco de dados.'; -$wb['limit_database_quota_txt'] = 'Cota para banco de dados'; -$wb['limit_database_quota_error_notint'] = 'O valor da cota para banco de dados deve ser um número positivo.'; -$wb['limit_database_quota_free_txt'] = 'Cota para banco de dados'; +$wb['limit_database_quota_txt'] = 'Cota do banco de dados'; +$wb['limit_database_quota_error_notint'] = 'O limite da cota do banco de dados deve ser um número.'; +$wb['limit_database_quota_free_txt'] = 'Limite da cota do banco de dados disponível'; ?> diff --git a/interface/web/sites/lib/lang/br_database_admin_list.lng b/interface/web/sites/lib/lang/br_database_admin_list.lng index 4f8f6ba611a0f4aa001db9fd42a1fdbe613d73ad..eef9b6e3fae18536744fd569740ea12f99d6c83b 100644 --- a/interface/web/sites/lib/lang/br_database_admin_list.lng +++ b/interface/web/sites/lib/lang/br_database_admin_list.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/sites/lib/lang/br_database_list.lng b/interface/web/sites/lib/lang/br_database_list.lng index afb5d36a0d32790fe7421b9350915f039dcd26d3..b3d438e04b4d94db408c54b55adf74fee0132eac 100644 --- a/interface/web/sites/lib/lang/br_database_list.lng +++ b/interface/web/sites/lib/lang/br_database_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/sites/lib/lang/br_database_quota_stats_list.lng b/interface/web/sites/lib/lang/br_database_quota_stats_list.lng index 90202f115f6c300bffbcd16f30203677e1633243..41fd305a3aa81872dd30baa2482e540509f00041 100644 --- a/interface/web/sites/lib/lang/br_database_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/br_database_quota_stats_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/sites/lib/lang/br_database_user.lng b/interface/web/sites/lib/lang/br_database_user.lng index 518f0296e1c28a9fbbc6911fae73a1e74d3de6d8..193dbc7406d9feb95593294bdc6f0358be5eb702 100644 --- a/interface/web/sites/lib/lang/br_database_user.lng +++ b/interface/web/sites/lib/lang/br_database_user.lng @@ -1,25 +1,25 @@ diff --git a/interface/web/sites/lib/lang/br_database_user_admin_list.lng b/interface/web/sites/lib/lang/br_database_user_admin_list.lng index 1d610bd1b0aef7b656ea993675ff3df274f6b316..bb21e97b1c2e8f77c282e2af42286c39f8d1b76e 100644 --- a/interface/web/sites/lib/lang/br_database_user_admin_list.lng +++ b/interface/web/sites/lib/lang/br_database_user_admin_list.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/sites/lib/lang/br_database_user_list.lng b/interface/web/sites/lib/lang/br_database_user_list.lng index 855265e958b0f04edf3a43686c044ef5ed020a8e..d2e4332fc79e0a921a4e0240ca5bae8526c00a80 100644 --- a/interface/web/sites/lib/lang/br_database_user_list.lng +++ b/interface/web/sites/lib/lang/br_database_user_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng index 93a02f6c25419fa0f2d246fc5b77e948e8876ccf..e4fabd595987fbdb2ddae777beb6cc0abd0713dc 100644 --- a/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/sites/lib/lang/br_ftp_user.lng b/interface/web/sites/lib/lang/br_ftp_user.lng index bb8d99ceb05622cced7949ca108500fe6bfa80e4..370fe0f36687cdcf86045aa7adeddc3e0ed12095 100644 --- a/interface/web/sites/lib/lang/br_ftp_user.lng +++ b/interface/web/sites/lib/lang/br_ftp_user.lng @@ -1,35 +1,36 @@ 0'; -$wb['dir_dot_error'] = 'Não é permitido \"..\" no caminho.'; -$wb['dir_slashdot_error'] = 'Não é permitido \"./\" no caminho.'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['expires_txt'] = 'Expira em'; +$wb['quota_size_error_regex'] = 'Cota: insira -1 para ilimitado ou um número > 0.'; +$wb['dir_dot_error'] = 'Não é permitido ".." no caminho.'; +$wb['dir_slashdot_error'] = 'Não é permitido "./" no caminho.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['expires_txt'] = 'Expirar em'; ?> diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng index c92bf5baa4dff9219f43bf4b2c5997a4f2ccda75..8cd05205544545fcc43fd6d5d63b16533e7a9fd2 100644 --- a/interface/web/sites/lib/lang/br_shell_user.lng +++ b/interface/web/sites/lib/lang/br_shell_user.lng @@ -1,36 +1,36 @@ diff --git a/interface/web/sites/lib/lang/br_shell_user_list.lng b/interface/web/sites/lib/lang/br_shell_user_list.lng index 587c988ccd56722e325ef1f761bafe67951e0ae9..21bb3d4dfd9d75cc023cb183118c59e609879b99 100644 --- a/interface/web/sites/lib/lang/br_shell_user_list.lng +++ b/interface/web/sites/lib/lang/br_shell_user_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain.lng b/interface/web/sites/lib/lang/br_web_aliasdomain.lng index 9d4f1951d8090241d70c361f0dc1d4cbffd464d4..d6142fd3746ff05f90251f95afce755fdec1b7da 100644 --- a/interface/web/sites/lib/lang/br_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/br_web_aliasdomain.lng @@ -1,7 +1,7 @@ = 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:'; -$wb['Domain'] = 'Apelido de domínio'; +$wb['Domain'] = 'Alias de Domínio'; ?> diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng index 153aa33400c197f9978c5f13b3c3b383c0c22749..770ec725e484ab99e4f11553758685f24dc3cf82 100644 --- a/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/sites/lib/lang/br_web_childdomain.lng b/interface/web/sites/lib/lang/br_web_childdomain.lng index 1c53d165842a693423b8c785152334f48304d366..fbbb40635e040b52992c0059ab56709f035e6301 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -4,117 +4,117 @@ $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; $wb['ssl_organisation_unit_txt'] = 'Departamento'; $wb['ssl_country_txt'] = 'País'; -$wb['ssl_request_txt'] = 'Requisição SSL'; -$wb['ssl_cert_txt'] = 'Certificado SSL'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_request_txt'] = 'Requisição'; +$wb['ssl_cert_txt'] = 'Certificado'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'Domínio'; $wb['type_txt'] = 'Tipo'; -$wb['parent_domain_id_txt'] = 'Site pai'; +$wb['parent_domain_id_txt'] = 'Site Pai'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho para redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; $wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['vhost_type_txt'] = 'Tipo de vhost'; -$wb['hd_quota_txt'] = 'Cota de disco'; -$wb['traffic_quota_txt'] = 'Cota de tráfego'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; +$wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; -$wb['limit_web_domain_txt'] = 'o limite de domínios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio de site para esta conta foi alcançado.'; +$wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.'; $wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'Domínio está em branco.'; -$wb['domain_error_unique'] = 'Já existe apelido de domínio ou subdomínio com este nome.'; -$wb['domain_error_regex'] = 'Nome de domínio é inválido.'; -$wb['host_txt'] = 'Nome do servidor'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; +$wb['domain_error_empty'] = 'O domínio está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.'; +$wb['domain_error_regex'] = 'O domínio é inválido.'; +$wb['domain_error_acme_invalid'] = 'Domínio genérico inválido não permitido.'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.'; +$wb['host_txt'] = 'Host'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; -$wb['domain_error_wildcard'] = 'Curingas para subdomínios não são permitidos.'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:'; -$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento \"proxy\" exige uma url no caminho de redirecionamento.'; -$wb['backup_interval_txt'] = 'Intervalo de backup'; -$wb['backup_copies_txt'] = 'Limite de cópias do backup'; +$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['ssl_key_txt'] = 'Chave'; -$wb['ssl_domain_txt'] = 'Domínio do SSL'; -$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não use uma barra - \"/\".'; +$wb['ssl_domain_txt'] = 'Domínio'; +$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).'; $wb['ipv6_address_txt'] = 'Endereço IPv6'; -$wb['errordocs_txt'] = 'Pasta personalizada Error-Documents'; +$wb['errordocs_txt'] = 'Proprietário do Error-Documents'; $wb['subdomain_txt'] = 'Subdomínio automático'; $wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.'; -$wb['hd_quota_error_empty'] = 'Cota de disco é 0 ou está em branco.'; +$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.'; $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Organização\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'País\' está em branco.'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' em branco'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "País" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; $wb['client_group_id_txt'] = 'Cliente'; $wb['stats_password_txt'] = 'Configurar senha para estatísticas web'; -$wb['allow_override_txt'] = 'Diretiva apache AllowOverride'; -$wb['limit_web_quota_free_txt'] = 'Cota de disco'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. São caracteres válidos: \'A-Z\'.'; -$wb['limit_traffic_quota_free_txt'] = 'Cota de tráfego'; +$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride'; +$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponível'; +$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. Caracteres válidos são: "a-z", "0-9",".", "-", e "_".'; +$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_country_error_regex'] = 'O campo "País" é inválido. Caracteres válidos são: "A-Z".'; +$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponível'; $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; -$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego alcançada'; +$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Usuário para estatísticas web'; -$wb['stats_type_txt'] = 'Programa para estatísticas web'; +$wb['stats_user_txt'] = 'Usuário de estatísticas web'; +$wb['stats_type_txt'] = 'Sistema de estatísticas web'; $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini'; $wb['none_txt'] = 'Nenhum'; -$wb['disabled_txt'] = 'Inativo'; +$wb['disabled_txt'] = 'Desabilitado'; $wb['save_certificate_txt'] = 'Salvar certificado'; $wb['create_certificate_txt'] = 'Adicionar certificado'; $wb['delete_certificate_txt'] = 'Remover certificado'; $wb['nginx_directives_txt'] = 'Diretivas do nginx'; -$wb['seo_redirect_txt'] = 'Redirecionamento SEO'; -$wb['non_www_to_www_txt'] = 'Diretivas Non-www -> www'; -$wb['www_to_non_www_txt'] = 'Diretivas www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Usar soquete para PHP-FPM'; -$wb['error_no_sni_txt'] = 'SNI para SSL não está ativo neste servidor. Você só pode ativar um certificado SSL para cada endereço IP.'; +$wb['seo_redirect_txt'] = 'Diretivas SEO'; +$wb['non_www_to_www_txt'] = 'non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm'; +$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; -$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children'; -$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers'; -$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers'; -$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers'; -$wb['error_php_fpm_pm_settings_txt'] = 'Valores para as configurações do PHP-FPM pm devem obedecer as seguintes condições: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; -$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.'; -$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.'; -$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.'; -$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.'; -$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.'; -$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.'; -$wb['fastcgi_php_version_txt'] = 'Versão do PHP'; -$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM'; -$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout'; -$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.'; -$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:'; -$wb['Domain'] = 'Apelido de domínio'; -$wb['ssl_letsencrypt_exclude_txt'] = 'Não adicionar certificado Let\'s Encrypt'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:'; +$wb['Domain'] = 'Alias de domínio'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Sem certificado Let \'s Encrypt'; ?> diff --git a/interface/web/sites/lib/lang/br_web_childdomain_list.lng b/interface/web/sites/lib/lang/br_web_childdomain_list.lng index 20b559b128ad756ccd55299f2fc15a85b1bdd6f7..583ae2d3609d8a27600d4228ac0fcbab99b562f3 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain_list.lng @@ -4,15 +4,15 @@ $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Site'; $wb['domain_txt'] = 'Subdomínio'; -$wb['domain_error_empty'] = 'Domínio está em branco.'; -$wb['domain_error_unique'] = 'O nome do domínio deve ser exclusivo.'; -$wb['domain_error_regex'] = 'Nome do domínio é inválido.'; +$wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio'; +$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domínio'; +$wb['domain_error_empty'] = 'O domínio está em branco.'; +$wb['domain_error_unique'] = 'O domínio deve ser exclusivo.'; +$wb['domain_error_regex'] = 'O domínio é inválido.'; +$wb['domain_error_acme_invalid'] = 'Domínio genérico inválido não permitido.'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; $wb['none_txt'] = 'Nenhum'; -$wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio'; -$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido'; -$wb['aliasdomain_list_head_txt'] = 'Apelidos de domínios'; +$wb['aliasdomain_list_head_txt'] = 'Alias de domínios'; $wb['subdomain_list_head_txt'] = 'Subdomínios'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index f0fdabb75fc804d157f7fcece4acf9248584d1a4..1a2a2b301b9a18d1067daa89699e540f344f3681 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -1,116 +1,115 @@ = 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['web_folder_error_regex'] = 'Pasta informada é inválida! Por favor não insira barra \\"/\\".'; -$wb['domain_error_autosub'] = 'Já existe um subdomínio com estas configurações.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx:'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; -$wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy:'; +$wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:'; $wb['no_server_error'] = 'Nenhum servidor selecionado.'; $wb['no_backup_txt'] = 'Sem backup'; $wb['daily_backup_txt'] = 'Diário'; @@ -118,20 +117,20 @@ $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; $wb['rewrite_rules_txt'] = 'Reescrever Regras'; $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas'; -$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; $wb['variables_txt'] = 'Variáveis'; -$wb['added_by_txt'] = 'Cadastrado por'; +$wb['added_by_txt'] = 'Cadastrador por'; $wb['added_date_txt'] = 'Data do cadastro'; -$wb['backup_excludes_txt'] = 'Diretórios excluídos'; -$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgula. Exemplo: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos!'; +$wb['backup_excludes_txt'] = 'Diretórios Excluídos'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Configurações do php.ini inválidas'; -$wb['invalid_system_user_or_group_txt'] = 'Configurações inválidas para usuário ou grupo do sistema'; -$wb['apache_directive_blocked_error'] = 'Diretiva do apache bloqueada por configurações de segurança:'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; -$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:'; +$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido.'; +$wb['apache_directive_blocked_error'] = 'Diretivas do apache bloqueadas pelas configurações de segurança:'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; +$wb['nginx_directive_blocked_error'] = 'Diretivas do nginx bloqueadas pelas configurações de segurança:'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder.lng b/interface/web/sites/lib/lang/br_web_folder.lng index 34a3f65b0cc159a32b6b6de47980fc4654ef37ad..193cb4636f3915db018a9ac73f0d64a6eaeef2d4 100644 --- a/interface/web/sites/lib/lang/br_web_folder.lng +++ b/interface/web/sites/lib/lang/br_web_folder.lng @@ -4,5 +4,5 @@ $wb['parent_domain_id_txt'] = 'Site'; $wb['path_txt'] = 'Caminho'; $wb['active_txt'] = 'Ativo'; $wb['path_error_regex'] = 'Caminho da pasta é inválido.'; -$wb['error_folder_already_protected_txt'] = 'Já existe um registro para esta pasta.'; +$wb['error_folder_already_protected_txt'] = 'Já existe esta pasta.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder_user.lng b/interface/web/sites/lib/lang/br_web_folder_user.lng index dd63d02eec70f6580bd5e6289c81e099cb71d3ef..5dc0354fec4e260c2d04a005a128b459a9cac9e4 100644 --- a/interface/web/sites/lib/lang/br_web_folder_user.lng +++ b/interface/web/sites/lib/lang/br_web_folder_user.lng @@ -1,14 +1,14 @@ diff --git a/interface/web/sites/lib/lang/br_web_folder_user_list.lng b/interface/web/sites/lib/lang/br_web_folder_user_list.lng index e108c219b91e6e0772224d884cfd5c4d942a8046..8ad8c48257b12d8a02aef7859366ba7ca00ba99f 100644 --- a/interface/web/sites/lib/lang/br_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/br_web_folder_user_list.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng index 8abb0504384c4b66164b0dde23a133686dd1d794..53cb94ab5459f590e418071ea2111d08b8e0f464 100644 --- a/interface/web/sites/lib/lang/br_web_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_subdomain.lng @@ -6,21 +6,21 @@ $wb['ssl_organisation_unit_txt'] = 'Departamento'; $wb['ssl_country_txt'] = 'País'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'Domínio'; $wb['type_txt'] = 'Tipo'; $wb['parent_domain_id_txt'] = 'Site Pai'; -$wb['redirect_type_txt'] = 'Tipo do Redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho do Redirecionamento'; +$wb['redirect_type_txt'] = 'Tipo de redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; $wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['vhost_type_txt'] = 'Tipo VHost'; -$wb['hd_quota_txt'] = 'Cota de Disco'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; $wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; @@ -29,22 +29,22 @@ $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; $wb['limit_web_domain_txt'] = 'O limite de domínios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domínio para esta conta foi alcançado.'; -$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domínios para esta conta foi alcançado.'; +$wb['limit_web_subdomain_txt'] = 'O limite de subdomínios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'Domínio está em branco.'; -$wb['domain_error_unique'] = 'Já existe apelido de domínio ou subdomínio com este nome.'; -$wb['domain_error_regex'] = 'Nome do domínio é inválido.'; +$wb['domain_error_empty'] = 'O domínio está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomínio ou alias de domínio com este nome.'; +$wb['domain_error_regex'] = 'O domínio é inválido.'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.'; $wb['host_txt'] = 'Host'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; -$wb['domain_error_wildcard'] = 'Curingas de subdomínios não são permitidos.'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:'; -$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \'proxy\' exige uma URL como caminho de redirecionamento.'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; +$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng index 171a34f95b19c12ddfa4658273dd822ab0cb6abd..01a7414a98c5fd7fd5bdcb5e4a666a646cae5eeb 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -1,115 +1,116 @@ = 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não insira barra - \"\\".'; -$wb['domain_error_autosub'] = 'Já existe um subdomínio com essas configurações.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:'; $wb['no_server_error'] = 'Nenhum servidor selecionado.'; @@ -117,38 +118,44 @@ $wb['no_backup_txt'] = 'Sem backup'; $wb['daily_backup_txt'] = 'Diário'; $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; -$wb['rewrite_rules_txt'] = 'Regras de reescrita'; +$wb['rewrite_rules_txt'] = 'Reescrever Regras'; $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas'; $wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; -$wb['web_folder_txt'] = 'Pasta web'; -$wb['web_folder_invalid_txt'] = 'A pasta web informada é inválida, por favor escolha um nome diferente.'; -$wb['web_folder_unique_txt'] = 'A pasta web informada já existe, por favor escolha um nome diferente.'; -$wb['host_txt'] = 'Nome do servidor'; -$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.'; +$wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para esta conta.'; $wb['variables_txt'] = 'Variáveis'; $wb['added_by_txt'] = 'Cadastrado por'; $wb['added_date_txt'] = 'Data do cadastro'; -$wb['backup_excludes_txt'] = 'Diretórios excluídos'; -$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos.'; -$wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para esta conta.'; -$wb['subdomain_error_empty'] = 'O campo subdomínio está em branco ou contém caracteres inválidos.'; +$wb['backup_excludes_txt'] = 'Diretórios Excluídos'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.'; +$wb['web_folder_txt'] = 'Pasta web'; +$wb['web_folder_invalid_txt'] = 'A pasta web é inválida, por favor selecione outra.'; +$wb['web_folder_unique_txt'] = 'A pasta web é já está em uso, por favor selecione outra.'; +$wb['host_txt'] = 'Nome do host'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomínios.'; +$wb['variables_txt'] = 'Variáveis'; +$wb['backup_excludes_txt'] = 'Diretórios Excluídos'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.'; +$wb['subdomain_error_empty'] = 'O subdomínio está em branco ou possui caracteres inválidos.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2'; -$wb['load_client_data_txt'] = 'Carregas detalhes do cliente'; +$wb['load_client_data_txt'] = 'Carregar detalhes do cliente'; $wb['load_my_data_txt'] = 'Carregar detalhes do contato'; $wb['reset_client_data_txt'] = 'Limpar dados'; +$wb['document_root_txt'] = 'Document Root'; +$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt SSL'; $wb['rewrite_to_https_txt'] = 'Reescrever HTTP para HTTPS'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['directive_snippets_id_txt'] = 'Configurações do servidor de páginas'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; +$wb['directive_snippets_id_txt'] = 'Configurações do servidor web'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; $wb['enable_pagespeed_txt'] = 'Habilitar PageSpeed'; -$wb['log_retention_txt'] = 'Tempo de armazenamenro dos arquivos de log'; -$wb['log_retention_error_regex'] = 'Tempo de armazenamento, em dias (valores permitidos: min. 0 - max. 9999)'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos'; +$wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mínimo 0, máximo 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng index 6b1385926dd838fcb39cbe80d3b183af77ceb4ac..3c0c7fd01e6af17c4028406ff2842683e6e3797f 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng @@ -7,8 +7,8 @@ $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'Domínio'; $wb['add_new_record_txt'] = 'Adicionar novo site'; $wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio'; -$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido de domínio'; +$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domínio'; $wb['domain_list_head_txt'] = 'Sites'; -$wb['aliasdomain_list_head_txt'] = 'Apelidos de domínios (vhost)'; +$wb['aliasdomain_list_head_txt'] = 'Alias de domínio (vhost)'; $wb['subdomain_list_head_txt'] = 'Subdomínios (vhost)'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng index e8fb6bfb09affba325b03f2790ff3f7d047fd5e0..8170afc2d3de1896df14ae91899b56c700369f03 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng @@ -5,10 +5,10 @@ $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'Domínio'; $wb['add_new_record_txt'] = 'Adicionar novo site'; -$wb['parent_domain_id_txt'] = 'Site'; $wb['add_new_subdomain_txt'] = 'Adicionar novo subdomínio'; -$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido'; +$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domínio'; +$wb['parent_domain_id_txt'] = 'Site'; $wb['domain_list_head_txt'] = 'Sites'; -$wb['aliasdomain_list_head_txt'] = 'Apelidos de domínios (vhost)'; +$wb['aliasdomain_list_head_txt'] = 'Alias de domínio (vhost)'; $wb['subdomain_list_head_txt'] = 'Subdomínios (vhost)'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng index 8a0c3e6a1fae58ad51d757c5feb04a2cc1fae92d..390b7402e7059332b1a766442ebc26c1454e0f2c 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng @@ -1,10 +1,10 @@ = 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponíveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponíveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponíveis:'; -$wb['proxy_directives_txt'] = 'Diretivas do Proxy'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponíveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponíveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponíveis:'; +$wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponíveis:'; -$wb['rewrite_rules_txt'] = 'Regras de Reescrita'; +$wb['rewrite_rules_txt'] = 'Reescrever regras'; $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas'; -$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; $wb['variables_txt'] = 'Variáveis'; $wb['backup_excludes_txt'] = 'Diretórios Excluídos'; -$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: \"web/cache/*,web/backup\".)'; -$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos contém caracteres inválidos.'; -$wb['subdomain_error_empty'] = 'O campo \"Subdomínio\" está em branco ou contém caracteres inválidos.'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vírgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluídos possuem caracteres inválidos.'; +$wb['subdomain_error_empty'] = 'O subdomínio está em branco ou possui caracteres inválidos.'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; ?> diff --git a/interface/web/sites/lib/lang/br_webdav_user.lng b/interface/web/sites/lib/lang/br_webdav_user.lng index b135d5e0faa3b5b318d73441c6ee07093600306e..485e3a77478c3aca99dff4cdb38dde32bfe2732a 100644 --- a/interface/web/sites/lib/lang/br_webdav_user.lng +++ b/interface/web/sites/lib/lang/br_webdav_user.lng @@ -7,15 +7,15 @@ $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['active_txt'] = 'Ativo'; $wb['limit_webdav_user_txt'] = 'O limite de usuários webdav para esta conta foi alcançado.'; -$wb['username_error_empty'] = 'Usuário está em branco.'; +$wb['username_error_empty'] = 'O nome do usuário está em branco.'; $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.'; -$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.'; -$wb['directory_error_empty'] = 'Diretório está em branco.'; +$wb['username_error_regex'] = 'O nome de usuário possui caracteres não permitidos.'; +$wb['directory_error_empty'] = 'O diretório está em branco.'; $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.'; -$wb['dir_dot_error'] = 'Não é permitido \"..\" no caminho.'; -$wb['dir_slashdot_error'] = 'Não é permitido \"./\" no caminho.'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['dir_dot_error'] = 'Não é permitido \'..\' no caminho.'; +$wb['dir_slashdot_error'] = 'Não é permitido \'./\' no caminho.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; ?> diff --git a/interface/web/sites/lib/lang/ca_aps.lng b/interface/web/sites/lib/lang/ca_aps.lng index 2c90556d661c4bf943ac505a9f6d75aaba2a4910..062d6ea58953a803c25c6bbea425826681c9e758 100644 --- a/interface/web/sites/lib/lang/ca_aps.lng +++ b/interface/web/sites/lib/lang/ca_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'Mise à jour APS Packagelist terminée $wb['btn_install_txt'] = 'Installer'; $wb['btn_cancel_txt'] = 'Annuler'; $wb['limit_aps_txt'] = 'Le nombre max d\'instances APS pour votre compte a été atteint.'; +$wb['generate_password_txt'] = 'Générer un mot de passe'; +$wb['repeat_password_txt'] = 'Vérification du mot de passe'; +$wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.'; +$wb['password_match_txt'] = 'Les mots de passe correspondent.'; +$wb['password_strength_txt'] = 'Force du mot de passe'; ?> diff --git a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng index c7cb4ac8490f8fe70ae5d89c9e24b6a528b1a45b..aae2f46339e8c6a275ce8531c5878d7255c12a89 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -82,6 +82,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/cz_aps.lng b/interface/web/sites/lib/lang/cz_aps.lng index 5ec94945d13fe951dcc94719144eb18e7b71d0fd..adf6ccf58eaecf0647bf841f5db7053d16c9bcba 100644 --- a/interface/web/sites/lib/lang/cz_aps.lng +++ b/interface/web/sites/lib/lang/cz_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS aktualizace seznamu balíčků byl $wb['btn_install_txt'] = 'Instalovat'; $wb['btn_cancel_txt'] = 'Zrušit'; $wb['limit_aps_txt'] = 'Max. počet APS instancí u vašeho účtu je dosaženo.'; +$wb['generate_password_txt'] = 'Generovat heslo'; +$wb['repeat_password_txt'] = 'Opakujte heslo'; +$wb['password_mismatch_txt'] = 'Hesla se neshodují.'; +$wb['password_match_txt'] = 'Hesla se shodují.'; +$wb['password_strength_txt'] = 'Bezpečnost hesla'; ?> diff --git a/interface/web/sites/lib/lang/cz_aps_instances_list.lng b/interface/web/sites/lib/lang/cz_aps_instances_list.lng index 8d712878d71f47ae1cda12f319e0765968ddd45a..db4494af0259af245294439ae9800b69b5d281d3 100644 --- a/interface/web/sites/lib/lang/cz_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/cz_aps_instances_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Nainstalované balíčky'; $wb['name_txt'] = 'Jméno'; $wb['version_txt'] = 'Verze'; $wb['customer_txt'] = 'Klient'; -$wb['status_txt'] = 'Status'; +$wb['status_txt'] = 'Stav'; $wb['install_location_txt'] = 'Umístění instalace'; $wb['pkg_delete_confirmation'] = 'Opravdu chcete smazat tuto instalaci ?'; $wb['filter_txt'] = 'Hledat'; diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng index 57b920156d5b59864eb014e7bf7ca4f39a142438..0f8d3e5dec8edfb1a86dd2908a36ec9a7541b04e 100644 --- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_txt'] = 'PHP Verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_backup_list.lng b/interface/web/sites/lib/lang/cz_web_backup_list.lng index 9674e6197a2f1cb4256df548a622c78c78e4a660..d30e41d961b094dfdfdadfd6f0fa0399c2364da5 100644 --- a/interface/web/sites/lib/lang/cz_web_backup_list.lng +++ b/interface/web/sites/lib/lang/cz_web_backup_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng index 5a22de61dee5a526b2455c2029f3a204e531bd70..b159976b29e044529665f4ceeabdce18fc7f3b0b 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_txt'] = 'PHP Verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng index 6353f713f02bddfcc1c0f0ecc2be433755227e89..deaa3269c404119e9adf80cdb112d3c8f5242cdf 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -83,6 +83,7 @@ $wb['seo_redirect_txt'] = 'SEO přesměrování'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -129,13 +130,13 @@ $wb['variables_txt'] = 'Proměnné'; $wb['added_by_txt'] = 'Kdo vytvořil účet'; $wb['added_date_txt'] = 'Datum vytvoření účtu'; $wb['backup_excludes_txt'] = 'Vyloučené adresáře'; -$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; -$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.'; -$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; +$wb['backup_excludes_note_txt'] = '(Oddělte více adresářů čárkami. Příklad: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'Vyloučené adresáře obsahují neplatné znaky.'; +$wb['server_chosen_not_ok'] = 'Vybraný server není pro tento účet povolen.'; +$wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['btn_save_txt'] = 'Uložit'; $wb['btn_cancel_txt'] = 'Zrušit'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; +$wb['enable_spdy_txt'] = 'Povolit SPDY / HTTP2'; $wb['load_client_data_txt'] = 'Nahrát údaje z podrobností registrovaného klienta'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Obnovit údaje (resetovat)'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng index 2b6f3c77d25c1e644a6de5bef18192d472195ece..268368c139b6192ddf3c9dcc1b7580d4cad86572 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng @@ -123,7 +123,7 @@ $wb['variables_txt'] = 'Proměnné'; $wb['backup_excludes_txt'] = 'Vyloučené adresáře'; $wb['backup_excludes_note_txt'] = '(Oddělte více adresářů čárkami. Vzor: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Vyloučené adresáře obsahují neplatné znaky.'; -$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; +$wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/de_aps.lng b/interface/web/sites/lib/lang/de_aps.lng index aab6f4edf7453af1f9f2d93ff5c62aed1eefb444..6c9ff30eed7889faaf33eea6dcaacc1610fc9ece 100644 --- a/interface/web/sites/lib/lang/de_aps.lng +++ b/interface/web/sites/lib/lang/de_aps.lng @@ -55,4 +55,9 @@ $wb['installation_success_txt'] = 'Installiert'; $wb['installation_remove_txt'] = 'Deinstallation vorgemerkt'; $wb['packagelist_update_finished_txt'] = 'APS Paketlistenupdate beendet.'; $wb['limit_aps_txt'] = 'Die maximale Anzahl an APS-Instanzen für Ihr Konto wurde erreicht.'; +$wb['generate_password_txt'] = 'Passwort erzeugen'; +$wb['repeat_password_txt'] = 'Passwort wiederholen'; +$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; +$wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; +$wb['password_strength_txt'] = 'Passwortkomplexität'; ?> diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng index bf29fb953fe0e2ddb0845c642b75749bf8e65de9..d95b6d47e48ba54ff5d0a55d2cba7cb4c9ccf11b 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -82,6 +82,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Nicht-www -> www'; $wb['www_to_non_www_txt'] = 'www -> Nicht-www'; $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['ipv6_address_txt'] = 'IPv6 Adresse'; $wb['error_no_sni_txt'] = 'SNI für SSL ist auf diesem Server nicht aktiviert. Sie können daher nur ein SSL Zertifikat pro IP Adresse eintragen.'; $wb['python_txt'] = 'Python'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Log-Dateien Aufbewahrungszeit'; $wb['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota kann nicht 0 sein.'; ?> diff --git a/interface/web/sites/lib/lang/dk_aps.lng b/interface/web/sites/lib/lang/dk_aps.lng index 83508753545e8e6d4ecee89b3a96799cd69eab86..ca006e2eb27fab5e3e87724050a35b190e36b839 100644 --- a/interface/web/sites/lib/lang/dk_aps.lng +++ b/interface/web/sites/lib/lang/dk_aps.lng @@ -55,4 +55,9 @@ $wb['installation_success_txt'] = 'Installeret'; $wb['installation_remove_txt'] = 'Fjernelse planlagt'; $wb['packagelist_update_finished_txt'] = 'APS Pakke Liste opdatering er færdig.'; $wb['limit_aps_txt'] = 'Max. antal af APS forekomster for din konto er nået.'; +$wb['generate_password_txt'] = 'Generer Adgangskode'; +$wb['repeat_password_txt'] = 'Gentage Adgangskode'; +$wb['password_mismatch_txt'] = 'Adgangskoderne stemmer ikke overens.'; +$wb['password_match_txt'] = 'Adgangskoderne stemmer overens.'; +$wb['password_strength_txt'] = 'Adgangskode styrke'; ?> diff --git a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng index c7cb4ac8490f8fe70ae5d89c9e24b6a528b1a45b..aae2f46339e8c6a275ce8531c5878d7255c12a89 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -82,6 +82,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/el_aps.lng b/interface/web/sites/lib/lang/el_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..0209737f61976aba4dedf491b315a8cec9d48d66 100644 --- a/interface/web/sites/lib/lang/el_aps.lng +++ b/interface/web/sites/lib/lang/el_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Δύναμη συνθηματικού'; ?> diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng index 7de00581c7a65b5bd4acc58f8d1bea3ec639dc5d..0ea2c2a7967226c037300d80b41eb8be0aec0b0c 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -80,6 +80,7 @@ $wb['seo_redirect_txt'] = 'Ανακατεύθυνση SEO'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/en_aps.lng b/interface/web/sites/lib/lang/en_aps.lng index bd33c1884ae848cf3b466433810528053a34e323..04f6fb798d039df71999a0456aa8556cc84b6f3f 100644 --- a/interface/web/sites/lib/lang/en_aps.lng +++ b/interface/web/sites/lib/lang/en_aps.lng @@ -28,7 +28,7 @@ $wb['installation_txt'] = 'Installation'; $wb['install_location_txt'] = 'Install location'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; -$wb['acceptance_txt'] = 'Acceptance'; +$wb['acceptance_txt'] = 'I accept the license'; $wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.'; $wb['install_language_txt'] = 'Interface language'; $wb['new_database_password_txt'] = 'New database password'; @@ -55,4 +55,9 @@ $wb['installation_success_txt'] = 'Installed'; $wb['installation_remove_txt'] = 'Removal planned'; $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb["limit_aps_txt"] = 'The max. number of APS instances for your account is reached.'; +$wb["generate_password_txt"] = 'Generate Password'; +$wb["repeat_password_txt"] = 'Repeat Password'; +$wb["password_mismatch_txt"] = 'The passwords do not match.'; +$wb["password_match_txt"] = 'The passwords do match.'; +$wb["password_strength_txt"] = "Password strength"; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index b508e5783694e45719768daa959363d1ffbe6f40..ae546e1c4d416668e32b112d980df7022d38cfab 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -82,6 +82,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -156,4 +157,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng index 746631008063f4d0eb07d75fb9ced5fe035aea30..3780b32edd64f99d83f62f6f92f104fc8035c478 100755 --- a/interface/web/sites/lib/lang/es_aps.lng +++ b/interface/web/sites/lib/lang/es_aps.lng @@ -55,4 +55,9 @@ $wb['supported_languages_txt'] = 'Idiomas soportados'; $wb['supported_php_versions_txt'] = 'Versiones de PHP soportadas'; $wb['version_txt'] = 'Versión'; $wb['yes_txt'] = 'Sí'; +$wb['generate_password_txt'] = 'Generar contraseña'; +$wb['repeat_password_txt'] = 'Repetir contraseña'; +$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; +$wb['password_match_txt'] = 'Las contraseñas coinciden.'; +$wb['password_strength_txt'] = 'Fortaleza de la contraseña'; ?> diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 398aef500f5b4f2db224d369efeed874438f8fd3..f98c02db15e26d1414e134b1e4aa4a69861686e5 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -78,6 +78,7 @@ $wb['seo_redirect_txt'] = 'Redirección SEO'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Usar Socket para PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI para SSL no está activado en este servidor. Sólo es posible activar un certificado SSL en cada dirección IP.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/fi_aps.lng b/interface/web/sites/lib/lang/fi_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..d78701f272b16de81f457eb23b4b4998c41fde24 100644 --- a/interface/web/sites/lib/lang/fi_aps.lng +++ b/interface/web/sites/lib/lang/fi_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Salasanan vahvuus'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index 94ba05bdd190650814a5d3e345c0acc92b8cc4f4..c7c4a144322ef29b110f7c4a3c4ccbdbec8cce8e 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/fr_aps.lng b/interface/web/sites/lib/lang/fr_aps.lng index 10b6edbcfd77503df78033503b55515000b04e85..6beef9939f77b03faaf2ebfbc46386fd4f0b97e4 100644 --- a/interface/web/sites/lib/lang/fr_aps.lng +++ b/interface/web/sites/lib/lang/fr_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'Mise à jour APS Packagelist terminée $wb['btn_install_txt'] = 'Installer'; $wb['btn_cancel_txt'] = 'Annuler'; $wb['limit_aps_txt'] = 'Le nombre max d’instances APS pour votre compte a été atteint.'; +$wb['generate_password_txt'] = 'Générer un mot de passe'; +$wb['repeat_password_txt'] = 'Vérification du mot de passe'; +$wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.'; +$wb['password_match_txt'] = 'Les mots de passe correspondent.'; +$wb['password_strength_txt'] = 'Force du mot de passe'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index 97a0dd0ac06f1a530bc9455b1942fa126dac065f..931c00a53336a2bfc6f08e92b734684162623486 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'Redirection SEO'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Utiliser Socket pour PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI pour SSL n\'est pas activé sur ce serveur. Vous ne pouvez activer qu\'un seul certificat SSL par adresse IP.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/hr_aps.lng b/interface/web/sites/lib/lang/hr_aps.lng index 8b2fa6450ebb6f79a414051a66d30397beb333fd..79d31cf7faab2004aac4e83518100cfe44fa4731 100644 --- a/interface/web/sites/lib/lang/hr_aps.lng +++ b/interface/web/sites/lib/lang/hr_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'Nadogradnja APS liste paketa je završ $wb['btn_install_txt'] = 'Instaliraj'; $wb['btn_cancel_txt'] = 'Odustani'; $wb['limit_aps_txt'] = 'Iskoristili ste maksimalan broj APS instanci za vaš račun.'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['password_strength_txt'] = 'Jačina šifre'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index 54d5e1f3bb9ae2a1deeb3943a5e11e8ea34fb7c3..7842d770b4511077bd90176f75f7cfda7c2571fe 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO redirekcija'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Koristi socket za PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI za SSL nije aktiviran na ovom serveru. Možete omogućiti samo jedan SSL certifikat na svakoj IP adresi.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/hu_aps.lng b/interface/web/sites/lib/lang/hu_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..88708732df9a8ab2346f1b791da96aca0c8cc555 100644 --- a/interface/web/sites/lib/lang/hu_aps.lng +++ b/interface/web/sites/lib/lang/hu_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Jelszó erőssége'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index 13e1c54b530a46c70314573c7767d59f0cf445ae..a40a4b62a5d7ef6604c373258475489a05302275 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/id_aps.lng b/interface/web/sites/lib/lang/id_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..b8c9af215248136d4a3f424c5c1cbadfa2f4d432 100644 --- a/interface/web/sites/lib/lang/id_aps.lng +++ b/interface/web/sites/lib/lang/id_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Kekuatan Sandi'; ?> diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 10b32ea1cc0edae509b912db3bb8155efeec51db..617e7fe769b65badc85fef78f0c79d99a1a36fc2 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/it_aps.lng b/interface/web/sites/lib/lang/it_aps.lng index ced17becd36d7a36cddfb624c23f603fbcc951a2..0a6365f98f2b1eee54e80e88d6b59223347ca661 100644 --- a/interface/web/sites/lib/lang/it_aps.lng +++ b/interface/web/sites/lib/lang/it_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'Elenco aggiornamenti APS terminato.'; $wb['btn_install_txt'] = 'Installa'; $wb['btn_cancel_txt'] = 'Annulla'; $wb['limit_aps_txt'] = 'Nmero massimo di istanza APS raggiunto per il tuo account.'; +$wb['generate_password_txt'] = 'Genera Password'; +$wb['repeat_password_txt'] = 'Ripeti Password'; +$wb['password_mismatch_txt'] = 'Le password non coincidono.'; +$wb['password_match_txt'] = 'Le password coincidono.'; +$wb['password_strength_txt'] = 'Livello sicurezza Password'; ?> diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index 831b29c5d04a9945cee5a912625f003e143ec03e..9fbca551a3178dfa5b54d78f30b0270d5f521d33 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -80,6 +80,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/ja_aps.lng b/interface/web/sites/lib/lang/ja_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..dc6b22edf7c207a0fd0e7b637b4fc427953bb84e 100644 --- a/interface/web/sites/lib/lang/ja_aps.lng +++ b/interface/web/sites/lib/lang/ja_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'パスワードの強度'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index 8cf49718602ab7380c5c57f3fb59935df758e65f..0efd971187ddb35d2df92bc14afb18025cd3bfe8 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/nl_aps.lng b/interface/web/sites/lib/lang/nl_aps.lng index 9d51f7457b39842d0b73e2eb3c11a1354bcf370c..c0adacee99da83dd125a33b1a4bf347fd2cd81be 100644 --- a/interface/web/sites/lib/lang/nl_aps.lng +++ b/interface/web/sites/lib/lang/nl_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Installeren'; $wb['btn_cancel_txt'] = 'Annuleren'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Wachtwoord sterkte'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index 1952769faf9ba2bd8bed8814030a69ef421fb586..dd007d549f12dd71f78723391d7192b01c3540f8 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/pl_aps.lng b/interface/web/sites/lib/lang/pl_aps.lng index 1a2ffad688a4b1f36d0216a7e38326a7b0b0c35f..c17bbca53217981bc1f7c29dec6d230b12ef7744 100644 --- a/interface/web/sites/lib/lang/pl_aps.lng +++ b/interface/web/sites/lib/lang/pl_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'Aktualizacja listy pakietów APS zako $wb['btn_install_txt'] = 'Instaluj'; $wb['btn_cancel_txt'] = 'Anuluj'; $wb['limit_aps_txt'] = 'Maksymalna liczba instancji APS dla Twojego konta została wyczerpana.'; +$wb['generate_password_txt'] = 'Generuj hasło'; +$wb['repeat_password_txt'] = 'Powtórz hasło'; +$wb['password_mismatch_txt'] = 'Hasła nie pasują do siebie'; +$wb['password_match_txt'] = 'Hasła pasują'; +$wb['password_strength_txt'] = 'Siła hasła'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng index f3aa864f69257a51952881dfa15d16c99558259f..8a426b0a1a512d90107376f315b61f44ff158581 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'Przekierowanie SEO'; $wb['non_www_to_www_txt'] = 'bez www -> www'; $wb['www_to_non_www_txt'] = 'www -> bez www'; $wb['php_fpm_use_socket_txt'] = 'Użyj gniazda dla PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI dla SSL nie jest aktywowane na tym serwerze. Możesz utworzyć tylko jeden certyfikat SSL dla jednego adresu IP.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/pt_aps.lng b/interface/web/sites/lib/lang/pt_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..c17ef0091483a3368e159288993791cbc02874ed 100644 --- a/interface/web/sites/lib/lang/pt_aps.lng +++ b/interface/web/sites/lib/lang/pt_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Dificuldade da senha'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index dcbdf40864dbe4ccda4fc648362f74b7db89c749..170f2feb044376d3b326067ca2cebad51e13d8d4 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/ro_aps.lng b/interface/web/sites/lib/lang/ro_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..881c146a4dd1a58e7bd50cfc34f7ea21e0073bb4 100644 --- a/interface/web/sites/lib/lang/ro_aps.lng +++ b/interface/web/sites/lib/lang/ro_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Password strength'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index d93152e24e69034a9a9ad5ebc9350ed4076c5517..046c2c71a6ee107f1bc473ae511dd27eed51d193 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -80,6 +80,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/ru.lng b/interface/web/sites/lib/lang/ru.lng index 6316c21d17d09dd8a5a36dc89a5c0368c5ae5504..dbf2926043e215f1daf8f7085ed1b775a4c9fe0e 100644 --- a/interface/web/sites/lib/lang/ru.lng +++ b/interface/web/sites/lib/lang/ru.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Доступные пакеты'; $wb['Installed packages'] = 'Установленные пакеты'; $wb['Update Packagelist'] = 'Обновить список пакетов'; $wb['Subdomain (Vhost)'] = 'Поддомен (Vhost)'; -$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качестве пути перенаправления.'; +$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качестве пути перенаправления.'; ?> diff --git a/interface/web/sites/lib/lang/ru_aps.lng b/interface/web/sites/lib/lang/ru_aps.lng index f403143e5952f9cd716c6ee66c9a03491d9900c6..d2225358c1f4c73aef5f1a4c62b69331c0b2cc27 100644 --- a/interface/web/sites/lib/lang/ru_aps.lng +++ b/interface/web/sites/lib/lang/ru_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Вы указали некорректную $wb['error_license_agreement'] = 'Для продолжения нужно принять лицензионное соглашение.'; $wb['error_no_database_pw'] = 'Вы предоставили не правильный пароль базы данных.'; $wb['error_short_database_pw'] = 'Пожалуйста, выберите более длинный пароль базы данных.'; -$wb['error_no_value_for'] = 'Поле \"%s\" не может быть пустым.'; -$wb['error_short_value_for'] = 'Поле \"%s\" требует более длинного входного значения.'; -$wb['error_long_value_for'] = 'Поле \"%s\"требует более короткого входного значения.'; -$wb['error_inv_value_for'] = 'Вы ввели неверное значение для поля \"%s\".'; -$wb['error_inv_email_for'] = 'Вы ввели некорректный адрес электронной почты для поля \"%s\".'; -$wb['error_inv_domain_for'] = 'Вы ввели некорректный домен для поля \"%s\".'; -$wb['error_inv_integer_for'] = 'Вы ввели некорректное число для поля \"%s\".'; -$wb['error_inv_float_for'] = 'Вы ввели некорректное число с плавающей точкой для поля \"%s\".'; +$wb['error_no_value_for'] = 'Поле \\"%s\\" не может быть пустым.'; +$wb['error_short_value_for'] = 'Поле \\"%s\\" требует более длинного входного значения.'; +$wb['error_long_value_for'] = 'Поле \\"%s\\"требует более короткого входного значения.'; +$wb['error_inv_value_for'] = 'Вы ввели неверное значение для поля \\"%s\\".'; +$wb['error_inv_email_for'] = 'Вы ввели некорректный адрес электронной почты для поля \\"%s\\".'; +$wb['error_inv_domain_for'] = 'Вы ввели некорректный домен для поля \\"%s\\".'; +$wb['error_inv_integer_for'] = 'Вы ввели некорректное число для поля \\"%s\\".'; +$wb['error_inv_float_for'] = 'Вы ввели некорректное число с плавающей точкой для поля \\"%s\\".'; $wb['error_used_location'] = 'Путь установки уже содержит установочный пакет.'; $wb['installation_task_txt'] = 'Запланирована установка'; $wb['installation_error_txt'] = 'Ошибка установки'; @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'Обновление списка па $wb['btn_install_txt'] = 'Установка'; $wb['btn_cancel_txt'] = 'Отменить'; $wb['limit_aps_txt'] = 'Макс. количество экземпляров APS достигнуто.'; +$wb['generate_password_txt'] = 'Создать пароль'; +$wb['repeat_password_txt'] = 'Повторить пароль'; +$wb['password_mismatch_txt'] = 'Пароли не совпадают.'; +$wb['password_match_txt'] = 'Эти пароли совпадают.'; +$wb['password_strength_txt'] = 'Стойкость пароля'; ?> diff --git a/interface/web/sites/lib/lang/ru_database.lng b/interface/web/sites/lib/lang/ru_database.lng index b931b715f27debbdf902487a9fd3e4684ae6230a..0f5eaf31807d666eff99aa8e32d71d585bcfbcc1 100644 --- a/interface/web/sites/lib/lang/ru_database.lng +++ b/interface/web/sites/lib/lang/ru_database.lng @@ -13,7 +13,7 @@ $wb['database_name_error_unique'] = 'Имя базы данных уже сущ $wb['database_name_error_regex'] = 'Неверное имя базы данных. Имя базы данных может содержать только следующие символы: a-z, A-Z, 0-9 и нижний пробел _. Длина: 2 - 64 символа.'; $wb['database_user_error_empty'] = 'Логин базы данных пустой'; $wb['database_user_error_unique'] = 'Такой пользователь базы данных уже существует. Что бы получить уникальное имя, например, сложите название сайта и ваше имя.'; -$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \"_\". Длина: 2 - 16 символов.'; +$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \\"_\\". Длина: 2 - 16 символов.'; $wb['limit_database_txt'] = 'Достигнуто максимальное количество БД.'; $wb['database_name_change_txt'] = 'Имя базы данных не может быть изменено.'; $wb['database_charset_change_txt'] = 'Кодировка базы данных не может быть изменена'; diff --git a/interface/web/sites/lib/lang/ru_database_user.lng b/interface/web/sites/lib/lang/ru_database_user.lng index df927317ca18c23dbe2fd0b7540aa981255ec1ef..7de99a11dc9f84088cd9203dd0bdaa331114ab13 100644 --- a/interface/web/sites/lib/lang/ru_database_user.lng +++ b/interface/web/sites/lib/lang/ru_database_user.lng @@ -6,7 +6,7 @@ $wb['client_txt'] = 'Клиент'; $wb['active_txt'] = 'Активно'; $wb['database_user_error_empty'] = 'Логин базы данных пустой'; $wb['database_user_error_unique'] = 'Такой пользователь базы данных уже существует. Что бы получить уникальное имя, например, сложите название сайта и ваше имя.'; -$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \"_\". Длина: 2 - 16 символов.'; +$wb['database_user_error_regex'] = 'Некорректный логин для базы данных. Логин может содержать только следующие символы: a-z, A-Z, 0-9 и \\"_\\". Длина: 2 - 16 символов.'; $wb['database_user_error_len'] = 'Логин для базы данных - {user} - cлишком длинный. Максимальная длина логина - 16 символов'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; diff --git a/interface/web/sites/lib/lang/ru_web_childdomain.lng b/interface/web/sites/lib/lang/ru_web_childdomain.lng index 49905e77ea1846b9bf0fc6348ad89f2a919193fa..af71669a474529a1078bb9504eb062bf8e6d2532 100644 --- a/interface/web/sites/lib/lang/ru_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Нет флага'; $wb['domain_error_wildcard'] = 'Wildcard поддомены не допускаются.'; $wb['proxy_directives_txt'] = 'Директивы прокси'; $wb['available_proxy_directive_snippets_txt'] = 'Доступные заготовки директив Proxy:'; -$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качестве пути перенаправления.'; +$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качестве пути перенаправления.'; $wb['backup_interval_txt'] = 'Интервал резервного копирования'; $wb['backup_copies_txt'] = 'Количество резервных копий'; $wb['ssl_key_txt'] = 'SSL-ключ'; diff --git a/interface/web/sites/lib/lang/ru_web_subdomain.lng b/interface/web/sites/lib/lang/ru_web_subdomain.lng index 46203a18155ebe083b6c0f961c2c397811875aac..376c789430848c851e7f886d68af8295a941b754 100644 --- a/interface/web/sites/lib/lang/ru_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Нет флага'; $wb['domain_error_wildcard'] = 'Wildcard-поддомены не допускаются.'; $wb['proxy_directives_txt'] = 'Директивы прокси'; $wb['available_proxy_directive_snippets_txt'] = 'Доступные заготовки директив Proxy:'; -$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качестве пути перенаправления.'; +$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качестве пути перенаправления.'; $wb['http_port_txt'] = 'Порт HTTP'; $wb['https_port_txt'] = 'Порт HTTPS'; $wb['http_port_error_regex'] = 'Некорректный порт HTTP.'; diff --git a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng index f525fe2025aa23749ca468d76d387c5c665365fc..e87af3b65474f0faeba733f976c701da373756f1 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO редирект'; $wb['non_www_to_www_txt'] = 'Без-www -> www'; $wb['www_to_non_www_txt'] = 'www -> без-www'; $wb['php_fpm_use_socket_txt'] = 'Использовать сокет для PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI для SSL не активирован на этом сервере. Вы можете включить только один SSL сертификат на каждом IP-адресе.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Включить PageSpeed'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/se_aps.lng b/interface/web/sites/lib/lang/se_aps.lng index 1a21cd0fd26fab7820b314756c32acabd8075161..3b32095d623f4fb0cde80a1ddc437ae11bda5e7b 100644 --- a/interface/web/sites/lib/lang/se_aps.lng +++ b/interface/web/sites/lib/lang/se_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Installera'; $wb['btn_cancel_txt'] = 'Avbryt'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Password strength'; ?> diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng index d8b671daea9e7e86598d5bc8fdde97536389ec73..1a2572b950cde238795bb2e3d7c6fe9e31e281ff 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -80,6 +80,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/sk_aps.lng b/interface/web/sites/lib/lang/sk_aps.lng index 29fb7b6a40de911e18acadb73479b1da703cbfe9..d6e6c7f4ca735a6ca76ee12d970ffaebbb16f8ab 100644 --- a/interface/web/sites/lib/lang/sk_aps.lng +++ b/interface/web/sites/lib/lang/sk_aps.lng @@ -55,4 +55,9 @@ $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; +$wb['generate_password_txt'] = 'Generate Password'; +$wb['repeat_password_txt'] = 'Repeat Password'; +$wb['password_mismatch_txt'] = 'The passwords do not match.'; +$wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_strength_txt'] = 'Pevnosť hesla'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index cdb1c2627fd413fb69b051b5628c7b44a6ed0f56..17e60da6e6692092e617c97f74216029acd7ec24 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -79,6 +79,7 @@ $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; $wb['python_txt'] = 'Python'; $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; @@ -151,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/tr.lng b/interface/web/sites/lib/lang/tr.lng index d0570f6c12f2935829ef35f55392585be179315a..b5e7f42e2e4a4a9784178482b28576dbbca7d6ce 100644 --- a/interface/web/sites/lib/lang/tr.lng +++ b/interface/web/sites/lib/lang/tr.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/sites/lib/lang/tr_aps.lng b/interface/web/sites/lib/lang/tr_aps.lng index 534ee020a7642a63eea394f36c60c4dd63783f0d..c876629a741166798408c2ae7d750f728c960d93 100644 --- a/interface/web/sites/lib/lang/tr_aps.lng +++ b/interface/web/sites/lib/lang/tr_aps.lng @@ -34,20 +34,20 @@ $wb['install_language_txt'] = 'Arayüz dili'; $wb['new_database_password_txt'] = 'Yeni veritabanı parolası'; $wb['basic_settings_txt'] = 'Temel ayarlar'; $wb['package_settings_txt'] = 'Paket ayarları'; -$wb['error_main_domain'] = 'Yükleme yolundaki alan adı geçersiz.'; +$wb['error_main_domain'] = 'Yükleme yolundaki etki alanı geçersiz.'; $wb['error_no_main_location'] = 'Yazdığınız yükleme yolu geçersiz.'; $wb['error_inv_main_location'] = 'Yazdığınız yükleme konumunu klasörü geçersiz.'; $wb['error_license_agreement'] = 'Devam etmek için lisans anlaşmasını onaylamalısınız.'; $wb['error_no_database_pw'] = 'Yazdığınız veritabanı parolası geçersiz.'; $wb['error_short_database_pw'] = 'Lütfen daha uzun bir veritabanı parolası yazın.'; -$wb['error_no_value_for'] = '\\"%s\\" alanı boş olamaz.'; -$wb['error_short_value_for'] = '\\"%s\\" alanına daha uzun bir değer yazılmalıdır.'; -$wb['error_long_value_for'] = '\\"%s\\" alanına daha kısa bir değer yazılmalıdır.'; -$wb['error_inv_value_for'] = '\\"%s\\" alanına yazılan değer geçersiz.'; -$wb['error_inv_email_for'] = '\\"%s\\" alanına yazılan e-posta adresi geçersiz.'; -$wb['error_inv_domain_for'] = '\\"%s\\" alanına yazılan alan adı geçersiz.'; -$wb['error_inv_integer_for'] = '\\"%s\\" alanına yazılan sayı geçersiz.'; -$wb['error_inv_float_for'] = '\\"%s\\" alanına yazılan küsuratlı sayı geçersiz.'; +$wb['error_no_value_for'] = '"%s" alanı boş olamaz.'; +$wb['error_short_value_for'] = '"%s" alanına daha uzun bir değer yazılmalıdır.'; +$wb['error_long_value_for'] = '"%s" alanına daha kısa bir değer yazılmalıdır.'; +$wb['error_inv_value_for'] = '"%s" alanına yazılan değer geçersiz.'; +$wb['error_inv_email_for'] = '"%s" alanına yazılan e-posta adresi geçersiz.'; +$wb['error_inv_domain_for'] = '"%s" alanına yazılan etki alanı geçersiz.'; +$wb['error_inv_integer_for'] = '"%s" alanına yazılan sayı geçersiz.'; +$wb['error_inv_float_for'] = '"%s" alanına yazılan küsuratlı sayı geçersiz.'; $wb['error_used_location'] = 'Yükleme yoluna daha önce yüklenmiş bir paket var.'; $wb['installation_task_txt'] = 'Yükleme planlandı'; $wb['installation_error_txt'] = 'Yükleme hatası'; diff --git a/interface/web/sites/lib/lang/tr_aps_instances_list.lng b/interface/web/sites/lib/lang/tr_aps_instances_list.lng index e8b3532ff41da3f91a76d3f7744a62c828946766..292c627f850c81e7c655ccf674cb58b2a81c7f38 100644 --- a/interface/web/sites/lib/lang/tr_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/tr_aps_instances_list.lng @@ -4,8 +4,8 @@ $wb['name_txt'] = 'Ad'; $wb['version_txt'] = 'Sürüm'; $wb['customer_txt'] = 'Müşteri'; $wb['status_txt'] = 'Durum'; -$wb['install_location_txt'] = 'Yükleme Konumu'; -$wb['pkg_delete_confirmation'] = 'Bu yüklemeyi silmek istediğinize emin misiniz?'; +$wb['install_location_txt'] = 'Kurulum Konumu'; +$wb['pkg_delete_confirmation'] = 'Bu kurulumu silmek istediğinize emin misiniz?'; $wb['filter_txt'] = 'Arama'; $wb['delete_txt'] = 'Sil'; ?> diff --git a/interface/web/sites/lib/lang/tr_backup_stats_list.lng b/interface/web/sites/lib/lang/tr_backup_stats_list.lng index 65792aa591054d676f942164b40a0c7c3696825c..f59fcae70ac9c49bb18bbbd9609e0588906f2334 100644 --- a/interface/web/sites/lib/lang/tr_backup_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_backup_stats_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/sites/lib/lang/tr_cron.lng b/interface/web/sites/lib/lang/tr_cron.lng index f645d7632535c219273e1ca7bf350ab5ba1419af..d00e6868c7f0b0171a95094a79d1812db299d142 100644 --- a/interface/web/sites/lib/lang/tr_cron.lng +++ b/interface/web/sites/lib/lang/tr_cron.lng @@ -17,10 +17,10 @@ $wb['run_mday_error_format'] = 'Ayın günü biçimi geçersiz.'; $wb['run_month_error_format'] = 'Ay biçimi geçersiz.'; $wb['run_wday_error_format'] = 'Haftanın günü biçimi geçersiz.'; $wb['command_error_format'] = 'Komut biçimi geçersiz. İnternet adreslerinde yalnız http/https kullanılabilir.'; -$wb['unknown_fieldtype_error'] = 'Bilinmeyen bir alan tipi kullanılmış.'; +$wb['unknown_fieldtype_error'] = 'Bilinmeyen bir alan türü kullanılmış.'; $wb['server_id_error_empty'] = 'Sunucu kodu boş olamaz.'; +$wb['command_hint_txt'] = 'Örnek: /var/www/clients/musteriX/webY/betigim.sh ya da http://www.etkialanim.com/yol/betik.php, /var/www/clients/musteriX/webY/web yerine [web_root] kodunu kullanabilirsiniz.'; +$wb['log_output_txt'] = 'Günlük çıktısı'; $wb['limit_cron_url_txt'] = 'Yalnız İnternet adresli zamanlanmış görev kullanılabilir. Lütfen zamanlanmış görev komutu olarak http:// ile başlayan bir İnternet adresi yazın.'; $wb['command_error_empty'] = 'Komut boş olamaz.'; -$wb['command_hint_txt'] = 'e.g. /var/www/clients/clientX/webY/myscript.sh or http://www.mydomain.com/path/script.php, you can use [web_root] placeholder that is replaced by /var/www/clients/clientX/webY/web.'; -$wb['log_output_txt'] = 'Log output'; ?> diff --git a/interface/web/sites/lib/lang/tr_database.lng b/interface/web/sites/lib/lang/tr_database.lng index d5d8c7d856665bfba773b7679267b051cf319b9a..f443bbb620a22a8298212b9abff6cd6e4c752899 100644 --- a/interface/web/sites/lib/lang/tr_database.lng +++ b/interface/web/sites/lib/lang/tr_database.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/sites/lib/lang/tr_database_admin_list.lng b/interface/web/sites/lib/lang/tr_database_admin_list.lng index fc92e1957eb36bd82f6e8d93baf8ae2f810a20a8..e13404415ce4fcdb47909b08143d465617639e6c 100644 --- a/interface/web/sites/lib/lang/tr_database_admin_list.lng +++ b/interface/web/sites/lib/lang/tr_database_admin_list.lng @@ -2,11 +2,11 @@ $wb['list_head_txt'] = 'Veritabanı'; $wb['active_txt'] = 'Etkin'; $wb['remote_access_txt'] = 'Uzaktan Erişim'; +$wb['type_txt'] = 'Tür'; $wb['server_id_txt'] = 'Sunucu'; -$wb['database_user_txt'] = 'Veritabanı kullanıcısı'; -$wb['database_name_txt'] = 'Veritabanı adı'; -$wb['add_new_record_txt'] = 'Veritabanı ekle'; +$wb['database_user_txt'] = 'Veritabanı Kullanıcı Adı'; +$wb['database_name_txt'] = 'Veritabanı Adı'; +$wb['add_new_record_txt'] = 'Veritabanı Ekle'; $wb['sys_groupid_txt'] = 'Müşteri'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['type_txt'] = 'Type'; ?> diff --git a/interface/web/sites/lib/lang/tr_database_list.lng b/interface/web/sites/lib/lang/tr_database_list.lng index 43ea5f9b6fe57c01a723df9411c481ce2e321e48..591a72af11e1bdcb6678639383f05791ab7b6455 100644 --- a/interface/web/sites/lib/lang/tr_database_list.lng +++ b/interface/web/sites/lib/lang/tr_database_list.lng @@ -2,10 +2,10 @@ $wb['list_head_txt'] = 'Veritabanı'; $wb['active_txt'] = 'Etkin'; $wb['remote_access_txt'] = 'Uzaktan Erişim'; +$wb['type_txt'] = 'Tür'; $wb['server_id_txt'] = 'Sunucu'; $wb['database_user_txt'] = 'Veritabanı Kullanıcısı'; $wb['database_name_txt'] = 'Veritabanı Adı'; $wb['add_new_record_txt'] = 'Veritabanı Ekle'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['type_txt'] = 'Type'; ?> diff --git a/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng b/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng index 50f2dcc496d1140a77dce8a25c7ee0a38fe1e277..a65174977b876ff1e474c2d4abc7968a447e603c 100644 --- a/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/sites/lib/lang/tr_database_user.lng b/interface/web/sites/lib/lang/tr_database_user.lng index 785c4ecce4d125f061be335383e162935149b07e..3f6ba89f49b8150cc24341cf9e479aaa4285f813 100644 --- a/interface/web/sites/lib/lang/tr_database_user.lng +++ b/interface/web/sites/lib/lang/tr_database_user.lng @@ -1,25 +1,25 @@ diff --git a/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng index e44025a715dbf435bdca9faee0b109ba25bf611d..6d2da369d2cc8b3101affc00ef533e570abe4dbb 100644 --- a/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/sites/lib/lang/tr_ftp_user.lng b/interface/web/sites/lib/lang/tr_ftp_user.lng index 665d2ec477479644c9ae00ff3520f908547ec0c6..155573595ef6c1a8a12ca2e07e5188f345ca3974 100644 --- a/interface/web/sites/lib/lang/tr_ftp_user.lng +++ b/interface/web/sites/lib/lang/tr_ftp_user.lng @@ -12,7 +12,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola Zorluğu'; $wb['quota_size_txt'] = 'Disk Kotası'; $wb['active_txt'] = 'Etkin'; $wb['limit_ftp_user_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla FTP kullanıcısı sayısına ulaştınız.'; @@ -21,15 +21,16 @@ $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.'; $wb['username_error_regex'] = 'Kullanıcı adında izin verilmeyen karakterler var.'; $wb['quota_size_error_empty'] = 'Kota boş olamaz.'; $wb['uid_error_empty'] = 'UID boş olamaz.'; +$wb['gid_error_empty'] = 'GID boş olamaz.'; $wb['directory_error_empty'] = 'Klasör boş olamaz.'; $wb['directory_error_notinweb'] = 'Klasör web kök klasörünün altında bulunmalıdır.'; $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.'; $wb['quota_size_error_regex'] = 'Kota: Sınırsız olması için -1 sınırlamak için sıfırdan büyük bir rakam yazın'; $wb['dir_dot_error'] = 'Yol içinde .. kullanılamaz.'; $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['expires_txt'] = 'Expire at'; +$wb['expires_txt'] = 'Sona Erme Zamanı'; ?> diff --git a/interface/web/sites/lib/lang/tr_shell_user.lng b/interface/web/sites/lib/lang/tr_shell_user.lng index 5610d599397d31e261336f34c2058ca98abf58cf..e2aa844843963a9d286c9f2c35ed0627d5155a45 100644 --- a/interface/web/sites/lib/lang/tr_shell_user.lng +++ b/interface/web/sites/lib/lang/tr_shell_user.lng @@ -7,7 +7,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola Zorluğu'; $wb['chroot_txt'] = 'Chroot Kabuğu'; $wb['quota_size_txt'] = 'Kota'; $wb['active_txt'] = 'Etkin'; @@ -22,7 +22,7 @@ $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.'; $wb['ssh_rsa_txt'] = 'SSH-RSA Genel Anahtarı (anahtar ile oturum açmak için)'; $wb['dir_dot_error'] = 'Yol içinde .. . kullanılamaz.'; $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/sites/lib/lang/tr_shell_user_list.lng b/interface/web/sites/lib/lang/tr_shell_user_list.lng index b88c7fa7486dc84acd8968de784b4ec61392d3af..5c375a232a51d25f0157b1aad5d5291d88b66d1d 100644 --- a/interface/web/sites/lib/lang/tr_shell_user_list.lng +++ b/interface/web/sites/lib/lang/tr_shell_user_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng b/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng index 82103410fe6d707e2cf0a8f6efbe7d371dbceba5..be7712fd46fc00b0e0df56f01088027242835b80 100644 --- a/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng @@ -1,6 +1,6 @@ = 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; -$wb['Domain'] = 'Başka alan adı'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; +$wb['Domain'] = 'Takma Etki Alanı'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng index b7acfd099a83870e494ff2cf5d7043b76053e19c..e4dcaacbe779d2550fd8bb1418fb89c68e7772fb 100644 --- a/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng @@ -1,14 +1,14 @@ diff --git a/interface/web/sites/lib/lang/tr_web_backup_list.lng b/interface/web/sites/lib/lang/tr_web_backup_list.lng index c9bc16ae78023d7fcb0c0f58e654831ae93d8d18..31aea494ca227e1341cdddbac02d80c6101bb04b 100644 --- a/interface/web/sites/lib/lang/tr_web_backup_list.lng +++ b/interface/web/sites/lib/lang/tr_web_backup_list.lng @@ -1,8 +1,9 @@ diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng index e11c6a92b584c6f93cf2be6219bb60e9b5fe612b..235e870117f6223af6c7e4a299f19a8d44326a16 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng @@ -1,26 +1,26 @@ = 0.'; -$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!'; -$wb['generate_password_txt'] = 'Generate Password'; -$wb['repeat_password_txt'] = 'Repeat Password'; -$wb['password_mismatch_txt'] = 'The passwords do not match.'; -$wb['password_match_txt'] = 'The passwords do match.'; -$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:'; -$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:'; -$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:'; -$wb['Domain'] = 'Aliasdomain'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; -$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri pozitif bir tamsayı olmalıdır >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Ondemand işlem yönetimini kullanabilmek için PHP sürümünüz >= 5.3.9 olmalıdır. Daha eski bir PHP sürümü için ondemand seçilirse PHP çalışmaya başlayamaz!'; +$wb['generate_password_txt'] = 'Parola Üret'; +$wb['repeat_password_txt'] = 'Parola Onayı'; +$wb['password_mismatch_txt'] = 'Parola ve onayı aynı değil'; +$wb['password_match_txt'] = 'Parola ve onayı aynı değil.'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; +$wb['Domain'] = 'Takma Etki Alanı Adı'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Let\'s Encrypt sertifikası eklenmesin'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng index 26b3acc9e97ddc09fe9ce94ad7cefd606eab3a7f..33127c84cf57ffaec761c1db04954001e5db83e6 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng @@ -1,18 +1,18 @@ diff --git a/interface/web/sites/lib/lang/tr_web_directive_snippets.lng b/interface/web/sites/lib/lang/tr_web_directive_snippets.lng index d2590e53cfbefea98a29cdd8fff773eb46050fe8..a4380942e6da91af219043673d8d84740e17dbe3 100644 --- a/interface/web/sites/lib/lang/tr_web_directive_snippets.lng +++ b/interface/web/sites/lib/lang/tr_web_directive_snippets.lng @@ -1,3 +1,3 @@ diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index c97ce73778810e403fdbdc1e1e1d0f8d570eb1a9..65db621f5692d5379411ed5a5fbc9fa50b868ceb 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -3,7 +3,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'İl'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'Kuruluş'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ülke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -11,13 +11,13 @@ $wb['ssl_request_txt'] = 'SSL İsteği'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL İşlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen / karakterini yazmayın.'; -$wb['type_txt'] = 'Tip'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen bölü karakterini yazmayın.'; +$wb['type_txt'] = 'Tür'; $wb['parent_domain_id_txt'] = 'Üst Web Sitesi'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -25,62 +25,62 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boş olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.'; +$wb['domain_error_empty'] = 'Etki alanı boş olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL şehri boş olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boş olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boş olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluşu boş olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boş olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz'; $wb['client_group_id_txt'] = 'Müşteri'; -$wb['stats_password_txt'] = 'Web istatistikleri parolası'; +$wb['stats_password_txt'] = 'Web İstatistikleri Parolası'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası'; -$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; -$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; +$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'İşaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -102,15 +102,15 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; $wb['no_server_error'] = 'Bir sunucu seçmelisiniz.'; $wb['no_backup_txt'] = 'Yedek alınmasın'; $wb['daily_backup_txt'] = 'Günlük'; @@ -122,16 +122,16 @@ $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:'; $wb['configuration_error_txt'] = 'AYAR HATASI'; $wb['variables_txt'] = 'Değişkenler'; $wb['added_by_txt'] = 'Ekleyen'; -$wb['added_date_txt'] = 'Eklendiği tarih'; +$wb['added_date_txt'] = 'Eklenme Tarihi'; $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; $wb['invalid_custom_php_ini_settings_txt'] = 'php.ini ayarları geçersiz'; $wb['invalid_system_user_or_group_txt'] = 'Sistem kullanıcısı ya da grubu geçersiz'; $wb['apache_directive_blocked_error'] = 'Apache yönergesi güvenlik ayarları tarafından engellenmiş:'; -$wb['http_port_txt'] = 'HTTP Port'; -$wb['https_port_txt'] = 'HTTPS Port'; -$wb['http_port_error_regex'] = 'HTTP Port invalid.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; -$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; +$wb['nginx_directive_blocked_error'] = 'nginx yönergesi güvenlik ayarları tarafından engellendi:'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng b/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng index f86967d0d408fd9ebc32f94e9155327e1d604769..487c6a087c36641ad1f56558bd21c97fa08aa53f 100644 --- a/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng @@ -4,6 +4,6 @@ $wb['list_head_txt'] = 'Web Siteleri'; $wb['domain_id_txt'] = 'Kod'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Web Sitesi Ekle'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain_list.lng b/interface/web/sites/lib/lang/tr_web_domain_list.lng index a2320b5dcdc6f9829c1ae895b76df8509e271685..fbfa57347041e3e0f04f60ff81696cae6412cd91 100644 --- a/interface/web/sites/lib/lang/tr_web_domain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_domain_list.lng @@ -3,6 +3,6 @@ $wb['list_head_txt'] = 'Web Siteleri'; $wb['domain_id_txt'] = 'Kod'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Web Sitesi Ekle'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_folder_user.lng b/interface/web/sites/lib/lang/tr_web_folder_user.lng index a0479ee0d1e2ca7157ebe36c92144e25cf1a3217..afbe01cab1725117955b7a5906fb883a0c09713d 100644 --- a/interface/web/sites/lib/lang/tr_web_folder_user.lng +++ b/interface/web/sites/lib/lang/tr_web_folder_user.lng @@ -4,8 +4,8 @@ $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; $wb['active_txt'] = 'Etkin'; $wb['folder_error_empty'] = 'Bir web klasörü seçilmemiş.'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['password_strength_txt'] = 'Parola Zorluğu'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng b/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng index 4fbdef871dea3644edb88d3ab8fcefc48e0f9b1c..685fc22fc69af8a5fb4d2565ebf622dd5ec88d0c 100644 --- a/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/sites/lib/lang/tr_web_subdomain_list.lng b/interface/web/sites/lib/lang/tr_web_subdomain_list.lng index 8155af64b3df8679fd6a4d25179ff377431fadac..6527242e2d442bb57f4e34fc01b9e36e605101d1 100644 --- a/interface/web/sites/lib/lang/tr_web_subdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_subdomain_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 52b86ba657b32c6f923191a3b02feed1ca46396d..4cfe808bfb9a5d358d439505b6c22844d99decc7 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -3,7 +3,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'İl'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'Kuruluş'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ülke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -11,13 +11,13 @@ $wb['ssl_request_txt'] = 'SSL İsteği'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL İşlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen / karakterini yazmayın.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['parent_domain_id_txt'] = 'Üst Web Sitesi'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -25,62 +25,63 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boş olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.'; +$wb['domain_error_empty'] = 'Etki alanı boş olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.'; +$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL şehri boş olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boş olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boş olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluşu boş olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boş olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz'; $wb['client_group_id_txt'] = 'Müşteri'; -$wb['stats_password_txt'] = 'Web istatistikleri parolası'; +$wb['stats_password_txt'] = 'Web İstatistikleri Parolası'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası'; -$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'İşaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -102,15 +103,15 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; $wb['no_server_error'] = 'Bir sunucu seçmelisiniz.'; $wb['no_backup_txt'] = 'Yedek alınmasın'; $wb['daily_backup_txt'] = 'Günlük'; @@ -120,35 +121,39 @@ $wb['rewrite_rules_txt'] = 'Yeniden Yazma Kuralları'; $wb['invalid_rewrite_rules_txt'] = 'Yeniden Yazma Kuralları Geçersiz'; $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:'; $wb['configuration_error_txt'] = 'AYAR HATASI'; +$wb['server_chosen_not_ok'] = 'Seçilmiş sunucuda bu hesap kullanılamıyor.'; $wb['variables_txt'] = 'Değişkenler'; $wb['added_by_txt'] = 'Ekleyen'; -$wb['added_date_txt'] = 'Eklendiği tarih'; +$wb['added_date_txt'] = 'Eklenme Tarihi'; $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; -$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.'; -$wb['web_folder_txt'] = 'Web folder'; -$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.'; -$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.'; -$wb['host_txt'] = 'Hostname'; -$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; -$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; -$wb['load_client_data_txt'] = 'Load client details'; -$wb['load_my_data_txt'] = 'Load my contact details'; -$wb['reset_client_data_txt'] = 'Reset data'; -$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt SSL'; -$wb['rewrite_to_https_txt'] = 'Rewrite HTTP to HTTPS'; -$wb['password_strength_txt'] = 'Password strength'; -$wb['directive_snippets_id_txt'] = 'Web server config'; -$wb['http_port_txt'] = 'HTTP Port'; -$wb['https_port_txt'] = 'HTTPS Port'; -$wb['http_port_error_regex'] = 'HTTP Port invalid.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; -$wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; -$wb['log_retention_txt'] = 'Logfiles retention time'; -$wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['web_folder_txt'] = 'Web klasörü'; +$wb['web_folder_invalid_txt'] = 'Web klasörü geçersiz, lütfen başka bir klasör seçin.'; +$wb['web_folder_unique_txt'] = 'Web klasörü zaten kullanılıyor, lütfen başka bir klasör seçin.'; +$wb['host_txt'] = 'Sunucu adı'; +$wb['domain_error_wildcard'] = 'Genel alt etki alanları kullanılamaz.'; +$wb['variables_txt'] = 'Değişkenler'; +$wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; +$wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; +$wb['subdomain_error_empty'] = 'Alt etki alanı boş ya da geçersiz karakterler içeriyor.'; +$wb['btn_save_txt'] = 'Kaydet'; +$wb['btn_cancel_txt'] = 'İptal'; +$wb['enable_spdy_txt'] = 'SPDY kullanılsın'; +$wb['load_client_data_txt'] = 'Müşteri Bilgilerini Yükle'; +$wb['load_my_data_txt'] = 'Profil Bilgilerimi Yükle'; +$wb['reset_client_data_txt'] = 'Verileri Sıfırla'; +$wb['document_root_txt'] = 'Belge Kök Klasörü'; +$wb['ssl_letsencrypt_txt'] = 'Let'; +$wb['rewrite_to_https_txt'] = 'HTTP, HTTPS Yönlendirme'; +$wb['password_strength_txt'] = 'Parola Zorluğu'; +$wb['directive_snippets_id_txt'] = 'Web Sunucu Yapılandırması'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; +$wb['enable_pagespeed_txt'] = 'PageSpeed Kullanılsın'; +$wb['log_retention_txt'] = 'Günlük Dosyalarının Silinme Sıklığı'; +$wb['log_retention_error_regex'] = 'Gün cinsinden günlük dosyalarının silinme sıklığı (En küçük: 0 - En büyük: 9999)'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng index 4f07fd858847320507e6139e777fbce2abb646c2..423e9562347a7609d2057f0d64bd83459d0a576a 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng @@ -1,14 +1,14 @@ diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng index b7df7ed9d049b1c6afd48ab009bb4eefd92ecc60..061afec494e79a8ab3600fea7359464ebe4217c9 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng @@ -3,12 +3,12 @@ $wb['list_head_txt'] = 'Web Siteleri'; $wb['domain_id_txt'] = 'Kod'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['parent_domain_id_txt'] = 'Website'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Web Sitesi Ekle'; -$wb['add_new_subdomain_txt'] = 'Add new subdomain'; -$wb['add_new_aliasdomain_txt'] = 'Add new aliasdomain'; -$wb['domain_list_head_txt'] = 'Websites'; -$wb['aliasdomain_list_head_txt'] = 'Aliasdomains (Vhost)'; -$wb['subdomain_list_head_txt'] = 'Subdomains (Vhost)'; +$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle'; +$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle'; +$wb['parent_domain_id_txt'] = 'Web Sitesi'; +$wb['domain_list_head_txt'] = 'Web Siteleri'; +$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları (Sanal Sunucu)'; +$wb['subdomain_list_head_txt'] = 'Alt Etki Alanı Adları (Sanal Sunucu)'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng index 2bbcfb661cb1b7775db05ff0a77ca06779036583..a24883881f1667c12e8f46483322ebc714d4e999 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng @@ -7,7 +7,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'İl'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'Kuruluş'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ülke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -15,13 +15,14 @@ $wb['ssl_request_txt'] = 'SSL İsteği'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL İşlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['host_txt'] = 'Sunucu Adı'; $wb['web_folder_error_regex'] = 'Yazılan klasör geçersiz. Lütfen / karakteri kullanmadan yazın.'; -$wb['type_txt'] = 'Tip'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['type_txt'] = 'Tür'; +$wb['parent_domain_id_txt'] = 'Üst Web Sitesi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -29,30 +30,30 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alan adı sayısına ulaştınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla başka alan adı sayısına ulaştınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt alan adı sayısına ulaştınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla etki alanı sayısına ulaştınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla takma etki alanı sayısına ulaştınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla alt etki alanı sayısına ulaştınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boş olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/başka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt alan adları kullanılamaz.'; +$wb['domain_error_empty'] = 'Etki alanı boş olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt etki alanları kullanılamaz.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boş olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boş olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL şehri boş olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boş olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boş olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boş olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluşu boş olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boş olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boş olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boş olamaz'; @@ -60,31 +61,31 @@ $wb['client_group_id_txt'] = 'Müşteri'; $wb['stats_password_txt'] = 'Web istatistikleri parolasını ayarla'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası'; -$wb['ssl_state_error_regex'] = 'SSL şehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluşu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluşu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web İstatistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web İstatistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'İşaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleştirilmemiş. Bir IP adresi için yalnız bir SSL sertifikası etkinleştirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -106,26 +107,26 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout değeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests değeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'İsteğe bağlı işlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliğini seçerseniz, PHP başlatılamaz!'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; $wb['rewrite_rules_txt'] = 'Yeniden Yazma Kuralları'; $wb['invalid_rewrite_rules_txt'] = 'Yeniden Yazma Kuralları Geçersiz'; $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:'; -$wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['configuration_error_txt'] = 'YAPILANDIRMA HATASI'; $wb['variables_txt'] = 'Değişkenler'; $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; -$wb['subdomain_error_empty'] = 'Alt alan adı boş ya da geçersiz karakterler içeriyor.'; -$wb['http_port_txt'] = 'HTTP Port'; -$wb['https_port_txt'] = 'HTTPS Port'; -$wb['http_port_error_regex'] = 'HTTP Port invalid.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; +$wb['subdomain_error_empty'] = 'Alt etki alanı boş ya da geçersiz karakterler içeriyor.'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng index bc7e7622c232eb8f4b41f0463193b4bc1850a918..6527242e2d442bb57f4e34fc01b9e36e605101d1 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/sites/lib/lang/tr_webdav_user.lng b/interface/web/sites/lib/lang/tr_webdav_user.lng index e592f052c4399691838bbca49c1df986a420b298..c80088da954913a86d66d3851dd0ce5cf5edfd98 100644 --- a/interface/web/sites/lib/lang/tr_webdav_user.lng +++ b/interface/web/sites/lib/lang/tr_webdav_user.lng @@ -4,7 +4,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola Zorluğu'; $wb['active_txt'] = 'Etkin'; $wb['limit_webdav_user_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla webdav kullanıcısı sayısına ulaştınız.'; $wb['username_error_empty'] = 'Kullanıcı adı boş olamaz.'; @@ -14,7 +14,7 @@ $wb['directory_error_empty'] = 'Klasör boş olamaz.'; $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.'; $wb['dir_dot_error'] = 'Yol içinde .. kullanılamaz.'; $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.'; -$wb['generate_password_txt'] = 'Parola Oluştur'; +$wb['generate_password_txt'] = 'Parola Üret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/sites/lib/remote.conf.php b/interface/web/sites/lib/remote.conf.php index a9ef3236b708a6da3abafd7290a78c4a75cf00ec..19a48e3ca5ddb9df5029e8fd3dd45cf7649d0c57 100644 --- a/interface/web/sites/lib/remote.conf.php +++ b/interface/web/sites/lib/remote.conf.php @@ -9,4 +9,5 @@ $function_list['sites_web_domain_backup'] = 'Sites Backup functions'; $function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions'; $function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions'; $function_list['sites_aps_update_package_list,sites_aps_available_packages_list,sites_aps_change_package_status,sites_aps_install_package,sites_aps_get_package_details,sites_aps_get_package_file,sites_aps_get_package_settings,sites_aps_instance_get,sites_aps_instance_delete'] = 'Sites APS functions'; +$function_list['sites_webdav_user_get,sites_webdav_user_add,sites_webdav_user_update,sites_webdav_user_delete'] = 'Sites WebDAV-User functions'; ?> diff --git a/interface/web/sites/list/aps_installedpackages.list.php b/interface/web/sites/list/aps_installedpackages.list.php index d9a51d8befbd98ea1699cc188134ed368e5a1262..1f855082d5ef25778a793d1f2c58d7c15fd00521 100644 --- a/interface/web/sites/list/aps_installedpackages.list.php +++ b/interface/web/sites/list/aps_installedpackages.list.php @@ -28,6 +28,12 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +// Load the APS language file +$lngfile = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_aps.lng'; +require_once $lngfile; +$app->tpl->setVar($wb); +$app->load_language_file('web/sites/'.$lngfile); + $liste['name'] = 'aps_instances'; // Name of the list $liste['table'] = 'aps_instances'; // Database table $liste['table_idx'] = 'id'; // Table index @@ -85,9 +91,9 @@ $liste["item"][] = array('field' => 'instance_status', 'prefix' => '', 'suffix' => '', 'width' => '', - 'value' => array(INSTANCE_INSTALL => $app->lng('Installation_task'), - INSTANCE_ERROR => $app->lng('Installation_error'), - INSTANCE_SUCCESS => $app->lng('Installation_success'), - INSTANCE_REMOVE => $app->lng('Installation_remove')), + 'value' => array(INSTANCE_INSTALL => $app->lng('installation_task_txt'), + INSTANCE_ERROR => $app->lng('installation_error_txt'), + INSTANCE_SUCCESS => $app->lng('installation_success_txt'), + INSTANCE_REMOVE => $app->lng('installation_remove_txt')), 'table' => 'aps_instances'); ?> diff --git a/interface/web/sites/templates/aps_install_package.htm b/interface/web/sites/templates/aps_install_package.htm index d04d671534b4f2f3f6964544c25710be1208df93..255a8685d5a76467c202521c7040a145b43db955 100644 --- a/interface/web/sites/templates/aps_install_package.htm +++ b/interface/web/sites/templates/aps_install_package.htm @@ -1,58 +1,125 @@

- {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'} - - - {tmpl_var name='pkg_name'} - - + {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'} + + + {tmpl_var name='pkg_name'} + +

- + -

ERROR

    {tmpl_var name='error'}
+

ERROR

    {tmpl_var name='error'}
- - {tmpl_var name='basic_settings_txt'} -
- -
-
+ + {tmpl_var name='basic_settings_txt'} +
+ +
+
http(s)://
DOMAIN_LIST_SPACE
/ -
+
-
+
-
- -
-
- - PKG_SETTINGS_SPACE - - {tmpl_var name='license_txt'} -
- - {tmpl_var name='pkg_license_name'}
- - {tmpl_var name='pkg_license_content'} - -
-
-
-
- -
checked/>   {tmpl_var name='acceptance_text'} -
- - - -
- - -
+
+ +
+
+ + + PKG_SETTINGS_SPACE + + {tmpl_var name='license_txt'} +
+ + {tmpl_var name='pkg_license_name'}
+ + {tmpl_var name='pkg_license_content'} + +
+
+
+
+ +
+ checked/>   {tmpl_var name='acceptance_text'} +
+
+ + + +
+
+ + +
+
+ + + + diff --git a/interface/web/sites/templates/aps_instances_list.htm b/interface/web/sites/templates/aps_instances_list.htm index cfde591b195398190f7afa2f43023847da3b1d0e..ae3d095e7b1d8ab4f6d1064ed9bd387b1201ec2e 100644 --- a/interface/web/sites/templates/aps_instances_list.htm +++ b/interface/web/sites/templates/aps_instances_list.htm @@ -40,7 +40,7 @@ {tmpl_var name='instance_status'} - + diff --git a/interface/web/sites/templates/aps_packages_list.htm b/interface/web/sites/templates/aps_packages_list.htm index d3f3f8c3bb10ff4fbbfb70e06b79ed472b07851f..fa3582ed7435709debb13b750e4a1007676cfc6b 100644 --- a/interface/web/sites/templates/aps_packages_list.htm +++ b/interface/web/sites/templates/aps_packages_list.htm @@ -6,7 +6,7 @@ - + @@ -15,7 +15,7 @@ - + @@ -27,11 +27,11 @@ - + - + diff --git a/interface/web/sites/templates/cron_list.htm b/interface/web/sites/templates/cron_list.htm index b38a6224a5f8bc999194b5e27698200ab7bb0ba7..fbca26a84418c983c48e52b76ec4baea6c1863bb 100644 --- a/interface/web/sites/templates/cron_list.htm +++ b/interface/web/sites/templates/cron_list.htm @@ -56,7 +56,7 @@ diff --git a/interface/web/sites/templates/database_admin_list.htm b/interface/web/sites/templates/database_admin_list.htm index aad56db3373a28e5bc7c65966b1f7860e8acc395..724027ca910193620e7cb03aa49b565780eb15f9 100644 --- a/interface/web/sites/templates/database_admin_list.htm +++ b/interface/web/sites/templates/database_admin_list.htm @@ -61,7 +61,7 @@ - + diff --git a/interface/web/sites/templates/database_list.htm b/interface/web/sites/templates/database_list.htm index 0d0aaca92304e1dfb1388fe372fda682214120d5..208741ff5a1d6dd298a8d77ee8d78828ab70cf56 100644 --- a/interface/web/sites/templates/database_list.htm +++ b/interface/web/sites/templates/database_list.htm @@ -75,7 +75,7 @@ - + diff --git a/interface/web/sites/templates/database_user_admin_list.htm b/interface/web/sites/templates/database_user_admin_list.htm index 2d7ece0b87236591b4301ff76753672300e8a996..0b7eb1be098ccf09cd3583234d4aaca3f4698af7 100644 --- a/interface/web/sites/templates/database_user_admin_list.htm +++ b/interface/web/sites/templates/database_user_admin_list.htm @@ -33,7 +33,7 @@ diff --git a/interface/web/sites/templates/database_user_list.htm b/interface/web/sites/templates/database_user_list.htm index b29d5c060079cb1dbc1577098a6ae86dc2e710c9..3cca7ec51033b4416ea835e20a705b304e48936c 100644 --- a/interface/web/sites/templates/database_user_list.htm +++ b/interface/web/sites/templates/database_user_list.htm @@ -46,7 +46,7 @@ diff --git a/interface/web/sites/templates/ftp_user_list.htm b/interface/web/sites/templates/ftp_user_list.htm index 43650dac8952330509d365d984ea2160e5d98f25..bd807c5072820c578861fc3db483dd91dee524de 100644 --- a/interface/web/sites/templates/ftp_user_list.htm +++ b/interface/web/sites/templates/ftp_user_list.htm @@ -59,7 +59,7 @@ - + diff --git a/interface/web/sites/templates/shell_user_list.htm b/interface/web/sites/templates/shell_user_list.htm index 9be1d8485dfc144ec893d00624338028c8e5e8ae..53eb6906fab21e79d376a5917ab8fbc0f2241916 100644 --- a/interface/web/sites/templates/shell_user_list.htm +++ b/interface/web/sites/templates/shell_user_list.htm @@ -56,7 +56,7 @@ diff --git a/interface/web/sites/templates/web_childdomain_list.htm b/interface/web/sites/templates/web_childdomain_list.htm index 51aadc157a28b9d63eb3cdab71ca4ddf5d0561c6..8aa5dc3447df99e8b07e75a243ce600b2337c517 100644 --- a/interface/web/sites/templates/web_childdomain_list.htm +++ b/interface/web/sites/templates/web_childdomain_list.htm @@ -56,7 +56,7 @@ diff --git a/interface/web/sites/templates/web_folder_list.htm b/interface/web/sites/templates/web_folder_list.htm index aaccb48895659d22f1978130152305c48882a2f3..e512b8b59440a61fb66133d97aa281517cbc957c 100644 --- a/interface/web/sites/templates/web_folder_list.htm +++ b/interface/web/sites/templates/web_folder_list.htm @@ -55,7 +55,7 @@ diff --git a/interface/web/sites/templates/web_folder_user_list.htm b/interface/web/sites/templates/web_folder_user_list.htm index 6b67e0591cd6f9f58767959bf0cf16a4dbedafd3..8e1d77e25dca1d4ec0e9e0c65dc703fb6e7e0984 100644 --- a/interface/web/sites/templates/web_folder_user_list.htm +++ b/interface/web/sites/templates/web_folder_user_list.htm @@ -52,7 +52,7 @@ diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm index 6f0e8f39ca5938a07d7372eec355e4c488bad46a..1ab14300d0cc4c008e99127fec5b98d94458da40 100644 --- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm @@ -47,7 +47,7 @@ diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm index 1def0ecb65ce82c16b117358f857114507ac6ff1..0b5ddfbd8bfb1bf818d433940f2fcee0c638f180 100644 --- a/interface/web/sites/templates/web_vhost_domain_advanced.htm +++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm @@ -57,6 +57,12 @@ {tmpl_var name='php_fpm_use_socket'} +
+ +
+ {tmpl_var name='php_fpm_chroot'} +
+
diff --git a/interface/web/sites/templates/webdav_user_list.htm b/interface/web/sites/templates/webdav_user_list.htm index 01764cc2fe0070d7d4b343a66b5ce8ab58ee25c4..866bcc9826ec302d9c13581a81924de2e626e9b6 100644 --- a/interface/web/sites/templates/webdav_user_list.htm +++ b/interface/web/sites/templates/webdav_user_list.htm @@ -56,7 +56,7 @@ diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 19e4c4c23b69f9bc259843ed241a691622a9854b..52b44acc79e25c6f25b2c8d0d527e24fb2a61dab 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -206,7 +206,7 @@ class page_action extends tform_actions { } //* Fill the IPv4 select field with the IP addresses that are allowed for this client on the current server - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; $ips = $app->db->queryAllRecords($sql, $server_id); $ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"":""; //if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "\r\n"; @@ -222,7 +222,7 @@ class page_action extends tform_actions { unset($ips); //* Fill the IPv6 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); //$ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"":""; //$ip_select = ""; @@ -275,7 +275,6 @@ class page_action extends tform_actions { // add limits to template to be able to hide settings foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]); - //* Reseller: If the logged in user is not admin and has sub clients (is a reseller) } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { @@ -353,7 +352,7 @@ class page_action extends tform_actions { } //* Fill the IPv4 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); $ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"":""; //if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "\r\n"; @@ -369,7 +368,7 @@ class page_action extends tform_actions { unset($ips); //* Fill the IPv6 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); $ip_select = ""; //$ip_select = ""; @@ -550,7 +549,7 @@ class page_action extends tform_actions { } //* Fill the IPv4 select field - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND server_id = ?"; + $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND virtualhost = 'y' AND server_id = ?"; $ips = $app->db->queryAllRecords($sql, $server_id); $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"":""; //$ip_select = ""; @@ -565,7 +564,7 @@ class page_action extends tform_actions { unset($ips); //* Fill the IPv6 select field - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND server_id = ?"; + $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' AND server_id = ?"; $ips = $app->db->queryAllRecords($sql, $server_id); $ip_select = ""; //$ip_select = ""; @@ -864,8 +863,12 @@ class page_action extends tform_actions { } $directive_snippets_id_select .= ''; } - - $directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); + + if($is_admin) { + $directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); + } else { + $directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); + } if(is_array($directive_snippets) && !empty($directive_snippets)){ $directive_snippets_id_select .= ''; foreach($directive_snippets as $directive_snippet){ @@ -940,6 +943,13 @@ class page_action extends tform_actions { } } $app->tpl->setLoop('folder_directive_snippets', $folder_directive_snippets); + if(is_array($web_config[$server_id])) { + $app->tpl->setVar('is_spdy_enabled', ($web_config[$server_id]['enable_spdy'] === 'y')); + $app->tpl->setVar('is_pagespeed_enabled', ($web_config[$server_id]['nginx_enable_pagespeed'])); + } else { + $app->tpl->setVar('is_spdy_enabled', ($web_config['enable_spdy'] === 'y')); + $app->tpl->setVar('is_pagespeed_enabled', ($web_config['nginx_enable_pagespeed'])); + } parent::onShowEnd(); } @@ -1059,6 +1069,11 @@ class page_action extends tform_actions { } if($this->_vhostdomain_type == 'domain') { + //* ensure that quota value is not 0 when vhost type = domain + if(isset($_POST["hd_quota"]) && $_POST["hd_quota"] == 0) { + $app->tform->errorMessage .= $app->tform->lng("limit_web_quota_not_0_txt")."
"; + } + //* Check the website quota of the client if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) { $tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ? AND type = 'vhost' AND ".$app->tform->getAuthSQL('u'), $this->id); @@ -1295,7 +1310,7 @@ class page_action extends tform_actions { // value inside '' if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue; // everything else - if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s\|]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; $custom_php_ini_settings_are_valid = false; break; } diff --git a/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng index 172646f21237946211c55b68e34e797b080696a2..2b2fb51f9a04f554e2c7765f1173f595a0045a0c 100644 --- a/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng +++ b/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng @@ -2,7 +2,7 @@ $wb['password_strength_0_txt'] = 'Muito curta'; $wb['password_strength_1_txt'] = 'Fraca'; $wb['password_strength_2_txt'] = 'Razoável'; -$wb['password_strength_3_txt'] = 'Bom'; +$wb['password_strength_3_txt'] = 'Boa'; $wb['password_strength_4_txt'] = 'Forte'; -$wb['password_strength_5_txt'] = 'Muito Forte'; +$wb['password_strength_5_txt'] = 'Muito forte'; ?> diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php index f213605bf787aaa739f69b7b853507f607128e17..9ab49eb0f140b0b21bd7381eeea43d0bcd848a37 100644 --- a/interface/web/tools/form/interface_settings.tform.php +++ b/interface/web/tools/form/interface_settings.tform.php @@ -144,6 +144,12 @@ $form['tabs']['main'] = array ( 'startmodule' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'startmodule_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'startmodule_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => '', @@ -157,6 +163,12 @@ $form['tabs']['main'] = array ( 'app_theme' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'app_theme_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'app_theme_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => 'default', diff --git a/interface/web/tools/import_ispconfig.php b/interface/web/tools/import_ispconfig.php index e2b8bad6479d43aeced846ebf2669da516276054..716ed2f9341ba7555660ab9e9ff1f5ab31aa506c 100644 --- a/interface/web/tools/import_ispconfig.php +++ b/interface/web/tools/import_ispconfig.php @@ -107,6 +107,17 @@ if(isset($_POST['connected'])) { } $app->tpl->setVar("client_group_id", $client_select); + //* Fill the mail server select field + $sql = "SELECT server_id, server_name FROM server WHERE mail_server = 1 and mirror_server_id = 0"; + $mail_servers = $app->db->queryAllRecords($sql); + $mail_server_select = ""; + if(is_array($mail_servers)) { + foreach( $mail_servers as $m_server) { + $selected = @($m_server['server_id'] == $_POST['local_server_id'])?'SELECTED':''; + $mail_server_select .= "\r\n"; + } + } + $app->tpl->setVar("local_server_id", $mail_server_select); try { //* Allow connections to self signed SSL certs @@ -161,6 +172,7 @@ $app->tpl->setVar('connected', $connected); $app->tpl->setVar('remote_session_id', $remote_session_id); $app->tpl->setVar('msg', $msg); $app->tpl->setVar('error', $error); +$app->tpl->setVar('local_server_id', $_POST['local_server_id'], true); //* SET csrf token $csrf_token = $app->auth->csrf_token_get('ispconfig_import'); @@ -188,7 +200,10 @@ function start_domain_import($mail_domain) { $server_id = intval($tmp['server_id']); unset($tmp); if($server_id == 0) $server_id = 1; - + + if (isset($_POST['local_server_id']) && intval($_POST['local_server_id']) !== $server_id){ + $server_id = intval($_POST['local_server_id']); + } //* get the mail domain record $mail_domain_rec = $client->mail_domain_get($remote_session_id, array('domain' => $mail_domain)); if(is_array($mail_domain_rec)) { diff --git a/interface/web/tools/interface_settings.php b/interface/web/tools/interface_settings.php index d7a1333b592dbe1147290055b16f03376956ec4a..b14b63737541699b49eebb567b7a7bfe6a93d847 100644 --- a/interface/web/tools/interface_settings.php +++ b/interface/web/tools/interface_settings.php @@ -81,7 +81,6 @@ class page_action extends tform_actions { if(!in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } - $this->updateSessionTheme(); } function onInsert() { @@ -96,7 +95,6 @@ class page_action extends tform_actions { if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } - $this->updateSessionTheme(); } function updateSessionTheme() { @@ -120,6 +118,9 @@ class page_action extends tform_actions { } function onAfterUpdate() { + + $this->updateSessionTheme(); + if($this->_theme_changed == true) { // not the best way, but it works header('Content-Type: text/html'); diff --git a/interface/web/tools/lib/lang/br.lng b/interface/web/tools/lib/lang/br.lng index 3000e972fc7eb8a0d11ed3df185c521ae706b948..1c1147216504e7c91983b42cc964cea44d4cca24 100644 --- a/interface/web/tools/lib/lang/br.lng +++ b/interface/web/tools/lib/lang/br.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/tools/lib/lang/br_import_ispconfig.lng b/interface/web/tools/lib/lang/br_import_ispconfig.lng index 8124d13f10edc1c39bd86746b0d3cd63e58db217..d77242b4838539a758babaf081d666c1e080215f 100644 --- a/interface/web/tools/lib/lang/br_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/br_import_ispconfig.lng @@ -1,23 +1,23 @@ diff --git a/interface/web/tools/lib/lang/br_import_vpopmail.lng b/interface/web/tools/lib/lang/br_import_vpopmail.lng index 55bc0bf238083d8a8833422dad1fbbaf2c826866..c18b0b6810dc8a5dfe4d5ba69847f575e656039e 100644 --- a/interface/web/tools/lib/lang/br_import_vpopmail.lng +++ b/interface/web/tools/lib/lang/br_import_vpopmail.lng @@ -1,7 +1,8 @@ diff --git a/interface/web/tools/lib/lang/br_index.lng b/interface/web/tools/lib/lang/br_index.lng index 437e1f01c384ab9871008b40fe50cc5ce7607c7c..bbb7085209407315ab13083159d593e387f7923a 100644 --- a/interface/web/tools/lib/lang/br_index.lng +++ b/interface/web/tools/lib/lang/br_index.lng @@ -1,4 +1,4 @@ diff --git a/interface/web/tools/lib/lang/br_interface.lng b/interface/web/tools/lib/lang/br_interface.lng index 45341060c552b666e73909c00f81a77e0c4fbaf7..95677c4b591df5b53fef1108c767881885b68288 100644 --- a/interface/web/tools/lib/lang/br_interface.lng +++ b/interface/web/tools/lib/lang/br_interface.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/tools/lib/lang/br_resync.lng b/interface/web/tools/lib/lang/br_resync.lng index bf854b33b31405b59fb49f3d94c6f9a33a0b9143..160a35dd0c32f92d5d4dfe50d986b91d0f627edc 100644 --- a/interface/web/tools/lib/lang/br_resync.lng +++ b/interface/web/tools/lib/lang/br_resync.lng @@ -1,53 +1,53 @@ diff --git a/interface/web/tools/lib/lang/br_tpl_default.lng b/interface/web/tools/lib/lang/br_tpl_default.lng index 1e09eea22cb37acfb69a24fc1a3ce2449d96b034..30ae32b17aef86dfe80ce7e33eab64ff163b2811 100644 --- a/interface/web/tools/lib/lang/br_tpl_default.lng +++ b/interface/web/tools/lib/lang/br_tpl_default.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/tools/lib/lang/br_usersettings.lng b/interface/web/tools/lib/lang/br_usersettings.lng index 8fccd268529f05507256890d6d5f8f69bc2b119f..cb3ae2dc4f82eed3915a33c5e4a10d53ba5d423d 100644 --- a/interface/web/tools/lib/lang/br_usersettings.lng +++ b/interface/web/tools/lib/lang/br_usersettings.lng @@ -2,11 +2,11 @@ $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['language_txt'] = 'Idioma'; -$wb['password_mismatch'] = 'As senhas não coincidem'; -$wb['Form to edit the user password and language.'] = 'Alterar idioma e senha'; +$wb['password_mismatch'] = 'A senha e confirmação da senha não coincidem.'; +$wb['Form to edit the user password and language.'] = 'Editar senha e idioma do usuário'; $wb['Settings'] = 'Configurações'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; ?> diff --git a/interface/web/tools/lib/lang/en_import_ispconfig.lng b/interface/web/tools/lib/lang/en_import_ispconfig.lng index 65ea1459806162a7ad5868dfc5325186b93edcd3..73002f88680904ef6e97d0407d4dfecbbab11637 100644 --- a/interface/web/tools/lib/lang/en_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/en_import_ispconfig.lng @@ -20,5 +20,6 @@ $wb['import_alias_txt'] = 'Import email alias'; $wb['import_forward_txt'] = 'Import forward'; $wb['import_user_filter_txt'] = 'Import user filter'; $wb['import_spamfilter_txt'] = 'Import spamfilter'; +$wb['local_server_txt'] = 'Local Mail Server'; ?> \ No newline at end of file diff --git a/interface/web/tools/lib/lang/en_interface.lng b/interface/web/tools/lib/lang/en_interface.lng index b15c7334b28e702ac47115ab5274b98aecc307b9..7cb0e2d8bc6b9b88da4863cc9d41234622956853 100644 --- a/interface/web/tools/lib/lang/en_interface.lng +++ b/interface/web/tools/lib/lang/en_interface.lng @@ -4,4 +4,8 @@ $wb["interface_desc_txt"] = 'Modify your interface'; $wb["language_txt"] = 'Language'; $wb["startmodule_txt"] = 'Startmodule'; $wb["app_theme_txt"] = 'Design'; +$wb['startmodule_empty'] = 'Startmodule empty.'; +$wb['startmodule_regex'] = 'Invalid chars in Startmodule.'; +$wb['app_theme_empty'] = 'App theme empty.'; +$wb['app_theme_regex'] = 'Invalid chars in App theme.'; ?> \ No newline at end of file diff --git a/interface/web/tools/lib/lang/tr.lng b/interface/web/tools/lib/lang/tr.lng index 5782a862cf47bf28206e7da5fe9eca08a38f96d4..6115b8a7a341c7fd734371e1a72b25c781e3afa5 100644 --- a/interface/web/tools/lib/lang/tr.lng +++ b/interface/web/tools/lib/lang/tr.lng @@ -4,10 +4,10 @@ $wb['Settings'] = 'Ayarlar'; $wb['ISPConfig Tools'] = 'ISPConfig Araçları'; $wb['Interface'] = 'Arayüz'; $wb['Password and Language'] = 'Parola ve Dil'; -$wb['ispconfig_tools_note'] = 'Bu modül parola ve dilin değiştirilmesini sağlayarak DNS kayıtları eşleştirmesini başlatır.'; -$wb['Sync Tools'] = 'Eşleştirme Araçları'; -$wb['Resync'] = 'Eşleştirme'; -$wb['Import'] = 'Al'; -$wb['ISPConfig 3 mail'] = 'ISPConfig 3 postası'; +$wb['ispconfig_tools_note'] = 'Bu modül parola ve dilin değiştirilmesini sağlayarak DNS kayıtları eşitlemesini başlatır.'; +$wb['Sync Tools'] = 'Eşitleme Araçları'; +$wb['Resync'] = 'Eşitleme'; +$wb['Import'] = 'İçe Aktar'; +$wb['ISPConfig 3 mail'] = 'ISPConfig 3 E-postaları'; $wb['PDNS Tupa'] = 'PowerDNS Tupa Yöneticisi'; ?> diff --git a/interface/web/tools/lib/lang/tr_import_ispconfig.lng b/interface/web/tools/lib/lang/tr_import_ispconfig.lng index 7aec6bd47092f87953dac5fc1b8f06e6be754b35..67c98edbe78b40f51b3326400789a25f1cdbb66f 100644 --- a/interface/web/tools/lib/lang/tr_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/tr_import_ispconfig.lng @@ -1,23 +1,24 @@ diff --git a/interface/web/tools/lib/lang/tr_import_vpopmail.lng b/interface/web/tools/lib/lang/tr_import_vpopmail.lng index 66fe56da1c7b170aaafa907796c2e5902387fc28..f0c05ea741bc4c84e72efd0590a956c77c6da283 100644 --- a/interface/web/tools/lib/lang/tr_import_vpopmail.lng +++ b/interface/web/tools/lib/lang/tr_import_vpopmail.lng @@ -1,7 +1,8 @@ diff --git a/interface/web/tools/lib/lang/tr_index.lng b/interface/web/tools/lib/lang/tr_index.lng index d8ea10cf557b41784d4270b28d4ba54b974d2dca..6d9a6c361c7fb14160b549c4d90acf4596ade2c5 100644 --- a/interface/web/tools/lib/lang/tr_index.lng +++ b/interface/web/tools/lib/lang/tr_index.lng @@ -1,4 +1,4 @@ diff --git a/interface/web/tools/lib/lang/tr_interface.lng b/interface/web/tools/lib/lang/tr_interface.lng index 2ff88a976e1c32f10659b9abd6867e67322cd817..2384c71107a76610744f471cb5f78bf290e6947c 100644 --- a/interface/web/tools/lib/lang/tr_interface.lng +++ b/interface/web/tools/lib/lang/tr_interface.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/tools/lib/lang/tr_usersettings.lng b/interface/web/tools/lib/lang/tr_usersettings.lng index 60c7679b9f555adfac952e54518161d4169ae07a..fa2eff63d7419c17c4272505934e530214eae709 100644 --- a/interface/web/tools/lib/lang/tr_usersettings.lng +++ b/interface/web/tools/lib/lang/tr_usersettings.lng @@ -1,12 +1,12 @@ diff --git a/interface/web/tools/templates/import_ispconfig.htm b/interface/web/tools/templates/import_ispconfig.htm index 1d63df2a6d2152e9f365f01b13b858dfd6459b3f..9d845701f6dc403dd60725a9d2554f609b319fa2 100644 --- a/interface/web/tools/templates/import_ispconfig.htm +++ b/interface/web/tools/templates/import_ispconfig.htm @@ -36,6 +36,12 @@ {tmpl_var name='client_group_id'} +
+ +
+
diff --git a/interface/web/vm/lib/lang/br.lng b/interface/web/vm/lib/lang/br.lng index 513a018bf515ddded5fc5a8cd55310f95c4c7101..ae59107a783fe8f9bdff7304df509f224efe62b3 100644 --- a/interface/web/vm/lib/lang/br.lng +++ b/interface/web/vm/lib/lang/br.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_action.lng b/interface/web/vm/lib/lang/br_openvz_action.lng index a301f51d0ed92567fe5fbf18626d95ba1f1b5e05..cc191c14e9634d996a33b0f34ae4143266fa0b10 100644 --- a/interface/web/vm/lib/lang/br_openvz_action.lng +++ b/interface/web/vm/lib/lang/br_openvz_action.lng @@ -1,16 +1,16 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_ip.lng b/interface/web/vm/lib/lang/br_openvz_ip.lng index 61fbd6ed6839aa1a1e15523b025063b2cdecb1be..612c391c9464ee05323833e73f333f72953eebd4 100644 --- a/interface/web/vm/lib/lang/br_openvz_ip.lng +++ b/interface/web/vm/lib/lang/br_openvz_ip.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_ostemplate.lng b/interface/web/vm/lib/lang/br_openvz_ostemplate.lng index edce912056486708dfafd3b167fe2c53757f24e9..ea76c915b77a781f355be540b138f682ceef6f17 100644 --- a/interface/web/vm/lib/lang/br_openvz_ostemplate.lng +++ b/interface/web/vm/lib/lang/br_openvz_ostemplate.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng index 04e94a889d079ae3d2851c81f32bb43ad2000030..9e60baf179a43c41df5da422d115c173684ace64 100644 --- a/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_template.lng b/interface/web/vm/lib/lang/br_openvz_template.lng index 4190a31f9cd16067c6d529837e11c11f82fc823d..23d4c9b6afa626d66a4aed0f5d239196e350ac98 100644 --- a/interface/web/vm/lib/lang/br_openvz_template.lng +++ b/interface/web/vm/lib/lang/br_openvz_template.lng @@ -1,97 +1,97 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_template_list.lng b/interface/web/vm/lib/lang/br_openvz_template_list.lng index 390869859ac1bb8ddabb9017d234439cdb3606d5..00d1b648d8285b43e044a62069358479c8a67732 100644 --- a/interface/web/vm/lib/lang/br_openvz_template_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_template_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/vm/lib/lang/br_openvz_vm.lng b/interface/web/vm/lib/lang/br_openvz_vm.lng index 04794daf86b2d3305ca3363c204af3f3dabd6f44..a8176e768815da9b533b731130d3277e8f920202 100644 --- a/interface/web/vm/lib/lang/br_openvz_vm.lng +++ b/interface/web/vm/lib/lang/br_openvz_vm.lng @@ -1,45 +1,46 @@ 0, na ordem da prioridade do boot.'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_vm_list.lng b/interface/web/vm/lib/lang/br_openvz_vm_list.lng index 03d510f2f765743f1d9be45a3ba8df08952bf815..c907c710eaeed01b34d86a3c8dfaadd5c0abe039 100644 --- a/interface/web/vm/lib/lang/br_openvz_vm_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_vm_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/vm/lib/lang/tr.lng b/interface/web/vm/lib/lang/tr.lng index 82599dd038568772d46f805c842d38d8c7223bc1..23bca66851d28da3d3ce0babc97ba969d08f3b9f 100644 --- a/interface/web/vm/lib/lang/tr.lng +++ b/interface/web/vm/lib/lang/tr.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/vm/lib/lang/tr_openvz_action.lng b/interface/web/vm/lib/lang/tr_openvz_action.lng index 29759e0266fdabd3883e23f8a93792a0a6df7554..8e2a3652d2b31369cc849be6c0a61fd9a2bb9f10 100644 --- a/interface/web/vm/lib/lang/tr_openvz_action.lng +++ b/interface/web/vm/lib/lang/tr_openvz_action.lng @@ -1,16 +1,17 @@ diff --git a/interface/web/vm/lib/lang/tr_openvz_ip.lng b/interface/web/vm/lib/lang/tr_openvz_ip.lng index 637a70f2ea87b83d0bfb467860a3c8722f111ac3..e24b354bae0f6b192c1e8c81f119c46f7d3f4aa0 100644 --- a/interface/web/vm/lib/lang/tr_openvz_ip.lng +++ b/interface/web/vm/lib/lang/tr_openvz_ip.lng @@ -1,7 +1,7 @@ diff --git a/interface/web/vm/lib/lang/tr_openvz_vm.lng b/interface/web/vm/lib/lang/tr_openvz_vm.lng index fad86d9f3a29185664fa6c9bfe37ccff09f5742f..7c2977cda97c68283fd538d2914be50ca540f584 100644 --- a/interface/web/vm/lib/lang/tr_openvz_vm.lng +++ b/interface/web/vm/lib/lang/tr_openvz_vm.lng @@ -10,21 +10,21 @@ $wb['nameserver_txt'] = 'Ad Sunucuları'; $wb['nameserver_desc_txt'] = '(boşluk ile ayırarak)'; $wb['capability_txt'] = 'Yeterlilik'; $wb['server_id_txt'] = 'Sunucu'; -$wb['ostemplate_id_txt'] = 'OS Kalıbı'; +$wb['ostemplate_id_txt'] = 'İşletim Sistemi Kalıbı'; $wb['template_id_txt'] = 'Kalıp'; $wb['ip_address_txt'] = 'IP Adresi'; $wb['hostname_txt'] = 'Sunucu Adı'; -$wb['vm_password_txt'] = 'VM Parolası'; -$wb['start_boot_txt'] = 'Açılışta başlat'; +$wb['vm_password_txt'] = 'Sanal Makine Parolası'; +$wb['start_boot_txt'] = 'Açılışta Başlatılsın'; $wb['active_txt'] = 'Etkin'; $wb['description_txt'] = 'Açıklama'; $wb['client_group_id_txt'] = 'Müşteri'; $wb['veid_txt'] = 'VEID'; $wb['create_dns_txt'] = 'Sunucu için DNS oluştur'; -$wb['active_until_date_txt'] = 'Şu tarihe kadar etkin'; +$wb['active_until_date_txt'] = 'Şu Tarihe Kadar Etkin'; $wb['ip_address_error_empty'] = 'IP adresi boş olamaz.'; $wb['hostname_error_empty'] = 'Sunucu adı boş olamaz.'; -$wb['vm_password_error_empty'] = 'VM parolası boş olamaz.'; +$wb['vm_password_error_empty'] = 'Sanal makine parolası boş olamaz.'; $wb['veid_error_empty'] = 'VEID boş olamaz.'; $wb['veid_error_unique'] = 'VEID zaten var.'; $wb['diskspace_error_empty'] = 'Disk alanı boş olamaz.'; @@ -35,11 +35,11 @@ $wb['cpu_num_error_empty'] = 'İşlemci sayısı boş olamaz.'; $wb['cpu_limit_error_empty'] = 'İşlemci sınırı boş olamaz.'; $wb['io_priority_error_empty'] = 'G/Ç önceliği boş olamaz.'; $wb['template_nameserver_error_empty'] = 'Ad sunucuları boş olamaz.'; -$wb['Virtual server'] = 'Sanal sunucu'; +$wb['Virtual server'] = 'sSunucu'; $wb['Advanced'] = 'Gelişmiş'; -$wb['features_txt'] = 'Features'; +$wb['features_txt'] = 'Özellikler'; $wb['iptables_txt'] = 'IP Tables'; -$wb['custom_txt'] = 'Custom settings'; -$wb['bootorder_txt'] = 'Boot order priority'; -$wb['bootorder_error_notpositive'] = 'Only positive integers are allowed for Boot order priority'; +$wb['custom_txt'] = 'Özel Ayarlar'; +$wb['bootorder_txt'] = 'Başlatma Önceliği'; +$wb['bootorder_error_notpositive'] = 'Başlatma önceliği değeri yalnız pozitif bir tamsayı olabilir'; ?> diff --git a/interface/web/vm/lib/lang/tr_openvz_vm_list.lng b/interface/web/vm/lib/lang/tr_openvz_vm_list.lng index 1a4ed0e7b93f99627887ec8d3e7ba746c79f01a0..e188f60464ead4e57ea647773ee87e767948d54b 100644 --- a/interface/web/vm/lib/lang/tr_openvz_vm_list.lng +++ b/interface/web/vm/lib/lang/tr_openvz_vm_list.lng @@ -1,8 +1,8 @@
{tmpl_var name="ip_address"}
diff --git a/interface/web/vm/templates/openvz_ostemplate_list.htm b/interface/web/vm/templates/openvz_ostemplate_list.htm index 85f46e6732c8a5f8234e7199af8c0f567ef4aa08..d800686e1c0c9c5091fbebb52e439bf809a0fa6b 100644 --- a/interface/web/vm/templates/openvz_ostemplate_list.htm +++ b/interface/web/vm/templates/openvz_ostemplate_list.htm @@ -42,7 +42,7 @@ diff --git a/interface/web/vm/templates/openvz_template_list.htm b/interface/web/vm/templates/openvz_template_list.htm index 5ec0cb79139a5d0e80b3f61f92f17625e1ab5e52..2c204279013eee1abdb82954eeb1268426b37458 100644 --- a/interface/web/vm/templates/openvz_template_list.htm +++ b/interface/web/vm/templates/openvz_template_list.htm @@ -33,7 +33,7 @@ diff --git a/interface/web/vm/templates/openvz_vm_list.htm b/interface/web/vm/templates/openvz_vm_list.htm index 516b536bb39fb4077e22e25fb000f64b0a830749..ee4084f4d1e76706679421fec33048a5e6630d16 100644 --- a/interface/web/vm/templates/openvz_vm_list.htm +++ b/interface/web/vm/templates/openvz_vm_list.htm @@ -49,7 +49,7 @@ diff --git a/remoting_client/API-docs/mail_spamfilter_blacklist_add.html b/remoting_client/API-docs/mail_spamfilter_blacklist_add.html index c45c5d60f0d460067b43d6cb1b3cf9475a521220..198f7b6b237cde20d9473c10305465c026ad2e30 100644 --- a/remoting_client/API-docs/mail_spamfilter_blacklist_add.html +++ b/remoting_client/API-docs/mail_spamfilter_blacklist_add.html @@ -21,7 +21,7 @@

Parameters (in $params):

server_id  (int(11))

wb  (enum('W','B'))

-

rid  (int(11))

+

rid  (int(11)) An ID from the spamfilter_users table.

email  (varchar(255))

priority  (tinyint(3))

active  (enum('n','y'))

diff --git a/remoting_client/API-docs/mail_spamfilter_user_add.html b/remoting_client/API-docs/mail_spamfilter_user_add.html index c23a9dbd42ca4a1900c0463ccad3336803449a6c..888c74ab70bc6ab084173b33b2e3ec2ca840d28a 100644 --- a/remoting_client/API-docs/mail_spamfilter_user_add.html +++ b/remoting_client/API-docs/mail_spamfilter_user_add.html @@ -24,7 +24,7 @@

policy_id  (int(11))

email  (varchar(255))

fullname  (varchar(64))

-

local  (varchar(1))

+

local  (varchar(1)) 'Y' for a local account.

Output:

Returns the ID of the newly added spamfilter user.

+ + + diff --git a/remoting_client/examples/dns_templatezone_add.php b/remoting_client/examples/dns_templatezone_add.php new file mode 100644 index 0000000000000000000000000000000000000000..aedfc61f5d9be0989bccb31177922b1fb331b446 --- /dev/null +++ b/remoting_client/examples/dns_templatezone_add.php @@ -0,0 +1,50 @@ + [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'
'; + } + + //* Set the function parameters. + $client_id = 1; + $template_id = 1; + $domain = 'test.tld'; + $ip = '192.168.0.100'; + $ns1 = 'ns1.testhoster.tld'; + $ns2 = 'ns2.testhoster.tld'; + $email = 'email.test.tld'; + + $id = $client->dns_templatezone_add($session_id, $client_id, $template_id, $domain, $ip, $ns1, $ns2, $email); + + echo "ID: ".$id."
"; + + if($client->logout($session_id)) { + echo 'Logged out.
'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> \ No newline at end of file diff --git a/remoting_client/examples/mail_spamfilter_blacklist_add.php b/remoting_client/examples/mail_spamfilter_blacklist_add.php index d5768e25367027a11ee492661f189b8d320d13c5..b5d8a7f80a53b8f215b445eb525693ef0e296b08 100644 --- a/remoting_client/examples/mail_spamfilter_blacklist_add.php +++ b/remoting_client/examples/mail_spamfilter_blacklist_add.php @@ -19,7 +19,7 @@ try { $params = array( 'server_id' => 1, 'wb' => 'B', - 'rid' => '', + 'rid' => '', // Fill in an ID from the spamfilter_users table. 'email' => 'hmmnoe@test.int', 'priority' => 1, 'active' => 'y' diff --git a/remoting_client/examples/mail_user_add.php b/remoting_client/examples/mail_user_add.php index 3b7d240eccea9805b43526959ed5298ed025cc86..80a7358cf9d3bb47c8b836954c6aed79eb53e90a 100644 --- a/remoting_client/examples/mail_user_add.php +++ b/remoting_client/examples/mail_user_add.php @@ -32,6 +32,7 @@ try { 'autoresponder_start_date' => '', 'autoresponder_end_date' => '', 'autoresponder_text' => 'hallo', + 'autoresponder_subject' => 'Out of office reply', 'move_junk' => 'n', 'custom_mailfilter' => 'spam', 'postfix' => 'n', diff --git a/security/security_settings.ini b/security/security_settings.ini index 24f4e38d209d6875c43538a09afb3a744ee2aa43..c135652e17cf15aa650168c206b44ff3725b3345 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -17,6 +17,7 @@ admin_allow_software_repo=superadmin remote_api_allowed=yes password_reset_allowed=yes session_regenerate_id=yes +reverse_proxy_panel_allowed=none [ids] ids_anon_enabled=yes @@ -42,4 +43,5 @@ security_admin_email_subject=Security alert from server warn_new_admin=yes warn_passwd_change=no warn_shadow_change=no -warn_group_change=no \ No newline at end of file +warn_group_change=no + diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index d533f7b3c0a6f3dcbde989b93f39a0a8e37854c0..94982a6dc11ee3ec1f46289cd05c27d8727575c7 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -74,6 +74,16 @@ +{tmpl_if name="use_rspamd"} + + Order allow,deny + Allow from all + + RewriteEngine On + RewriteRule ^/rspamd$ /rspamd/ [R,L] + RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P] +{/tmpl_if} + diff --git a/server/conf/autoresponder.master b/server/conf/autoresponder.master index 0126c998d49f8177d28e147c1642a6e9fe4532c4..114db23d640125eccc0fb4ba4f9454d704ad92c0 100644 --- a/server/conf/autoresponder.master +++ b/server/conf/autoresponder.master @@ -4,7 +4,7 @@ if ($RETURNCODE==1) { if (!/^List-Unsubscribe:.*/:h ) { - if (!/^X-Spam-Flag: YES/:h ) + if (!/^(X-Spam-Flag: YES|X-Spam: Yes|Subject: \*\*\*\s*SPAM\s*\*\*\*.*)/:h ) { NOW=time if ({start_date} lt $NOW && {end_date} gt $NOW) diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master index ed395064af5490be0a11aafeac61a67a9ef99d2e..fb867901dc2848506db0790c5ce076e92d2326ab 100644 --- a/server/conf/bind_pri.domain.master +++ b/server/conf/bind_pri.domain.master @@ -20,6 +20,9 @@ $TTL {tmpl_var name='ttl'} {tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} + +{tmpl_var name='name'} {tmpl_var name='ttl'} CAA {tmpl_var name='data'} + {tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} @@ -53,5 +56,9 @@ $TTL {tmpl_var name='ttl'} {tmpl_var name='name'} {tmpl_var name='ttl'} TXT "{tmpl_var name='data'}" + +{tmpl_var name='name'} {tmpl_var name='ttl'} TYPE257 {tmpl_var name='data'} + + diff --git a/server/conf/nginx_apps.vhost.master b/server/conf/nginx_apps.vhost.master index ed5e3a49ae5160842cfbc25bbd25e7e22f6c4822..8a97f82a439cd596d341cf91b313ad4a52625a6b 100644 --- a/server/conf/nginx_apps.vhost.master +++ b/server/conf/nginx_apps.vhost.master @@ -199,4 +199,29 @@ server { alias /var/lib/mailman/archives/public; autoindex on; } + + {use_rspamd}location /rspamd/ { + {use_rspamd}proxy_pass http://127.0.0.1:11334/; + {use_rspamd}rewrite ^//(.*) /$1; + {use_rspamd}proxy_set_header X-Forwarded-Proto $scheme; + {use_rspamd}proxy_set_header Host $host; + {use_rspamd}proxy_set_header X-Real-IP $remote_addr; + {use_rspamd}proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + {use_rspamd}proxy_pass_header Authorization; + {use_rspamd}client_max_body_size 0; + {use_rspamd}client_body_buffer_size 1m; + {use_rspamd}proxy_intercept_errors on; + {use_rspamd}proxy_buffering on; + {use_rspamd}proxy_buffer_size 128k; + {use_rspamd}proxy_buffers 256 16k; + {use_rspamd}proxy_busy_buffers_size 256k; + {use_rspamd}proxy_temp_file_write_size 256k; + {use_rspamd}proxy_max_temp_file_size 0; + {use_rspamd}proxy_read_timeout 300; + {use_rspamd} + {use_rspamd}location ~* ^/rspamd/(.+\.(jpg|jpeg|gif|css|png|js|ico|html?|xml|txt))$ { + {use_rspamd}alias /usr/share/rspamd/www/$1; + {use_rspamd}} + {use_rspamd}} + } diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 1fd98a58997efee0f00e9daf2f59df08bd5810a0..b1db61fe1c90e9a34dbc7797060ded982ebd66de 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -3,7 +3,9 @@ server { listen []:; - + + listen [::]:; + listen : ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; @@ -11,6 +13,9 @@ server { # ssl_prefer_server_ciphers on; listen []: ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + + + listen [::]: ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; ssl_certificate ; ssl_certificate_key ; @@ -20,6 +25,13 @@ server { root ; + + + if ($scheme != "https") { + rewrite ^ https://$http_host$request_uri? permanent; + } + + if ($http_host "") { rewrite ^ $scheme://$request_uri? permanent; @@ -35,13 +47,6 @@ server { rewrite ^(.*)$ $2 ; } - - - if ($scheme != "https") { - rewrite ^ https://$http_host$request_uri? permanent; - } - - @@ -128,6 +133,7 @@ server { location ^~ /.well-known/acme-challenge/ { access_log off; log_not_found off; + auth_basic off; root /usr/local/ispconfig/interface/acme/; autoindex off; index index.html; @@ -173,7 +179,13 @@ server { fastcgi_pass unix:; fastcgi_index index.php; + + fastcgi_param DOCUMENT_ROOT ; + fastcgi_param HOME ; + fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_intercept_errors on; } @@ -184,12 +196,18 @@ server { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/hhvm/hhvm..sock; fastcgi_index index.php; + + fastcgi_param DOCUMENT_ROOT ; + fastcgi_param HOME ; + fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_intercept_errors on; error_page 500 501 502 503 = @phpfallback; } - + location @phpfallback { try_files $uri =404; include /etc/nginx/fastcgi_params; @@ -200,7 +218,13 @@ server { fastcgi_pass unix:; fastcgi_index index.php; + + fastcgi_param DOCUMENT_ROOT ; + fastcgi_param HOME ; + fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_intercept_errors on; } @@ -211,7 +235,7 @@ server { } - + location /cgi-bin/ { try_files $uri =404; @@ -220,7 +244,13 @@ server { gzip off; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_index index.cgi; + + fastcgi_param DOCUMENT_ROOT ; + fastcgi_param HOME ; + fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_intercept_errors on; } diff --git a/server/conf/php_fpm_pool.conf.master b/server/conf/php_fpm_pool.conf.master index fd7e996a76ce3088eb202413087e7d1387b1b84f..fb5c4b44d9b975ccef05ab936dc7d7d75c7e934a 100644 --- a/server/conf/php_fpm_pool.conf.master +++ b/server/conf/php_fpm_pool.conf.master @@ -27,6 +27,11 @@ pm.process_idle_timeout = s; pm.max_requests = chdir = / + +chroot = +php_admin_value[doc_root] = +php_admin_value[cgi.fix_pathinfo] = 0 + env[HOSTNAME] = $HOSTNAME env[TMP] = /tmp diff --git a/server/conf/rspamd_users.conf.master b/server/conf/rspamd_users.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..73d437d6cbdd3a7292af84855364cdfee7de977a --- /dev/null +++ b/server/conf/rspamd_users.conf.master @@ -0,0 +1,43 @@ +settings { + authenticated { + priority = 10; + authenticated = yes; + #apply "default" { groups_disabled = ["rbl", "spf"]; } + apply "default" { + #symbols_enabled = []; + symbols_disabled = []; + #groups_enabled = []; + groups_disabled = ["rbl"]; + } + } + whitelist { + priority = 10; + rcpt = "postmaster"; + rcpt = "hostmaster"; + rcpt = "abuse"; + want_spam = yes; + } + whitelist-ip { + priority = 10; + + ip = ""; + + + want_spam = yes; + } +# whitelist-timmehosting { +# priority = 20; +# from = "@xxx"; +# from = "@xxx"; +# want_spam = yes; +# } + whitelist-ca { + priority = 20; + from = "@comodo.com"; + from = "@geotrust.com"; + from = "@geotrusteurope.com"; + want_spam = yes; + } + .include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf" + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf" +} diff --git a/server/conf/rspamd_users.inc.conf.master b/server/conf/rspamd_users.inc.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..96ba9f08384f0c42fa398517f4e34ff301c83648 --- /dev/null +++ b/server/conf/rspamd_users.inc.conf.master @@ -0,0 +1,57 @@ + { + priority = ; + + from = ""; + + + rcpt = ""; + + + + + want_spam = yes; + + apply { + CLAM_VIRUS = 1999.0; + JUST_EICAR = 1999.0; + actions { + reject = null; + + + greylist = ; + + greylist = null; + + + } + } + + + apply { + + CLAM_VIRUS = -999.0; + JUST_EICAR = -999.0; + + CLAM_VIRUS = ; + JUST_EICAR = ; + + actions { + + "rewrite subject" = ; + + + "add header" = ; + + reject = ; + + + greylist = ; + + greylist = null; + + + } + } + + +} \ No newline at end of file diff --git a/server/conf/rspamd_wblist.inc.conf.master b/server/conf/rspamd_wblist.inc.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..b614244515b4ea55089fcc9f347796a40766b3c4 --- /dev/null +++ b/server/conf/rspamd_wblist.inc.conf.master @@ -0,0 +1,36 @@ +_wblist- { + priority = ; + + from = ""; + + + rcpt = ""; + + + ip = ""; + + + hostname = ""; + + + want_spam = yes; + apply { + actions { + reject = null; + "add header" = null; + greylist = null; + "rewrite subject" = null; + } + } + + apply { + R_DUMMY = 999.0; + actions { + reject = 0.2; + "add header" = 0.1; + greylist = 0.1; + "rewrite subject" = 0.1; + } + } + +} \ No newline at end of file diff --git a/server/conf/rspamd_worker-controller.inc.master b/server/conf/rspamd_worker-controller.inc.master new file mode 100644 index 0000000000000000000000000000000000000000..75b744c88380c3ce63394caaadf79653e0fa8815 --- /dev/null +++ b/server/conf/rspamd_worker-controller.inc.master @@ -0,0 +1,8 @@ +# Included from top-level .conf file + +type = "controller"; +count = 1; +password = ""; +secure_ip = "127.0.0.1"; +secure_ip = "::1"; +static_dir = "${WWWDIR}"; \ No newline at end of file diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index 8e78c6c83aa87fdeb53f03a42d771aacd0c0b5e5..13c08dd56b18987573c18fd1fe1aee432db17e44 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -1,4 +1,4 @@ -require ["fileinto", "regex", "vacation"]; +require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; # Send a copy of email to @@ -9,7 +9,7 @@ redirect ""; # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { fileinto "Junk"; # Stop here so that we do not reply on spams stop; @@ -26,7 +26,7 @@ keep; ################################################################# # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { fileinto "Junk"; # Stop here so that we do not reply on spams stop; diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master index b1f7fcb87d1802bac7205cde7b15385f1e15dd0e..5244693102ce0778964ce2e25b61c377b1b2bf8a 100644 --- a/server/conf/sieve_filter_1.2.master +++ b/server/conf/sieve_filter_1.2.master @@ -1,8 +1,8 @@ -require ["fileinto", "regex", "date", "relational", "vacation"]; +require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { fileinto "Junk"; # Stop here so that we do not reply on spams stop; @@ -26,7 +26,7 @@ keep; ################################################################# # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { # Stop here so that we do not reply on spams stop; } diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index a6fd2f95b108743e98421dda32c1a6591674ed13..0982a3cf41c326f51b45bfdf94fd5623328af25d 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -75,15 +75,15 @@ # SSLCertificateFile SSLCertificateKeyFile - - - SSLCertificateChainFile - SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off + + + SSLCertificateChainFile + @@ -93,7 +93,7 @@ SetHandler None - Options +FollowSymLinks + Options +SymlinksIfOwnerMatch AllowOverride Require all granted @@ -125,7 +125,7 @@ SetHandler None - Options +FollowSymLinks + Options +SymlinksIfOwnerMatch AllowOverride Require all granted @@ -215,6 +215,7 @@ # cgi enabled + AllowOverride Require all granted @@ -377,6 +378,12 @@ + + ProxyFCGISetEnvIf "true" DOCUMENT_ROOT "" + ProxyFCGISetEnvIf "true" CONTEXT_DOCUMENT_ROOT "%{reqenv:DOCUMENT_ROOT}" + ProxyFCGISetEnvIf "true" HOME "%{reqenv:DOCUMENT_ROOT}" + ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "%{reqenv:DOCUMENT_ROOT}%{reqenv:SCRIPT_NAME}" + #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ fcgi://127.0.0.1:/$1 diff --git a/server/cron.php b/server/cron.php index 6f74bd35707e283616a2a11800c28c422ea5c011..ef13d06e2f3b072c4d806db6f236325e25153339 100644 --- a/server/cron.php +++ b/server/cron.php @@ -33,24 +33,33 @@ require SCRIPT_PATH."/lib/config.inc.php"; // Check whether another instance of this script is already running $lockFile = $conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock'; -if (is_file($lockFile)) { +if(is_file($lockFile)) { clearstatcache(); - - // Maybe we hit a deadlock and the lock file is no longer relevant - if(filemtime($lockFile) > time() - 86400) { // 86400 seconds = 1 day - if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - The cron lock file is older than one day.' . "\n"; - exit; - } - - // Check if the process id we have in the lock file is still present + +// Check if the process id we have in the lock file is still present $pid = trim(file_get_contents($lockFile)); if(preg_match('/^[0-9]+$/', $pid)) { - if(file_exists('/proc/' . $pid)) { - if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of server.php running with pid ' . $pid . '.' . "\n"; - exit; + if(is_dir('/proc/' . $pid)) { + if(file_exists('/proc/' . $pid . '/cmdline')) { + if(strpos(file_get_contents('/proc/' . $pid . '/cmdline'), 'cron.php') !== false) { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of cron.php running with pid ' . $pid . '.' . "\n"; + exit; + } else { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is a process running with pid ' . $pid . ' but it seems not to be cron.php, continuing.' . "\n"; + } + } else { + if(filemtime($lockFile) < time() - 86400) { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of cron.php running with pid ' . $pid . ' but process is older than 1 day. Continuing.' . "\n"; + } else { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of cron.php running with pid ' . $pid . '.' . "\n"; + exit; + } + } + } else { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already a lockfile set, but no process running with this pid (' . $pid . '). Continuing.' . "\n"; + } } - if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already a lockfile set, but no process running with this pid (' . $pid . '). Continuing.' . "\n"; } // Set Lockfile @@ -69,10 +78,9 @@ $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions,plugins'); $app->load('libdatetime,cronjob'); - // read all cron jobs $path = SCRIPT_PATH . '/lib/classes/cron.d'; if(!is_dir($path)) die('Cron path missing!'); @@ -114,6 +122,8 @@ foreach($files as $f) { } unset($files); +$app->services->processDelayedActions(); + // Remove lock @unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock'); $app->log('Remove Lock: ' . $conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock', LOGLEVEL_DEBUG); diff --git a/server/cron_debug.php b/server/cron_debug.php index 615a56d7434b64912d6b114874d20164db0a7117..74065f02c43fb1fcf970810c6607edd40cbdbd63 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -39,7 +39,7 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE); $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,plugins,ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); // Path settings @@ -61,11 +61,7 @@ if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numer include $path . '/' . $cronjob_file; $class_name = 'cronjob_' . $name; $cronjob = new $class_name(); - -$cronjob->onPrepare(); -$cronjob->onBeforeRun(); -$cronjob->onRunJob(); -$cronjob->onAfterRun(); +$cronjob->run(true); die("finished.\n"); diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index 86df2a86f6b43181d8ba137a326d8cbf3fd643de..146f2465c066813216796646c2dad553b1590062 100644 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -69,6 +69,22 @@ class app { } + public function __get($name) { + $valid_names = array('functions', 'getconf', 'letsencrypt', 'modules', 'plugins', 'services', 'system'); + if(!in_array($name, $valid_names)) { + trigger_error('Undefined property ' . $name . ' of class app', E_USER_WARNING); + } + if(property_exists($this, $name)) { + return $this->{$name}; + } + $this->uses($name); + if(property_exists($this, $name)) { + return $this->{$name}; + } else { + trigger_error('Undefined property ' . $name . ' of class app', E_USER_WARNING); + } + } + function setCaller($caller) { $this->_calling_script = $caller; } diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php index 9b601d90b341d5f7722da5468a55e74d1961da24..922f32e61288664e8b8dd464e4f3d3f2e8cb9d99 100644 --- a/server/lib/classes/aps_installer.inc.php +++ b/server/lib/classes/aps_installer.inc.php @@ -395,7 +395,7 @@ class ApsInstaller extends ApsBase mkdir($this->document_root, 0777, true); } } else { - exec("rm -Rf ".escapeshellarg($this->local_installpath).'*'); + $app->system->exec_safe("rm -Rf ?*", $this->local_installpath); } } else { mkdir($this->local_installpath, 0777, true); @@ -412,7 +412,7 @@ class ApsInstaller extends ApsBase || ($this->extractZip($this->packages_dir.'/'.$task['path'], 'scripts', $this->local_installpath.'install_scripts/') === false) ) { // Clean already extracted data - exec("rm -Rf ".escapeshellarg($this->local_installpath).'*'); + $app->system->exec_safe("rm -Rf ?*", $this->local_installpath); throw new Exception('Unable to extract the package '.$task['path']); } @@ -423,11 +423,11 @@ class ApsInstaller extends ApsBase $owner_res = $app->db->queryOneRecord("SELECT system_user, system_group FROM web_domain WHERE domain = ?", $main_domain['value']); $this->file_owner_user = $owner_res['system_user']; $this->file_owner_group = $owner_res['system_group']; - exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); + $app->system->exec_safe('chown -R ?:? ?', $this->file_owner_user, $this->file_owner_group, $this->local_installpath); //* Chown stats directory back if(is_dir($this->local_installpath.'stats')) { - exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats')); + $app->system->exec_safe('chown -R root:root ?', $this->local_installpath.'stats'); } } } @@ -544,7 +544,6 @@ class ApsInstaller extends ApsBase chmod($this->local_installpath.'install_scripts/'.$cfgscript, 0755); // Change to the install folder (import for the exec() below!) - //exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); chdir($this->local_installpath.'install_scripts/'); // Set the enviroment variables @@ -554,7 +553,9 @@ class ApsInstaller extends ApsBase $shell_retcode = true; $shell_ret = array(); - exec('php '.escapeshellarg($this->local_installpath.'install_scripts/'.$cfgscript).' install 2>&1', $shell_ret, $shell_retcode); + $app->system->exec_safe('php ? install 2>&1', $this->local_installpath.'install_scripts/'.$cfgscript); + $shell_ret = $app->system->last_exec_out(); + $shell_retcode = $app->system->last_exec_retcode(); $shell_ret = array_filter($shell_ret); $shell_ret_str = implode("\n", $shell_ret); @@ -566,11 +567,11 @@ class ApsInstaller extends ApsBase else { // The install succeeded, chown newly created files too - exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); + $app->system->exec_safe('chown -R ?:? ?', $this->file_owner_user, $this->file_owner_group, $this->local_installpath); //* Chown stats directory back if(is_dir($this->local_installpath.'stats')) { - exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats')); + $app->system->exec_safe('chown -R root:root ?', $this->local_installpath.'stats'); } $app->dbmaster->query('UPDATE aps_instances SET instance_status = ? WHERE id = ?', INSTANCE_SUCCESS, $task['instance_id']); @@ -597,8 +598,9 @@ class ApsInstaller extends ApsBase */ private function cleanup($task, $sxe) { + global $app; chdir($this->local_installpath); - exec("rm -Rf ".escapeshellarg($this->local_installpath).'install_scripts'); + $app->system->exec_safe("rm -Rf ?", $this->local_installpath.'install_scripts'); } diff --git a/server/lib/classes/cron.d/100-mailbox_stats.inc.php b/server/lib/classes/cron.d/100-mailbox_stats.inc.php index e347330c4c43f14bbb8922a551f70902ebdbf4bc..51c3a454891bbc1af774190e2fdd466e49472066 100644 --- a/server/lib/classes/cron.d/100-mailbox_stats.inc.php +++ b/server/lib/classes/cron.d/100-mailbox_stats.inc.php @@ -107,25 +107,6 @@ class cronjob_mailbox_stats extends cronjob { $mail_boxes = array(); $mail_rewrites = array(); // we need to read all mail aliases and forwards because the address in amavis is not always the mailbox address - function parse_mail_log_line($line) { - //Oct 31 17:35:48 mx01 amavis[32014]: (32014-05) Passed CLEAN, [IPv6:xxxxx] [IPv6:xxxxx] -> , Message-ID: , mail_id: xxxxxx, Hits: -1.89, size: 1591, queued_as: xxxxxxx, 946 ms - - if(preg_match('/^(\w+\s+\d+\s+\d+:\d+:\d+)\s+[^ ]+\s+amavis.* <([^>]+)>\s+->\s+((<[^>]+>,)+) .*Message-ID:\s+<([^>]+)>.* size:\s+(\d+),.*$/', $line, $matches) == false) return false; - - $timestamp = strtotime($matches[1]); - if(!$timestamp) return false; - - $to = array(); - $recipients = explode(',', $matches[3]); - foreach($recipients as $recipient) { - $recipient = substr($recipient, 1, -1); - if(!$recipient || $recipient == $matches[2]) continue; - $to[] = $recipient; - } - - return array('line' => $line, 'timestamp' => $timestamp, 'size' => $matches[6], 'from' => $matches[2], 'to' => $to, 'message-id' => $matches[5]); - } - function add_mailbox_traffic(&$traffic_array, $address, $traffic,$mail_boxes, $mail_rewrites) { //global $mail_boxes, $mail_rewrites; //echo '##'.print_r($mail_boxes).'##'; @@ -192,6 +173,10 @@ class cronjob_mailbox_stats extends cronjob { continue; } } + + $this->mail_boxes = $mail_boxes; + $this->mail_rewrites = $mail_rewrites; + $this->add_mailbox_traffic($cur_line['from'], $cur_line['size'],$mail_boxes, $mail_rewrites); //echo "1\n"; //print_r($this->mailbox_traffic); @@ -240,6 +225,7 @@ class cronjob_mailbox_stats extends cronjob { $tstamp = date('Y-m'); $sql = "SELECT mailuser_id,email FROM mail_user WHERE server_id = ?"; $records = $app->db->queryAllRecords($sql, $conf['server_id']); + $mailbox_traffic = $this->mailbox_traffic; foreach($records as $rec) { if(array_key_exists($rec['email'], $mailbox_traffic)) { $sql = "SELECT * FROM mail_traffic WHERE month = ? AND mailuser_id = ?"; @@ -275,9 +261,26 @@ class cronjob_mailbox_stats extends cronjob { private function parse_mail_log_line($line) { //Oct 31 17:35:48 mx01 amavis[32014]: (32014-05) Passed CLEAN, [IPv6:xxxxx] [IPv6:xxxxx] -> , Message-ID: , mail_id: xxxxxx, Hits: -1.89, size: 1591, queued_as: xxxxxxx, 946 ms - if(preg_match('/^(\w+\s+\d+\s+\d+:\d+:\d+)\s+[^ ]+\s+amavis.* <([^>]+)>\s+->\s+((<[^>]+>,)+) .*Message-ID:\s+<([^>]+)>.* size:\s+(\d+),.*$/', $line, $matches) == false) return false; + // Oct 31 17:35:48 + $timestampSyslog = '\w+\s+\d+\s+\d+:\d+:\d+'; + $timePatternRsyslog = 'Y-m-d\TH:i:sT'; + // 2019-02-12T18:17:19+01:00 + $timestampRsyslog = '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\+-]\d{2}:\d{2}'; + // 2019-02-12T18:17:19.203313+01:00 + $timestampHighPrecision = '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+[\+-]\d{2}:\d{2}'; + $timePatternHighPrecision = 'Y-m-d\TH:i:s.uT'; + + $timestampAll = $timestampSyslog . '|' . $timestampRsyslog . '|' . $timestampHighPrecision; + + if(preg_match('/^('. $timestampAll .')\s+[^ ]+\s+amavis.* <([^>]+)>\s+->\s+((<[^>]+>,)+) .*Message-ID:\s+<([^>]+)>.* size:\s+(\d+),.*$/', $line, $matches) == false) return false; $timestamp = strtotime($matches[1]); + if(!$timestamp) { + $timestamp = DateTime::createFromFormat($timePatternRsyslog, $matches[1]); + } + if(!$timestamp) { + $timestamp = DateTime::createFromFormat($timePatternHighPrecision, $matches[1]); + } if(!$timestamp) return false; $to = array(); diff --git a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php index 75014c347def49072f048b235c5afadaa976feb5..8adf7c7253f37a0ba03edc09065da8a38c1468fd 100644 --- a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php @@ -90,7 +90,7 @@ class cronjob_monitor_email_quota extends cronjob { $email_parts = explode('@', $mb['email']); $filename = $mb['maildir'].'/.quotausage'; if(!file_exists($filename) && $dovecot) { - exec('doveadm quota recalc -u '.$email); + $app->system->exec_safe('doveadm quota recalc -u ?', $email); } if(file_exists($filename) && !is_link($filename)) { $quotafile = file($filename); @@ -99,7 +99,8 @@ class cronjob_monitor_email_quota extends cronjob { $app->log("Mail storage $email: " . $storage_value[1], LOGLEVEL_DEBUG); unset($quotafile); } else { - exec('du -s '.escapeshellcmd($mb['maildir']), $out); + $app->system->exec_safe('du -s ?', $mb['maildir']); + $out = $app->system->last_exec_out(); $parts = explode(' ', $out[0]); $data[$email]['used'] = intval($parts[0])*1024; unset($out); diff --git a/server/lib/classes/cron.d/100-monitor_openvz.inc.php b/server/lib/classes/cron.d/100-monitor_openvz.inc.php index 30b51b4b5fb50242648f9b66be66c08d9a01ea6e..adc092ec95eb72d96b563202c5607f47c5f0ef64 100644 --- a/server/lib/classes/cron.d/100-monitor_openvz.inc.php +++ b/server/lib/classes/cron.d/100-monitor_openvz.inc.php @@ -69,7 +69,7 @@ class cronjob_monitor_openvz extends cronjob { /* Fetch the data into a array */ - $app->load(openvz_tools); + $app->load('openvz_tools'); $openVzTools = new openvz_tools(); $data = $openVzTools->getOpenVzVeInfo(); @@ -98,7 +98,7 @@ class cronjob_monitor_openvz extends cronjob { /* Fetch the data into a array */ - $app->load(openvz_tools); + $app->load('openvz_tools'); $openVzTools = new openvz_tools(); $data = $openVzTools->getOpenVzVeBeanCounter(); diff --git a/server/lib/classes/cron.d/150-awstats.inc.php b/server/lib/classes/cron.d/150-awstats.inc.php index 2d281c7d39acdaee7c736522fc81792e2754de65..4ba286ea1aefba159c0ef3ea425af4cbac4959e4 100644 --- a/server/lib/classes/cron.d/150-awstats.inc.php +++ b/server/lib/classes/cron.d/150-awstats.inc.php @@ -71,16 +71,16 @@ class cronjob_awstats extends cronjob { $log_folder .= '/' . $subdomain_host; unset($tmp); } - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; if(!@is_file($logfile)) { - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'; if(!@is_file($logfile)) { continue; } } $web_folder = (($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web'); - $domain = escapeshellcmd($rec['domain']); - $statsdir = escapeshellcmd($rec['document_root'].'/'.$web_folder.'/stats'); + $domain = $rec['domain']; + $statsdir = $rec['document_root'].'/'.$web_folder.'/stats'; $awstats_pl = $web_config['awstats_pl']; $awstats_buildstaticpages_pl = $web_config['awstats_buildstaticpages_pl']; @@ -117,8 +117,8 @@ class cronjob_awstats extends cronjob { } if(!@is_dir($statsdir)) mkdir($statsdir); - $username = escapeshellcmd($rec['system_user']); - $groupname = escapeshellcmd($rec['system_group']); + $username = $rec['system_user']; + $groupname = $rec['system_group']; chown($statsdir, $username); chgrp($statsdir, $groupname); if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); @@ -138,7 +138,7 @@ class cronjob_awstats extends cronjob { // awstats_buildstaticpages.pl -update -config=mydomain.com -lang=en -dir=/var/www/domain.com/'.$web_folder.'/stats -awstatsprog=/path/to/awstats.pl // $command = "$awstats_buildstaticpages_pl -update -config='$domain' -lang=".$conf['language']." -dir='$statsdir' -awstatsprog='$awstats_pl'"; - $command = "$awstats_buildstaticpages_pl -month='$awmonth' -year='$awyear' -update -config='$domain' -lang=".$conf['language']." -dir='$statsdir' -awstatsprog='$awstats_pl'"; + $command = escapeshellcmd($awstats_buildstaticpages_pl) . ' -month=' . escapeshellarg($awmonth) . ' -year=' . escapeshellarg($awyear) . ' -update -config=' . escapeshellarg($domain) . ' -lang=' . escapeshellarg($conf['language']) . ' -dir=' . escapeshellarg($statsdir) . ' -awstatsprog=' . escapeshellarg($awstats_pl); if (date("d") == 2) { $awmonth = date("m")-1; @@ -148,7 +148,9 @@ class cronjob_awstats extends cronjob { } $statsdirold = $statsdir."/".$awyear."-".$awmonth."/"; - mkdir($statsdirold); + if(!is_dir($statsdirold)) { + mkdir($statsdirold); + } $files = scandir($statsdir); foreach ($files as $file) { if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); @@ -178,7 +180,7 @@ class cronjob_awstats extends cronjob { chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); } - exec('chown -R '.$username.':'.$groupname.' '.$statsdir); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); } diff --git a/server/lib/classes/cron.d/150-webalizer.inc.php b/server/lib/classes/cron.d/150-webalizer.inc.php index 0ae05dd6823e3d6762360957f9e7859244a92070..42aa125e0f9b427883196bf2d511e25a3ad6d182 100644 --- a/server/lib/classes/cron.d/150-webalizer.inc.php +++ b/server/lib/classes/cron.d/150-webalizer.inc.php @@ -94,19 +94,19 @@ class cronjob_webalizer extends cronjob { $log_folder .= '/' . $subdomain_host; unset($tmp); } - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; if(!@is_file($logfile)) { - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'; if(!@is_file($logfile)) { continue; } } - $domain = escapeshellcmd($rec['domain']); - $statsdir = escapeshellcmd($rec['document_root'].'/'.(($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web').'/stats'); + $domain = $rec['domain']; + $statsdir = $rec['document_root'].'/'.(($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web').'/stats'; $webalizer = '/usr/bin/webalizer'; $webalizer_conf_main = '/etc/webalizer/webalizer.conf'; - $webalizer_conf = escapeshellcmd($rec['document_root'].'/log/webalizer.conf'); + $webalizer_conf = $rec['document_root'].'/log/webalizer.conf'; if(is_file($statsdir.'/index.php')) unlink($statsdir.'/index.php'); @@ -122,13 +122,13 @@ class cronjob_webalizer extends cronjob { if(!@is_dir($statsdir)) mkdir($statsdir); - $username = escapeshellcmd($rec['system_user']); - $groupname = escapeshellcmd($rec['system_group']); + $username = $rec['system_user']; + $groupname = $rec['system_group']; chown($statsdir, $username); chgrp($statsdir, $groupname); - exec("$webalizer -c $webalizer_conf -n $domain -s $domain -r $domain -q -T -p -o $statsdir $logfile"); + $app->system->exec_safe("$webalizer -c ? -n ? -s ? -r ? -q -T -p -o ? ?", $webalizer_conf, $domain, $domain, $domain, $statsdir, $logfile); - exec('chown -R '.$username.':'.$groupname.' '.$statsdir); + exec('chown -R ?:? ?', $username, $groupname, $statsdir); } diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index 6f38f0b403d66dee84f581dad70ed70e5bf21a5d..e2d9e9bb9ec0c1df7dd237e6d3f49aea07ee1a75 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -54,7 +54,7 @@ class cronjob_logfiles extends cronjob { $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); if($server_config['log_retention'] > 0) { - $max_syslog = $server_config['log_retention']; + $max_syslog = $app->functions->intval($server_config['log_retention']); } else { $max_syslog = 10; } @@ -113,18 +113,18 @@ class cronjob_logfiles extends cronjob { } $yesterday2 = date('Ymd', time() - 86400*2); - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday2.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday2.'-access.log'; //* Compress logfile if(@is_file($logfile)) { // Compress yesterdays logfile - exec("gzip -c $logfile > $logfile.gz"); + $app->system->exec_safe("gzip -c ? > ?", $logfile, $logfile . '.gz'); unlink($logfile); } $cron_logfiles = array('cron.log', 'cron_error.log', 'cron_wget.log'); foreach($cron_logfiles as $cron_logfile) { - $cron_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/' . $cron_logfile); + $cron_logfile = $rec['document_root'].'/' . $log_folder . '/' . $cron_logfile; // rename older files (move up by one) $num = $log_retention; @@ -135,8 +135,8 @@ class cronjob_logfiles extends cronjob { // compress current logfile if(is_file($cron_logfile)) { - exec("gzip -c $cron_logfile > $cron_logfile.1.gz"); - exec("cat /dev/null > $cron_logfile"); + $app->system->exec_safe("gzip -c ? > ?", $cron_logfile, $cron_logfile . '.1.gz'); + $app->system->exec_safe("cat /dev/null > ?", $cron_logfile); } // remove older logs $num = $log_retention; @@ -147,7 +147,7 @@ class cronjob_logfiles extends cronjob { } // rotate and compress the error.log - $error_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log'); + $error_logfile = $rec['document_root'].'/' . $log_folder . '/error.log'; // rename older files (move up by one) $num = $log_retention; while($num >= 1) { @@ -156,8 +156,8 @@ class cronjob_logfiles extends cronjob { } // compress current logfile if(is_file($error_logfile)) { - exec("gzip -c $error_logfile > $error_logfile.1.gz"); - exec("cat /dev/null > $error_logfile"); + $app->system->exec_safe("gzip -c ? > ?", $error_logfile, $error_logfile . '.1.gz'); + $app->system->exec_safe("cat /dev/null > ?", $error_logfile); } // delete logfiles after x days (default 10) @@ -175,7 +175,7 @@ class cronjob_logfiles extends cronjob { //* Delete old logfiles in /var/log/ispconfig/httpd/ that were created by vlogger for the hostname of the server exec('hostname -f', $tmp_hostname); if($tmp_hostname[0] != '' && is_dir('/var/log/ispconfig/httpd/'.$tmp_hostname[0])) { - exec('cd /var/log/ispconfig/httpd/'.$tmp_hostname[0]."; find . -mtime +$max_syslog -name '*.log' | xargs rm > /dev/null 2> /dev/null"); + $app->system->exec_safe("cd ?; find . -mtime +$max_syslog -name '*.log' | xargs rm > /dev/null 2> /dev/null", '/var/log/ispconfig/httpd/'.$tmp_hostname[0]); } unset($tmp_hostname); @@ -187,7 +187,7 @@ class cronjob_logfiles extends cronjob { $ispconfig_logfiles = array('ispconfig.log', 'cron.log', 'auth.log'); foreach($ispconfig_logfiles as $ispconfig_logfile) { $num = $max_syslog; - $ispconfig_logfile = escapeshellcmd($conf['ispconfig_log_dir'].'/'.$ispconfig_logfile); + $ispconfig_logfile = $conf['ispconfig_log_dir'].'/'.$ispconfig_logfile; // rename older files (move up by one) while($num >= 1) { if(is_file($ispconfig_logfile . '.' . $num . '.gz')) rename($ispconfig_logfile . '.' . $num . '.gz', $ispconfig_logfile . '.' . ($num + 1) . '.gz'); @@ -195,8 +195,8 @@ class cronjob_logfiles extends cronjob { } // compress current logfile if(is_file($ispconfig_logfile)) { - exec("gzip -c $ispconfig_logfile > $ispconfig_logfile.1.gz"); - exec("cat /dev/null > $ispconfig_logfile"); + $app->system->exec_safe("gzip -c ? > ?", $ispconfig_logfile, $ispconfig_logfile . '.1.gz'); + $app->system->exec_safe("cat /dev/null > ?", $ispconfig_logfile); } // remove older logs $num = $max_syslog; @@ -215,9 +215,9 @@ class cronjob_logfiles extends cronjob { $app->uses('system'); if(is_array($records)) { foreach($records as $rec){ - $tmp_path = realpath(escapeshellcmd($rec['document_root'].'/tmp')); + $tmp_path = realpath($rec['document_root'].'/tmp'); if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){ - exec('cd '.$tmp_path."; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null"); + exec("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path); } } } @@ -240,6 +240,18 @@ class cronjob_logfiles extends cronjob { */ $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id != 0"; $app->dbmaster->query($sql, $tstamp); + + /* + * now delete those entries without a linked datalog entry (datalog_id = 0) + */ + $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id = 0 AND datalog_id = 0"; + $app->dbmaster->query($sql, $tstamp); + + /* + * now delete those entries with a linked datalog entry (datalog_id != 0) only if older than 30 days + */ + $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id = 0 AND datalog_id != 0"; + $app->dbmaster->query($sql, $tstamp - (3600 * 24 * 23)); /* * Delete all remote-actions "done" and older than 7 days diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index fa574311164630cc933539b914e6ca71b5b6c6fa..f261daf468b726200e925474a8fc7aed3713ca85 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -69,9 +69,9 @@ class cronjob_backup extends cronjob { } if(!is_dir($backup_dir)) { - mkdir(escapeshellcmd($backup_dir), $backup_dir_permissions, true); + mkdir($backup_dir, $backup_dir_permissions, true); } else { - chmod(escapeshellcmd($backup_dir), $backup_dir_permissions); + chmod($backup_dir, $backup_dir_permissions); } $run_backups = true; //* mount backup directory, if necessary @@ -127,16 +127,20 @@ class cronjob_backup extends cronjob { if($backup_mode == 'userzip') { //* Create a .zip backup as web user and include also files owned by apache / nginx user $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.zip'; - exec('cd '.escapeshellarg($web_path).' && sudo -u '.escapeshellarg($web_user).' find . -group '.escapeshellarg($web_group).' -print 2> /dev/null | zip -b '.escapeshellarg($backup_tmp).' --exclude=./backup\*'.$backup_excludes.' --symlinks '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' -@', $tmp_output, $retval); - if($retval == 0 || $retval == 12) exec('cd '.escapeshellarg($web_path).' && sudo -u '.escapeshellarg($web_user).' find . -user '.escapeshellarg($http_server_user).' -print 2> /dev/null | zip -b '.escapeshellarg($backup_tmp).' --exclude=./backup\*'.$backup_excludes.' --update --symlinks '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' -@', $tmp_output, $retval); + $app->system->exec_safe('cd ? && sudo -u ? find . -group ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); + $retval = $app->system->last_exec_retcode(); + if($retval == 0 || $retval == 12) $app->system->exec_safe('cd ? && sudo -u ? find . -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --update --symlinks ? -@', $web_path, $web_user, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); + $retval = $app->system->last_exec_retcode(); } else { //* Create a tar.gz backup as root user $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz'; if ($use_pigz) { - exec('tar pcf - --directory '.escapeshellarg($web_path).' . --exclude=./backup\*'.$backup_excludes.' | pigz > '.escapeshellarg($web_backup_dir.'/'.$web_backup_file), $tmp_output, $retval); + $app->system->exec_safe('tar pcf - --exclude=./backup\*'.$backup_excludes.' --directory ? . | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file); + $retval = $app->system->last_exec_retcode(); } else { - exec('tar pczf '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' --exclude=./backup\*'.$backup_excludes.' --directory '.escapeshellarg($web_path).' .', $tmp_output, $retval); -} + $app->system->exec_safe('tar pczf ? --exclude=./backup\*'.$backup_excludes.' --directory ? .', $web_backup_dir.'/'.$web_backup_file, $web_path); + $retval = $app->system->last_exec_retcode(); + } } if($retval == 0 || ($backup_mode != 'userzip' && $retval == 1) || ($backup_mode == 'userzip' && $retval == 12)) { // tar can return 1, zip can return 12(due to harmless warings) and still create valid backups if(is_file($web_backup_dir.'/'.$web_backup_file)){ @@ -225,6 +229,11 @@ class cronjob_backup extends cronjob { if(is_array($records)) { include '/usr/local/ispconfig/server/lib/mysql_clientdb.conf'; + + //* Check mysqldump capabilities + exec('mysqldump --help',$tmp); + $mysqldump_routines = (strpos(implode($tmp),'--routines') !== false)?'--routines':''; + unset($tmp); foreach($records as $rec) { @@ -251,13 +260,16 @@ class cronjob_backup extends cronjob { $db_id = $rec['database_id']; $db_name = $rec['database_name']; $db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql'; - //$command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." -c --add-drop-table --create-options --quick --max_allowed_packet=512M --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; - exec($command, $tmp_output, $retval); - + $command = "mysqldump -h ? -u ? -p? -c --add-drop-table --create-options --quick --max_allowed_packet=512M ".$mysqldump_routines." --result-file=? ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $db_backup_dir.'/'.$db_backup_file, $db_name); + $retval = $app->system->last_exec_retcode(); + //* Compress the backup with gzip / pigz - if($retval == 0) exec("$zip_cmd -c '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file)."' > '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file).".gz'", $tmp_output, $retval); - + if($retval == 0) { + $app->system->exec_safe("$zip_cmd -c ? > ?", $db_backup_dir.'/'.$db_backup_file, $db_backup_dir.'/'.$db_backup_file . '.gz'); + $retval = $app->system->last_exec_retcode(); + } + if($retval == 0){ if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')){ chmod($db_backup_dir.'/'.$db_backup_file.'.gz', 0750); diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php index b05caf70d70af4fc6c86c9c1c3243bf834b2242c..234f02771db841d194e38f3e5050b4e6004e5868 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -69,9 +69,9 @@ class cronjob_backup_mail extends cronjob { $records = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ? AND maildir != ''", intval($conf['server_id'])); if(is_array($records) && $run_backups) { if(!is_dir($backup_dir)) { - mkdir(escapeshellcmd($backup_dir), $backup_dir_permissions, true); + mkdir($backup_dir, $backup_dir_permissions, true); } else { - chmod(escapeshellcmd($backup_dir), $backup_dir_permissions); + chmod($backup_dir, $backup_dir_permissions); } system('which pigz > /dev/null', $ret); if($ret === 0) { @@ -122,24 +122,28 @@ class cronjob_backup_mail extends cronjob { if ($rec['maildir_format'] == 'mdbox') { if (empty($this->tmp_backup_dir)) $this->tmp_backup_dir = $rec['maildir']; // Create temporary backup-mailbox - exec("su -c 'dsync backup -u \"".$rec["email"]."\" mdbox:".$this->tmp_backup_dir."/backup'", $tmp_output, $retval); + $app->system->exec_safe("su -c ?", 'dsync backup -u "'.$rec["email"].'" mdbox:' . $this->tmp_backup_dir . '/backup'); if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; - exec('cd '.$this->tmp_backup_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b '.escapeshellarg($backup_tmp).' -r backup > /dev/null && rm -rf backup', $tmp_output, $retval); - } - else { + $app->system->exec_safe('cd ? && zip ? -b ? -r backup > /dev/null && rm -rf backup', $this->tmp_backup_dir, $mail_backup_dir.'/'.$mail_backup_file, $backup_tmp); + $retval = $app->system->last_exec_retcode(); + } else { $mail_backup_file.='.tar.gz'; if ($use_pigz) { - exec('tar pcf - --directory '.escapeshellarg($this->tmp_backup_dir).' backup | pigz > '.$mail_backup_dir.'/'.$mail_backup_file.' && rm -rf '.$this->tmp_backup_dir.'/backup', $tmp_output, $retval); + $app->system->exec_safe('tar pcf - --directory ? backup | pigz > ? && rm -rf ?', $this->tmp_backup_dir, $mail_backup_dir.'/'.$mail_backup_file, $this->tmp_backup_dir.'/backup'); + $retval = $app->system->last_exec_retcode(); } else { - exec(escapeshellcmd('tar pczf '.$mail_backup_dir.'/'.$mail_backup_file.' --directory '.$this->tmp_backup_dir.' backup && rm -rf '.$this->tmp_backup_dir.'/backup'), $tmp_output, $retval); + $app->system->exec_safe('tar pczf ? --directory ? backup && rm -rf ?', $mail_backup_dir.'/'.$mail_backup_file, $this->tmp_backup_dir, $this->tmp_backup_dir.'/backup'); + $retval = $app->system->last_exec_retcode(); } } if ($retval != 0) { // Cleanup - if (file_exists($this->tmp_backup_dir.'/backup')) exec('rm -rf '.$this->tmp_backup_dir.'/backup'); + if(file_exists($this->tmp_backup_dir . '/backup')) { + $app->system->exec_safe('rm -rf ?', $this->tmp_backup_dir . '/backup'); + } } } else { @@ -154,15 +158,17 @@ class cronjob_backup_mail extends cronjob { //* create archives if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; - exec('cd '.$domain_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b '.escapeshellarg($backup_tmp).' -r '.$source_dir.' > /dev/null', $tmp_output, $retval); + $app->system->exec_safe('cd ? && zip ? -b ? -r ? > /dev/null', $domain_dir, $mail_backup_dir.'/'.$mail_backup_file, $backup_tmp, $source_dir); + $retval = $app->system->last_exec_retcode(); } else { /* Create a tar.gz backup */ $mail_backup_file.='.tar.gz'; if ($use_pigz) { - exec('tar pcf - --directory '.escapeshellarg($domain_dir).' '.escapeshellarg($source_dir).' | pigz > '.$mail_backup_dir.'/'.$mail_backup_file, $tmp_output, $retval); + $app->system->exec_safe('tar pcf - --directory ? ? | pigz > ?', $domain_dir, $source_dir, $mail_backup_dir.'/'.$mail_backup_file); } else { - exec(escapeshellcmd('tar pczf '.$mail_backup_dir.'/'.$mail_backup_file.' --directory '.$domain_dir.' '.$source_dir), $tmp_output, $retval); + $app->system->exec_safe('tar pczf ? --directory ? ?', $mail_backup_dir.'/'.$mail_backup_file, $domain_dir, $source_dir); } + $retval = $app->system->last_exec_retcode(); } } @@ -181,7 +187,9 @@ class cronjob_backup_mail extends cronjob { if(is_file($mail_backup_dir.'/'.$mail_backup_file)) unlink($mail_backup_dir.'/'.$mail_backup_file); // And remove backup-mdbox if ($rec['maildir_format'] == 'mdbox') { - if(file_exists($rec['maildir'].'/backup')) exec("su -c 'rm -rf ".$rec['maildir']."/backup'"); + if(file_exists($rec['maildir'] . '/backup')) { + $app->system->exec_safe('rm -rf ?', $rec['maildir'] . '/backup'); + } } $app->log($mail_backup_file.' NOK:'.implode('',$tmp_output), LOGLEVEL_WARN); } diff --git a/server/lib/classes/cron.d/600-purge_mailboxes.inc.php b/server/lib/classes/cron.d/600-purge_mailboxes.inc.php index 59775fb7be2512c9b10fc2a3d74f7149b83a8a5f..451eb56642751e9ce25b025406855fa70513dcf9 100644 --- a/server/lib/classes/cron.d/600-purge_mailboxes.inc.php +++ b/server/lib/classes/cron.d/600-purge_mailboxes.inc.php @@ -58,7 +58,7 @@ class cronjob_purge_mailboxes extends cronjob { if(is_array($records)) { foreach($records as $rec){ - exec("su -c 'doveadm purge -u \"".$rec["email"]."\"'"); + $app->system->exec_safe("su -c ?", 'doveadm purge -u "' . $rec["email"] . '"'); } } diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php index d03d4a184a7c2626f7d05816c9aa628d80da14f4..b0f6f39c51a96ae205d151539fa7fd0f1c011620 100644 --- a/server/lib/classes/cron.d/900-letsencrypt.inc.php +++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php @@ -35,8 +35,6 @@ class cronjob_letsencrypt extends cronjob { /* this function is optional if it contains no custom code */ public function onPrepare() { - global $app; - parent::onPrepare(); } @@ -44,6 +42,7 @@ class cronjob_letsencrypt extends cronjob { public function onBeforeRun() { global $app; + $app->modules->loadModules('web_module'); return parent::onBeforeRun(); } @@ -51,10 +50,19 @@ class cronjob_letsencrypt extends cronjob { global $app, $conf; $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); - if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { - $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); - $letsencrypt = reset($letsencrypt); - if(is_executable($letsencrypt)) { + if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { + $acme = $app->letsencrypt->get_acme_script(); + if($acme) { + // skip letsencrypt + parent::onRunJob(); + return; + } + + $letsencrypt = $app->letsencrypt->get_certbot_script(); + if($letsencrypt) { + $ret = null; + $val = 0; + $matches = array(); $version = exec($letsencrypt . ' --version 2>&1', $ret, $val); if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $version, $matches)) { $type = strtolower($matches[1]); @@ -65,7 +73,7 @@ class cronjob_letsencrypt extends cronjob { } else { $marker_file = '/usr/local/ispconfig/server/le.restart'; $cmd = "echo '1' > " . $marker_file; - exec($letsencrypt . ' -n renew --post-hook ' . escapeshellarg($cmd)); + $app->system->exec_safe($letsencrypt . ' -n renew --post-hook ?', $cmd); if(file_exists($marker_file) && trim(file_get_contents($marker_file)) == '1') { unlink($marker_file); $app->services->restartServiceDelayed('httpd', 'force-reload'); @@ -85,11 +93,7 @@ class cronjob_letsencrypt extends cronjob { /* this function is optional if it contains no custom code */ public function onAfterRun() { - global $app; - parent::onAfterRun(); } -} - -?> +} \ No newline at end of file diff --git a/server/lib/classes/cron.inc.php b/server/lib/classes/cron.inc.php index 48ca09373901eb3c1cfaf977bdfcf1248531db64..67be475fe37249d1df27d13c1d7408a72e9ba1e0 100644 --- a/server/lib/classes/cron.inc.php +++ b/server/lib/classes/cron.inc.php @@ -264,9 +264,9 @@ class cron { if(!array_key_exists($sField, $this->_aValidValues)) return false; reset($this->_aValidValues[$sField]); - while(($cur = each($this->_aValidValues[$sField])) !== false) { - if($bIncludeCurrent == true && $cur['value'] >= $iValue) return $cur['value']; - elseif($cur['value'] > $iValue) return $cur['value']; + foreach($this->_aValidValues[$sField] as $cur) { + if($bIncludeCurrent == true && $cur >= $iValue) return $cur; + elseif($cur > $iValue) return $cur; } return reset($this->_aValidValues[$sField]); } diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php index 23b3c766e8d12c1357c975d52fedd3bb5c5a221b..27bc7038cf69dfa25efb05b128b0460afa8d8cc0 100644 --- a/server/lib/classes/cronjob.inc.php +++ b/server/lib/classes/cronjob.inc.php @@ -76,18 +76,18 @@ class cronjob { /** run through cronjob sequence **/ - public function run() { + public function run($debug_mode = false) { global $conf; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called run() for class " . get_class($this) . "\n"; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Job has schedule: " . $this->getSchedule() . "\n"; $this->onPrepare(); $run_it = $this->onBeforeRun(); - if($run_it == true) { + if($run_it == true || $debug_mode === true) { $this->onRunJob(); $this->onAfterRun(); + $this->onCompleted(); } - $this->onCompleted(); return; } @@ -100,7 +100,7 @@ class cronjob { // check the run time and values for this job // get previous run data - $data = $app->db->queryOneRecord("SELECT `last_run`, `next_run`, `running` FROM `sys_cron` WHERE `name` = ?", get_class($this)); + $data = $app->db->queryOneRecord("SELECT `last_run`, `next_run`, IF(`last_run` IS NOT NULL AND `last_run` < DATE_SUB(NOW(), INTERVAL 24 HOUR), 0, `running`) as `running` FROM `sys_cron` WHERE `name` = ?", get_class($this)); if($data) { if($data['last_run']) $this->_last_run = $data['last_run']; if($data['next_run']) $this->_next_run = $data['next_run']; @@ -174,7 +174,7 @@ class cronjob { } // child classes may NOT override this! - private function onCompleted() { + protected function onCompleted() { global $app, $conf; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called onCompleted() for class " . get_class($this) . "\n"; diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index b03ad55676ddb3c30cf01c4e12eed534865d8585..9c7269e568624cb7ae2f696929130ad1817b9e63 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -272,7 +272,7 @@ class db if(!is_object($this->_iConnId)) { $this->_iConnId = mysqli_init(); } - if(!mysqli_real_connect($this->_isConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { + if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { if(mysqli_connect_errno() == '111') { // server is not available if($try > 9) { @@ -514,16 +514,16 @@ class db public function escape($sString) { global $app; if(!is_string($sString) && !is_numeric($sString)) { - $app->log('NON-String given in escape function! (' . gettype($sString) . ')', LOGLEVEL_INFO); + $app->log('NON-String given in escape function! (' . gettype($sString) . ')', LOGLEVEL_DEBUG); //$sAddMsg = getDebugBacktrace(); - $app->log($sAddMsg, LOGLEVEL_DEBUG); + //$app->log($sAddMsg, LOGLEVEL_DEBUG); $sString = ''; } $cur_encoding = mb_detect_encoding($sString); if($cur_encoding != "UTF-8") { if($cur_encoding != 'ASCII') { - if(is_object($app) && method_exists($app, 'log')) $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_INFO); + if(is_object($app) && method_exists($app, 'log')) $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_DEBUG); if($cur_encoding) $sString = mb_convert_encoding($sString, 'UTF-8', $cur_encoding); else $sString = mb_convert_encoding($sString, 'UTF-8'); } @@ -709,7 +709,7 @@ class db if($diff_num > 0) { $diffstr = serialize($diffrec_full); - if(isset($_SESSION)) { + if(!empty($_SESSION['s']['user']['username'])) { $username = $_SESSION['s']['user']['username']; } else { $username = 'admin'; @@ -719,8 +719,8 @@ class db if($action == 'INSERT') $action = 'i'; if($action == 'UPDATE') $action = 'u'; if($action == 'DELETE') $action = 'd'; - $sql = "INSERT INTO sys_datalog (dbtable,dbidx,server_id,action,tstamp,user,data) VALUES (?, ?, ?, ?, ?, ?, ?)"; - $app->db->query($sql, $db_table, $dbidx, $server_id, $action, time(), $username, $diffstr); + $sql = "INSERT INTO sys_datalog (dbtable,dbidx,server_id,action,tstamp,user,data,session_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; + $app->db->query($sql, $db_table, $dbidx, $server_id, $action, time(), $username, $diffstr, session_id()); } return true; @@ -759,6 +759,9 @@ class db $old_rec = array(); $index_value = $this->insertID(); + if(!$index_value && isset($insert_data[$index_field])) { + $index_value = $insert_data[$index_field]; + } $new_rec = $this->queryOneRecord("SELECT * FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); $this->datalogSave($tablename, 'INSERT', $index_field, $index_value, $old_rec, $new_rec); diff --git a/server/lib/classes/functions.inc.php b/server/lib/classes/functions.inc.php index e36ed5b04f5f4b8853a2f35bcec5358d7dc9f09e..1d9dd67569448a2cee200ec71281685fd568517a 100644 --- a/server/lib/classes/functions.inc.php +++ b/server/lib/classes/functions.inc.php @@ -425,9 +425,9 @@ class functions { if(file_exists($id_rsa_file)) unset($id_rsa_file); if(file_exists($id_rsa_pub_file)) unset($id_rsa_pub_file); if(!file_exists($id_rsa_file) && !file_exists($id_rsa_pub_file)) { - exec('ssh-keygen -t rsa -C '.$username.'-rsa-key-'.time().' -f '.$id_rsa_file.' -N ""'); + $app->system->exec_safe('ssh-keygen -t rsa -C ? -f ? -N ""', $username.'-rsa-key-'.time(), $id_rsa_file); $app->db->query("UPDATE client SET created_at = UNIX_TIMESTAMP(), id_rsa = ?, ssh_rsa = ? WHERE client_id = ?", $app->system->file_get_contents($id_rsa_file), $app->system->file_get_contents($id_rsa_pub_file), $client_id); - exec('rm -f '.$id_rsa_file.' '.$id_rsa_pub_file); + $app->system->exec_safe('rm -f ? ?', $id_rsa_file, $id_rsa_pub_file); } else { $app->log("Failed to create SSH keypair for ".$username, LOGLEVEL_WARN); } diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php index 305b39f35ba47e235413cf4e364cdc4987cd6ce0..cc83c7413725801af4d0cb6e3192f6a41b833186 100644 --- a/server/lib/classes/ispcmail.inc.php +++ b/server/lib/classes/ispcmail.inc.php @@ -598,7 +598,13 @@ class ispcmail { if($this->smtp_crypt == 'tls') { fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf); fgets($this->_smtp_conn, 515); - stream_socket_enable_crypto($this->_smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } + stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method); } //AUTH LOGIN diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 4f681cc4852e5ed1b08ee6ec05f0769b4883f2c1..f60ad040e72013707babe5c7ebabefc0318bc3f2 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -37,15 +37,143 @@ class letsencrypt { */ private $base_path = '/etc/letsencrypt'; private $renew_config_path = '/etc/letsencrypt/renewal'; - + private $certbot_use_certcommand = false; public function __construct(){ } + + public function get_acme_script() { + $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); + $acme = reset($acme); + if(is_executable($acme)) { + return $acme; + } else { + return false; + } + } + + public function get_acme_command($domains, $key_file, $bundle_file, $cert_file, $server_type = 'apache') { + global $app; + + $letsencrypt = $this->get_acme_script(); + + $cmd = ''; + // generate cli format + foreach($domains as $domain) { + $cmd .= (string) " -d " . $domain; + } + + if($cmd == '') { + return false; + } + + if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) { + $cert_arg = '--fullchain-file ' . escapeshellarg($cert_file); + } else { + $cert_arg = '--fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file); + } + + $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; + + return $cmd; + } + + public function get_certbot_script() { + $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); + $letsencrypt = reset($letsencrypt); + if(is_executable($letsencrypt)) { + return $letsencrypt; + } else { + return false; + } + } + private function install_acme() { + $install_cmd = 'wget -O - https://get.acme.sh | sh'; + $ret = null; + $val = 0; + exec($install_cmd . ' 2>&1', $ret, $val); + + return ($val == 0 ? true : false); + } + + private function get_reload_command() { + global $app, $conf; + + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + + $daemon = ''; + switch ($web_config['server_type']) { + case 'nginx': + $daemon = $web_config['server_type']; + break; + default: + if(is_file($conf['init_scripts'] . '/' . 'httpd24-httpd') || is_dir('/opt/rh/httpd24/root/etc/httpd')) { + $daemon = 'httpd24-httpd'; + } elseif(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) { + $daemon = 'httpd'; + } else { + $daemon = 'apache2'; + } + } + + $cmd = $app->system->getinitcommand($daemon, 'force-reload'); + return $cmd; + } + + public function get_certbot_command($domains) { + global $app; + + $letsencrypt = $this->get_certbot_script(); + + $cmd = ''; + // generate cli format + foreach($domains as $domain) { + $cmd .= (string) " --domains " . $domain; + } + + if($cmd == '') { + return false; + } + + $matches = array(); + $ret = null; + $val = 0; + + $letsencrypt_version = exec($letsencrypt . ' --version 2>&1', $ret, $val); + if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) { + $letsencrypt_version = $matches[2]; + } + if (version_compare($letsencrypt_version, '0.22', '>=')) { + $acme_version = 'https://acme-v02.api.letsencrypt.org/directory'; + } else { + $acme_version = 'https://acme-v01.api.letsencrypt.org/directory'; + } + if (version_compare($letsencrypt_version, '0.30', '>=')) { + $app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG); + $this->certbot_use_certcommand = true; + $webroot_map = array(); + for($i = 0; $i < count($domains); $i++) { + $webroot_map[$domains[$i]] = '/usr/local/ispconfig/interface/acme'; + } + $webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map))); + } else { + $webroot_args = "$cmd --webroot-path /usr/local/ispconfig/interface/acme"; + } + + $cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $cmd --webroot-path /usr/local/ispconfig/interface/acme"; + + return $cmd; + } + public function get_letsencrypt_certificate_paths($domains = array()) { global $app; + if($this->get_acme_script()) { + return false; + } + if(empty($domains)) return false; if(!is_dir($this->renew_config_path)) return false; @@ -133,9 +261,13 @@ class letsencrypt { } private function get_ssl_domain($data) { - $domain = $data['new']['ssl_domain']; - if(!$domain) $domain = $data['new']['domain']; + global $app; + $domain = $data['new']['ssl_domain']; + if(!$domain) { + $domain = $data['new']['domain']; + } + if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') { $domain = $data['new']['domain']; if(substr($domain, 0, 2) === '*.') { @@ -149,8 +281,6 @@ class letsencrypt { } public function get_website_certificate_paths($data) { - global $app; - $ssl_dir = $data['new']['document_root'].'/ssl'; $domain = $this->get_ssl_domain($data); @@ -183,11 +313,17 @@ class letsencrypt { $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); + $use_acme = false; + if($this->get_acme_script()) { + $use_acme = true; + } elseif(!$this->get_certbot_script()) { + // acme and le missing + $this->install_acme(); + } + $tmp = $app->letsencrypt->get_website_certificate_paths($data); $domain = $tmp['domain']; $key_file = $tmp['key']; - $key_file2 = $tmp['key2']; - $csr_file = $tmp['csr']; $crt_file = $tmp['crt']; $bundle_file = $tmp['bundle']; @@ -256,44 +392,88 @@ class letsencrypt { $app->log("There were " . $le_domain_count . " domains in the domain list. LE only supports 100, so we strip the rest.", LOGLEVEL_WARN); } - // generate cli format - foreach($temp_domains as $temp_domain) { - $cli_domain_arg .= (string) " --domains " . $temp_domain; - } - // unset useless data unset($subdomains); unset($aliasdomains); + $this->certbot_use_certcommand = false; $letsencrypt_cmd = ''; + $allow_return_codes = null; + if($use_acme) { + $letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file, $server_type); + $allow_return_codes = array(2); + } else { + $letsencrypt_cmd = $this->get_certbot_command($temp_domains); + } + $success = false; - if(!empty($cli_domain_arg)) { + if($letsencrypt_cmd) { if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); $app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG); - - $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); - $letsencrypt = reset($letsencrypt); - if(is_executable($letsencrypt)) { - $letsencrypt_version = exec($letsencrypt . ' --version 2>&1', $ret, $val); - if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) { - $letsencrypt_version = $matches[2]; - } - if ($letsencrypt_version >=0.22) { - $acme_version = 'https://acme-v02.api.letsencrypt.org/directory'; - } else { - $acme_version = 'https://acme-v01.api.letsencrypt.org/directory'; - } - $letsencrypt_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme"; - $success = $app->system->_exec($letsencrypt_cmd); - } + + $success = $app->system->_exec($letsencrypt_cmd, $allow_return_codes); } else { $app->log("Migration mode active, skipping Let's Encrypt SSL Cert creation for: $domain", LOGLEVEL_DEBUG); $success = true; } } + + if($use_acme === true) { + if(!$success) { + $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN); + $app->log($letsencrypt_cmd, LOGLEVEL_WARN); + return false; + } else { + return true; + } + } - $le_files = $this->get_letsencrypt_certificate_paths($temp_domains); + $le_files = array(); + if($this->certbot_use_certcommand === true && $letsencrypt_cmd) { + $letsencrypt_cmd = $letsencrypt_cmd . " certificates " . $cli_domain_arg; + $output = explode("\n", shell_exec($letsencrypt_cmd . " 2>/dev/null | grep -v '^\$'")); + $le_path = ''; + $skip_to_next = true; + $matches = null; + foreach($output as $outline) { + $outline = trim($outline); + $app->log("LE CERT OUTPUT: " . $outline, LOGLEVEL_DEBUG); + + if($skip_to_next === true && !preg_match('/^\s*Certificate Name/', $outline)) { + continue; + } + $skip_to_next = false; + + if(preg_match('/^\s*Expiry.*?VALID:\s+\D/', $outline)) { + $app->log("Found LE path is expired or invalid: " . $matches[1], LOGLEVEL_DEBUG); + $skip_to_next = true; + continue; + } + + if(preg_match('/^\s*Certificate Path:\s*(\/.*?)\s*$/', $outline, $matches)) { + $app->log("Found LE path: " . $matches[1], LOGLEVEL_DEBUG); + $le_path = dirname($matches[1]); + if(is_dir($le_path)) { + break; + } else { + $le_path = false; + } + } + } + + if($le_path) { + $le_files = array( + 'privkey' => $le_path . '/privkey.pem', + 'chain' => $le_path . '/chain.pem', + 'cert' => $le_path . '/cert.pem', + 'fullchain' => $le_path . '/fullchain.pem' + ); + } + } + if(empty($le_files)) { + $le_files = $this->get_letsencrypt_certificate_paths($temp_domains); + } unset($temp_domains); if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) { @@ -328,12 +508,8 @@ class letsencrypt { $app->system->unlink($key_file); } - if ($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($key_tmp_file), escapeshellcmd($key_file)); - } else { - if(@is_link($key_file)) $app->system->unlink($key_file); - if(@file_exists($key_tmp_file)) exec("ln -s ".escapeshellcmd($key_tmp_file)." ".escapeshellcmd($key_file)); - } + if(@is_link($key_file)) $app->system->unlink($key_file); + if(@file_exists($key_tmp_file)) $app->system->exec_safe("ln -s ? ?", $key_tmp_file, $key_file); if(is_file($crt_file)) { $app->system->copy($crt_file, $crt_file.'.old.'.$date); @@ -341,12 +517,8 @@ class letsencrypt { $app->system->unlink($crt_file); } - if($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($crt_tmp_file), escapeshellcmd($crt_file)); - } else { - if(@is_link($crt_file)) $app->system->unlink($crt_file); - if(@file_exists($crt_tmp_file))exec("ln -s ".escapeshellcmd($crt_tmp_file)." ".escapeshellcmd($crt_file)); - } + if(@is_link($crt_file)) $app->system->unlink($crt_file); + if(@file_exists($crt_tmp_file))$app->system->exec_safe("ln -s ? ?", $crt_tmp_file, $crt_file); if(is_file($bundle_file)) { $app->system->copy($bundle_file, $bundle_file.'.old.'.$date); @@ -354,12 +526,8 @@ class letsencrypt { $app->system->unlink($bundle_file); } - if($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($bundle_tmp_file), escapeshellcmd($bundle_file)); - } else { - if(@is_link($bundle_file)) $app->system->unlink($bundle_file); - if(@file_exists($bundle_tmp_file)) exec("ln -s ".escapeshellcmd($bundle_tmp_file)." ".escapeshellcmd($bundle_file)); - } + if(@is_link($bundle_file)) $app->system->unlink($bundle_file); + if(@file_exists($bundle_tmp_file)) $app->system->exec_safe("ln -s ? ?", $bundle_tmp_file, $bundle_file); return true; } else { @@ -367,6 +535,4 @@ class letsencrypt { return false; } } -} - -?> +} \ No newline at end of file diff --git a/server/lib/classes/modules.inc.php b/server/lib/classes/modules.inc.php index aa95d473b23fd612cc2e4fe0b991e98f86fb305b..3fd788d0a9c4dff7c78704b699418f4ac803a142 100644 --- a/server/lib/classes/modules.inc.php +++ b/server/lib/classes/modules.inc.php @@ -37,18 +37,32 @@ class modules { /* This function is called to load the modules from the mods-enabled or the mods-core folder */ - function loadModules($type) { + function loadModules($type = 'all') { global $app, $conf; $subPath = 'mods-enabled'; - if ($type == 'core') $subPath = 'mods-core'; + if ($type == 'core') { + $subPath = 'mods-core'; + } elseif ($type == 'all') { + $type = ''; + } elseif (!preg_match('/^\w+$/', $type)) { + $app->log('Invalid loadModules type ' . $type, LOGLEVEL_ERROR); + return false; + } else { + $subPath = 'mods-available'; + } + $loaded = false; $modules_dir = $conf['rootpath'].$conf['fs_div'].$subPath.$conf['fs_div']; if (is_dir($modules_dir)) { if ($dh = opendir($modules_dir)) { while (($file = readdir($dh)) !== false) { if($file != '.' && $file != '..' && substr($file, -8, 8) == '.inc.php') { $module_name = substr($file, 0, -8); + if($type && $type !== 'core' && $type != $module_name) { + continue; + } + $loaded = true; include_once $modules_dir.$file; if($this->debug) $app->log('Loading Module: '.$module_name, LOGLEVEL_DEBUG); $app->loaded_modules[$module_name] = new $module_name; @@ -60,6 +74,9 @@ class modules { $app->log('Modules directory missing: '.$modules_dir, LOGLEVEL_ERROR); } + if($type && $type !== 'core' && $loaded === false) { + $app->log('Module ' . $type . ' not found.', LOGLEVEL_ERROR); + } } /* diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 7cc37f94f265f3bb76e353e790b9df2c46fabb77..d8d325fe60fbfc3d1d100ca77ee5c762bbabc9b6 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -200,17 +200,23 @@ class monitor_tools { $distver = 'Wheezy/Sid'; $distid = 'debian60'; $distbaseid = 'debian'; - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '8') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '8') { + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,1) == '8') { $distname = 'Debian'; $distver = 'Jessie'; $distid = 'debian60'; $distbaseid = 'debian'; - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '9') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '9') { + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,1) == '9') { $distname = 'Debian'; $distver = 'Stretch'; $distconfid = 'debian90'; $distid = 'debian60'; $distbaseid = 'debian'; + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,2) == '10') { + $distname = 'Debian'; + $distver = 'Buster'; + $distconfid = 'debian100'; + $distid = 'debian60'; + $distbaseid = 'debian'; } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; @@ -220,7 +226,8 @@ class monitor_tools { } else { $distname = 'Debian'; $distver = 'Unknown'; - $distid = 'debian40'; + $distid = 'debian60'; + $distconfid = 'debian100'; $distbaseid = 'debian'; } } @@ -242,6 +249,14 @@ class monitor_tools { $distver = '11.2'; $distid = 'opensuse112'; $distbaseid = 'opensuse'; + } elseif(stristr(file_get_contents('/etc/os-release'), 'opensuse')) { + $content = file_get_contents('/etc/os-release'); + preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name); + preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version); + $distname = is_array($name) ? $name[1][0] : 'openSUSE'; + $distver = is_array($version) ? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) : 'Unknown'; + $distid = 'opensuse112'; + $distbaseid = 'opensuse'; } else { $distname = 'openSUSE'; $distver = 'Unknown'; @@ -292,8 +307,9 @@ class monitor_tools { $distid = 'centos53'; $distbaseid = 'fedora'; } elseif(stristr($content, 'CentOS Linux release 7')) { + preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version); $distname = 'CentOS'; - $distver = 'Unknown'; + $distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown'; $distbaseid = 'fedora'; $var=explode(" ", $content); $var=explode(".", $var[3]); @@ -586,13 +602,12 @@ class monitor_tools { // Getting the logfile content if ($logfile != '') { - $logfile = escapeshellcmd($logfile); if (stristr($logfile, ';') or substr($logfile, 0, 9) != '/var/log/' or stristr($logfile, '..')) { $log = 'Logfile path error.'; } else { $log = ''; if (is_readable($logfile)) { - $fd = popen('tail -n 100 ' . $logfile, 'r'); + $fd = popen('tail -n 100 ' . escapeshellarg($logfile), 'r'); if ($fd) { while (!feof($fd)) { $log .= fgets($fd, 4096); diff --git a/server/lib/classes/services.inc.php b/server/lib/classes/services.inc.php index 7a8841ece5f9607ea301c698ad472ae924f50607..0914081672af92e04461202457f0ac11e5b59f3b 100644 --- a/server/lib/classes/services.inc.php +++ b/server/lib/classes/services.inc.php @@ -41,7 +41,7 @@ class services { if(is_array($this->registered_services[$service_name])) { $this->delayed_restarts[$service_name] = $action; } else { - $app->log("Unable to add a delayed restart for '$service_name'. Service not registered.", LOGLEVEL_WARNING); + $app->log("Unable to add a delayed restart for '$service_name'. Service not registered.", LOGLEVEL_WARN); } } diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index f4d94743a16c82903215378d2aac5993a4a05af9..551e4e485315948f4bf1da53cabb62022dc79808 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -37,6 +37,9 @@ class system{ var $min_uid = 500; var $min_gid = 500; + private $_last_exec_out = null; + private $_last_exec_retcode = null; + /** * Construct for this class * @@ -716,8 +719,10 @@ class system{ function posix_getgrnam($group) { if(!function_exists('posix_getgrnam')){ $group_datei = $this->server_conf['group_datei']; - $cmd = 'grep -m 1 "^'.$group.':" '.$group_datei; - exec($cmd, $output, $return_var); + $cmd = 'grep -m 1 ? ?'; + $this->exec_safe($cmd, '^'.$group.':', $group_datei); + $output = $this->last_exec_out(); + $return_var = $this->last_exec_retcode(); if($return_var != 0 || !$output[0]) return false; list($f1, $f2, $f3, $f4) = explode(':', $output[0]); $f2 = trim($f2); @@ -829,23 +834,55 @@ class system{ } } - function file_put_contents($filename, $data, $allow_symlink = false) { + function file_put_contents($filename, $data, $allow_symlink = false, $run_as_user = null) { global $app; if($allow_symlink == false && $this->checkpath($filename) == false) { $app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN); return false; } - if(file_exists($filename)) unlink($filename); - return file_put_contents($filename, $data); + if($run_as_user !== null && $run_as_user !== 'root') { + if(!$this->check_run_as_user($run_as_user)) { + $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); + return false; + } + if(file_exists($filename)) { + $cmd = $this->get_sudo_command('rm ' . escapeshellarg($filename), $run_as_user); + $this->exec_safe($cmd); + } + $cmd = $this->get_sudo_command('cat - > ' . escapeshellarg($filename), $run_as_user); + $retval = null; + $stderr = ''; + $this->pipe_exec($cmd, $data, $retval, $stderr); + if($retval > 0) { + $app->log("Safe file_put_contents failed: $stderr", LOGLEVEL_WARN); + return false; + } else { + $size = filesize($filename); + return $size; + } + } else { + if(file_exists($filename)) unlink($filename); + return file_put_contents($filename, $data); + } } - function file_get_contents($filename, $allow_symlink = false) { + function file_get_contents($filename, $allow_symlink = false, $run_as_user = null) { global $app; if($allow_symlink == false && $this->checkpath($filename) == false) { $app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN); return false; } - return file_get_contents($filename, $data); + + if($run_as_user !== null && $run_as_user !== 'root') { + if(!$this->check_run_as_user($run_as_user)) { + $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); + return false; + } + $cmd = $this->get_sudo_command('cat ' . escapeshellarg($filename), $run_as_user) . ' 2>/dev/null'; + return $this->system_safe($cmd); + } else { + return file_get_contents($filename); + } } function rename($filename, $new_filename, $allow_symlink = false) { @@ -857,13 +894,29 @@ class system{ return rename($filename, $new_filename); } - function mkdir($dirname, $allow_symlink = false, $mode = 0777, $recursive = false) { + function mkdir($dirname, $allow_symlink = false, $mode = 0777, $recursive = false, $run_as_user = null) { global $app; if($allow_symlink == false && $this->checkpath($dirname) == false) { $app->log("Action aborted, file is a symlink: $dirname", LOGLEVEL_WARN); return false; } - if(@mkdir($dirname, $mode, $recursive)) { + if($run_as_user !== null && !$this->check_run_as_user($run_as_user)) { + $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); + return false; + } + $success = false; + if($run_as_user !== null && $run_as_user !== 'root') { + $cmd = $this->get_sudo_command('mkdir ' . ($recursive ? '-p ' : '') . escapeshellarg($dirname), $run_as_user) . ' >/dev/null 2>&1'; + $this->exec_safe($cmd); + if($this->last_exec_retcode() != 0) { + $success = false; + } else { + $success = true; + } + } else { + $success = @mkdir($dirname, $mode, $recursive); + } + if($success) { return true; } else { $app->log("mkdir failed: $dirname", LOGLEVEL_DEBUG); @@ -918,7 +971,7 @@ class system{ // Add ($cnt_to-1) number of "../" elements to left side of $cfrom for ($c = 0; $c < (count($a2)-1); $c++) { $cfrom = '../'.$cfrom; } - if(strstr($to,'/etc/letsencrypt/archive/')) $to = str_replace('/etc/letsencrypt/archive/','/etc/letsencrypt/live/',$to); + //if(strstr($to,'/etc/letsencrypt/archive/')) $to = str_replace('/etc/letsencrypt/archive/','/etc/letsencrypt/live/',$to); return symlink($cfrom, $to); } @@ -1073,10 +1126,10 @@ class system{ } else { // Linux if(substr($dist, 0, 4) == 'suse'){ if($action == 'on'){ - exec("chkconfig --add $service &> /dev/null"); + $this->exec_safe("chkconfig --add ? &> /dev/null", $service); } if($action == 'off'){ - exec("chkconfig --del $service &> /dev/null"); + $this->exec_safe("chkconfig --del ? &> /dev/null", $service); } } else { $runlevels = explode(',', $rl); @@ -1375,7 +1428,7 @@ class system{ if(!empty($ifconfig['IP'])){ foreach($ifconfig['IP'] as $key => $val){ if(!strstr($val, 'lo') && !strstr($val, 'lp') && strstr($val, $main_interface)){ - exec('ifconfig '.$val.' down &> /dev/null'); + $this->exec_safe('ifconfig ? down &> /dev/null', $val); unset($ifconfig['INTERFACE'][$val]); } } @@ -1391,7 +1444,7 @@ class system{ $i = -1; } } - exec('ifconfig '.$new_interface.' '.$to.' netmask '.$this->server_conf['server_netzmaske'].' up &> /dev/null'); + $this->exec_safe('ifconfig ? ? netmask ? up &> /dev/null', $new_interface, $to, $this->server_conf['server_netzmaske']); $ifconfig['INTERFACE'][$new_interface] = $to; } } @@ -1535,7 +1588,14 @@ class system{ $found = 0; if(is_array($lines)) { foreach($lines as $line) { - if($strict == 0) { + if($strict == 0 && preg_match('/^REGEX:(.*)$/', $search_pattern)) { + if(preg_match(substr($search_pattern, 6), $line)) { + $out .= $new_line."\n"; + $found = 1; + } else { + $out .= $line; + } + } elseif($strict == 0) { if(stristr($line, $search_pattern)) { $out .= $new_line."\n"; $found = 1; @@ -1573,7 +1633,14 @@ class system{ if($lines = @file($filename)) { $out = ''; foreach($lines as $line) { - if($strict == 0) { + if($strict == 0 && preg_match('/^REGEX:(.*)$/', $search_pattern)) { + if(preg_match(substr($search_pattern, 6), $line)) { + $out .= $new_line."\n"; + $found = 1; + } else { + $out .= $line; + } + } elseif($strict == 0) { if(!stristr($line, $search_pattern)) { $out .= $line; } @@ -1596,22 +1663,20 @@ class system{ $mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail'); if($subfolder != '') { - $dir = escapeshellcmd($maildir_path.'/.'.$subfolder); + $dir = $maildir_path.'/.'.$subfolder; } else { - $dir = escapeshellcmd($maildir_path); + $dir = $maildir_path; } if(!is_dir($dir)) mkdir($dir, 0700, true); if($user != '' && $user != 'root' && $this->is_user($user)) { - $user = escapeshellcmd($user); if(is_dir($dir)) $this->chown($dir, $user); $chown_mdsub = true; } if($group != '' && $group != 'root' && $this->is_group($group)) { - $group = escapeshellcmd($group); if(is_dir($dir)) $this->chgrp($dir, $group); $chgrp_mdsub = true; @@ -1627,22 +1692,13 @@ class system{ chmod($dir, 0700); - /* - if($user != '' && $this->is_user($user) && $user != 'root') { - $user = escapeshellcmd($user); - // I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3 - $group = $user; - exec("chown $user:$group $dir $dir_cur $dir_new $dir_tmp"); - } - */ - //* Add the subfolder to the subscriptions and courierimapsubscribed files if($subfolder != '') { // Courier if($mail_config['pop3_imap_daemon'] == 'courier') { if(!is_file($maildir_path.'/courierimapsubscribed')) { - $tmp_file = escapeshellcmd($maildir_path.'/courierimapsubscribed'); + $tmp_file = $maildir_path.'/courierimapsubscribed'; touch($tmp_file); chmod($tmp_file, 0744); chown($tmp_file, 'vmail'); @@ -1654,7 +1710,7 @@ class system{ // Dovecot if($mail_config['pop3_imap_daemon'] == 'dovecot') { if(!is_file($maildir_path.'/subscriptions')) { - $tmp_file = escapeshellcmd($maildir_path.'/subscriptions'); + $tmp_file = $maildir_path.'/subscriptions'; touch($tmp_file); chmod($tmp_file, 0744); chown($tmp_file, 'vmail'); @@ -1669,14 +1725,14 @@ class system{ } //* Function to create directory paths and chown them to a user and group - function mkdirpath($path, $mode = 0755, $user = '', $group = '') { + function mkdirpath($path, $mode = 0755, $user = '', $group = '', $run_as_user = null) { $path_parts = explode('/', $path); $new_path = ''; if(is_array($path_parts)) { foreach($path_parts as $part) { $new_path .= '/'.$part; if(!@is_dir($new_path)) { - $this->mkdir($new_path); + $this->mkdir($new_path, false, 0777, false, $run_as_user); $this->chmod($new_path, $mode); if($user != '') $this->chown($new_path, $user); if($group != '') $this->chgrp($new_path, $group); @@ -1686,19 +1742,22 @@ class system{ } - function _exec($command) { + function _exec($command, $allow_return_codes = null) { global $app; $out = array(); $ret = 0; $app->log('exec: '.$command, LOGLEVEL_DEBUG); exec($command, $out, $ret); - if($ret != 0) return false; + if(is_array($allow_return_codes) && in_array($ret, $allow_return_codes)) return true; + elseif($ret != 0) return false; else return true; } //* Check if a application is installed function is_installed($appname) { - exec('which '.escapeshellcmd($appname).' 2> /dev/null', $out, $returncode); + $this->exec_safe('which ? 2> /dev/null', $appname); + $out = $this->last_exec_out(); + $returncode = $this->last_exec_retcode(); if(isset($out[0]) && stristr($out[0], $appname) && $returncode == 0) { return true; } else { @@ -1720,10 +1779,10 @@ class system{ if($protect == true && $web_config['web_folder_protection'] == 'y') { //* Add protection - if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) exec('chattr +i '.escapeshellcmd($document_root)); + if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) $this->exec_safe('chattr +i ?', $document_root); } else { //* Remove protection - if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) exec('chattr -i '.escapeshellcmd($document_root)); + if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) $this->exec_safe('chattr -i ?', $document_root); } } @@ -1835,8 +1894,9 @@ class system{ function is_mounted($mountpoint){ //$cmd = 'df 2>/dev/null | grep " '.$mountpoint.'$"'; - $cmd = 'mount 2>/dev/null | grep " on '.$mountpoint.' type "'; - exec($cmd, $output, $return_var); + $cmd = 'mount 2>/dev/null | grep ?'; + $this->exec_safe($cmd, ' on '. $mountpoint . ' type '); + $return_var = $this->last_exec_retcode(); return $return_var == 0 ? true : false; } @@ -1908,7 +1968,8 @@ class system{ // systemd if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ if ($check_service) { - exec("systemctl is-enabled ".$servicename." 2>&1", $out, $ret_val); + $this->exec_safe("systemctl is-enabled ? 2>&1", $servicename); + $ret_val = $this->last_exec_retcode(); } if ($ret_val == 0 || !$check_service) { return 'systemctl '.$action.' '.$servicename.'.service'; @@ -2049,6 +2110,173 @@ class system{ return true; } -} + public function last_exec_out() { + return $this->_last_exec_out; + } + + public function last_exec_retcode() { + return $this->_last_exec_retcode; + } + + public function exec_safe($cmd) { + global $app; + + $arg_count = func_num_args(); + if($arg_count != substr_count($cmd, '?') + 1) { + trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); + return false; + } + if($arg_count > 1) { + $args = func_get_args(); + array_shift($args); + + $pos = 0; + $a = 0; + foreach($args as $value) { + $a++; + + $pos = strpos($cmd, '?', $pos); + if($pos === false) { + break; + } + $value = escapeshellarg($value); + $cmd = substr_replace($cmd, $value, $pos, 1); + $pos += strlen($value); + } + } + + $this->_last_exec_out = null; + $this->_last_exec_retcode = null; + $ret = exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); + + $app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG); + + return $ret; + } + + public function system_safe($cmd) { + call_user_func_array(array($this, 'exec_safe'), func_get_args()); + return implode("\n", $this->_last_exec_out); + } + + public function create_jailkit_user($username, $home_dir, $user_home_dir, $shell = '/bin/bash', $p_user = null, $p_user_home_dir = null) { + // Check if USERHOMEDIR already exists + if(!is_dir($home_dir . '/.' . $user_home_dir)) { + $this->mkdirpath($home_dir . '/.' . $user_home_dir, 0755, $username); + } + + // Reconfigure the chroot home directory for the user + $cmd = 'usermod --home=? ? 2>/dev/null'; + $this->exec_safe($cmd, $home_dir . '/.' . $user_home_dir, $username); + + // Add the chroot user + $cmd = 'jk_jailuser -n -s ? -j ? ?'; + $this->exec_safe($cmd, $shell, $home_dir, $username); + + // We have to reconfigure the chroot home directory for the parent user + if($p_user !== null) { + $cmd = 'usermod --home=? ? 2>/dev/null'; + $this->exec_safe($cmd, $home_dir . '/.' . $p_user_home_dir, $p_user); + } + + return true; + } + + public function create_jailkit_programs($home_dir, $programs = array()) { + if(empty($programs)) { + return true; + } elseif(is_string($programs)) { + $programs = preg_split('/[\s,]+/', $programs); + } + $program_args = ''; + foreach($programs as $prog) { + $program_args .= ' ' . escapeshellarg($prog); + } + + $cmd = 'jk_cp -k ?' . $program_args; + $this->exec_safe($cmd, $home_dir); + + return true; + } + + public function create_jailkit_chroot($home_dir, $app_sections = array()) { + if(empty($app_sections)) { + return true; + } elseif(is_string($app_sections)) { + $app_sections = preg_split('/[\s,]+/', $app_sections); + } + + // Change ownership of the chroot directory to root + $this->chown($home_dir, 'root'); + $this->chgrp($home_dir, 'root'); + + $app_args = ''; + foreach($app_sections as $app_section) { + $app_args .= ' ' . escapeshellarg($app_section); + } + + // Initialize the chroot into the specified directory with the specified applications + $cmd = 'jk_init -f -k -c /etc/jailkit/jk_init.ini -j ?' . $app_args; + $this->exec_safe($cmd, $home_dir); -?> + // Create the temp directory + if(!is_dir($home_dir . '/tmp')) { + $this->mkdirpath($home_dir . '/tmp', 0777); + } else { + $this->chmod($home_dir . '/tmp', 0777, true); + } + + // Fix permissions of the root firectory + $this->chmod($home_dir . '/bin', 0755, true); // was chmod g-w $CHROOT_HOMEDIR/bin + + // mysql needs the socket in the chrooted environment + $this->mkdirpath($home_dir . '/var/run/mysqld'); + + // ln /var/run/mysqld/mysqld.sock $CHROOT_HOMEDIR/var/run/mysqld/mysqld.sock + if(!file_exists("/var/run/mysqld/mysqld.sock")) { + $this->exec_safe('ln ? ?', '/var/run/mysqld/mysqld.sock', $home_dir . '/var/run/mysqld/mysqld.sock'); + } + + return true; + } + + + public function pipe_exec($cmd, $stdin, &$retval = null, &$stderr = null) { + $descriptors = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + + $result = ''; + $pipes = null; + $proc = proc_open($cmd, $descriptors, $pipes); + if(is_resource($proc)) { + fwrite($pipes[0], $stdin); + fclose($pipes[0]); + + $result = stream_get_contents($pipes[1]); + $stderr = stream_get_contents($pipes[2]); + fclose($pipes[1]); + fclose($pipes[2]); + + $retval = proc_close($proc); + + return $result; + } else { + return false; + } + } + + private function get_sudo_command($cmd, $run_as_user) { + return 'sudo -u ' . escapeshellarg($run_as_user) . ' sh -c ' . escapeshellarg($cmd); + } + + private function check_run_as_user($username) { + if(preg_match('/^[a-zA-Z0-9_\-]+$/', $username)) { + return true; + } else{ + return false; + } + } +} diff --git a/server/mods-available/mail_module.inc.php b/server/mods-available/mail_module.inc.php index bc6d2901457169db191ef871c8acbabff74c03a1..e13839d344fe0ae8245e3bf22f521b37b00212eb 100644 --- a/server/mods-available/mail_module.inc.php +++ b/server/mods-available/mail_module.inc.php @@ -55,7 +55,14 @@ class mail_module { 'mail_content_filter_delete', 'mail_mailinglist_insert', 'mail_mailinglist_update', - 'mail_mailinglist_delete'); + 'mail_mailinglist_delete', + 'spamfilter_users_insert', + 'spamfilter_users_update', + 'spamfilter_users_delete', + 'spamfilter_wblist_insert', + 'spamfilter_wblist_update', + 'spamfilter_wblist_delete' + ); //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. @@ -102,7 +109,11 @@ class mail_module { $app->modules->registerTableHook('mail_get', 'mail_module', 'process'); $app->modules->registerTableHook('mail_content_filter', 'mail_module', 'process'); $app->modules->registerTableHook('mail_mailinglist', 'mail_module', 'process'); + $app->modules->registerTableHook('spamfilter_users', 'mail_module', 'process'); + $app->modules->registerTableHook('spamfilter_wblist', 'mail_module', 'process'); + $app->services->registerService('rspamd', 'mail_module', 'restartRspamd'); + $app->services->registerService('postfix', 'mail_module', 'restartPostfix'); } /* @@ -154,9 +165,50 @@ class mail_module { if($action == 'u') $app->plugins->raiseEvent('mail_mailinglist_update', $data); if($action == 'd') $app->plugins->raiseEvent('mail_mailinglist_delete', $data); break; + case 'spamfilter_users': + if($action == 'i') $app->plugins->raiseEvent('spamfilter_users_insert', $data); + if($action == 'u') $app->plugins->raiseEvent('spamfilter_users_update', $data); + if($action == 'd') $app->plugins->raiseEvent('spamfilter_users_delete', $data); + break; + case 'spamfilter_wblist': + if($action == 'i') $app->plugins->raiseEvent('spamfilter_wblist_insert', $data); + if($action == 'u') $app->plugins->raiseEvent('spamfilter_wblist_update', $data); + if($action == 'd') $app->plugins->raiseEvent('spamfilter_wblist_delete', $data); + break; } // end switch } // end function + function restartRspamd($action = 'reload') { + global $app; + + $app->uses('system'); + + $daemon = 'rspamd'; + + $retval = array('output' => '', 'retval' => 0); + if($action == 'restart') { + exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']); + } else { + exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']); + } + return $retval; + } + + function restartPostfix($action = 'reload') { + global $app; + + $app->uses('system'); + + $daemon = 'postfix'; + + $retval = array('output' => '', 'retval' => 0); + if($action == 'restart') { + exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']); + } else { + exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']); + } + return $retval; + } } // end class ?> diff --git a/server/mods-available/remoteaction_core_module.inc.php b/server/mods-available/remoteaction_core_module.inc.php index 807de5060ab28bfbee5257760b812e60ba65a655..3b6bb9fb497366c4e2d05d2324777a6eb0273620 100644 --- a/server/mods-available/remoteaction_core_module.inc.php +++ b/server/mods-available/remoteaction_core_module.inc.php @@ -150,12 +150,12 @@ class remoteaction_core_module { $parts = explode(':', $action['action_param']); $veid = intval($parts[0]); $template_cache_dir = '/vz/template/cache/'; - $template_name = escapeshellcmd($parts[1]); + $template_name = $parts[1]; if($veid > 0 && $template_name != '' && is_dir($template_cache_dir)) { - $command = "vzdump --suspend --compress --stdexcludes --dumpdir $template_cache_dir $veid"; - exec($command); - exec("mv ".$template_cache_dir."vzdump-openvz-".$veid."*.tgz ".$template_cache_dir.$template_name.".tar.gz"); - exec("rm -f ".$template_cache_dir."vzdump-openvz-".$veid."*.log"); + $command = "vzdump --suspend --compress --stdexcludes --dumpdir ? ?"; + $app->system->exec_safe($command, $template_cache_dir, $veid); + $app->system->exec_safe("mv ?*.tgz ?", $template_cache_dir."vzdump-openvz-".$veid, $template_cache_dir.$template_name.".tar.gz"); + $app->system->exec_safe("rm -f ?*.log", $template_cache_dir."vzdump-openvz-".$veid); } $this->_actionDone($action['action_id'], 'ok'); /* this action takes so much time, @@ -191,7 +191,8 @@ class remoteaction_core_module { } private function _doIspCUpdate($action) { - + global $app; + // Ensure that this code is not executed twice as this would cause a loop in case of a failure $this->_actionDone($action['action_id'], 'ok'); @@ -210,14 +211,14 @@ class remoteaction_core_module { chdir("/tmp"); /* delete the old files (if there are any...) */ - exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("rm ?", "/tmp/ISPConfig-" . $new_version . ".tar.gz"); exec("rm /tmp/ispconfig3_install -R"); /* get the newest version */ - exec("wget http://www.ispconfig.org/downloads/ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("wget ?", "http://www.ispconfig.org/downloads/ISPConfig-" . $new_version . ".tar.gz"); /* extract the files */ - exec("tar xvfz ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("tar xvfz ?", "ISPConfig-" . $new_version . ".tar.gz"); /* * Initialize the automated update @@ -229,7 +230,7 @@ class remoteaction_core_module { /* * do some clean-up */ - exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("rm ?", "/tmp/ISPConfig-" . $new_version . ".tar.gz"); /* * go back to the "old path" diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index bfa4526fc359aa482f1bfe82dfabfe27f34234db..59e97629cb6d1a2694ce62d2365e62a42c301d8d 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -332,36 +332,38 @@ class apache2_plugin { $ssl_cnf_file = $ssl_dir.'/openssl.conf'; $app->system->file_put_contents($ssl_cnf_file, $ssl_cnf); - $rand_file = escapeshellcmd($rand_file); - $key_file2 = escapeshellcmd($key_file2); + $rand_file = $rand_file; + $key_file2 = $key_file2; $openssl_cmd_key_file2 = $key_file2; if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate - $key_file = escapeshellcmd($key_file); + $key_file = $key_file; $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $ssl_days = 3650; - $csr_file = escapeshellcmd($csr_file); + $csr_file = $csr_file; $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate - $config_file = escapeshellcmd($ssl_cnf_file); - $crt_file = escapeshellcmd($crt_file); + $config_file = $ssl_cnf_file; + $crt_file = $crt_file; $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file2 2048"); - exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); - exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file2 -out $openssl_cmd_key_file"); + $app->system->exec_safe("openssl genrsa -des3 -rand ? -passout pass:? -out ? 2048", $rand_file, $ssl_password, $openssl_cmd_key_file2); + $app->system->exec_safe("openssl req -new -sha256 -passin pass:? -passout pass:? -key ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $ssl_days, $config_file); + $app->system->exec_safe("openssl rsa -passin pass:? -in ? -out ?", $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_key_file); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file"); + $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); + if(filesize($crt_file) == 0 || !file_exists($crt_file)) { + $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); + } }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -in $openssl_cmd_csr_file -out $openssl_cmd_crt_file -days $ssl_days -config $config_file "); + $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ? ", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; @@ -402,7 +404,8 @@ class apache2_plugin { if($data["new"]["ssl_action"] == 'save') { $tmp = array(); $crt_data = ''; - exec('openssl x509 -noout -text -in '.escapeshellarg($crt_file),$tmp); + $app->system->exec_safe('openssl x509 -noout -text -in ?', $crt_file); + $tmp = $app->system->last_exec_out(); $crt_data = implode("\n",$tmp); if(stristr($crt_data,'.acme.invalid')) { $data["new"]["ssl_action"] = ''; @@ -473,7 +476,7 @@ class apache2_plugin { if($data['new']['ssl_action'] == 'del') { if(file_exists($web_config['CA_path'].'/openssl.cnf') && !is_link($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke ".escapeshellcmd($crt_file)); + $app->system->exec_safe("openssl ca -batch -config ? -passin pass:? -revoke ?", $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $crt_file); $app->log("Revoking CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; $app->system->unlink($csr_file); @@ -591,31 +594,31 @@ class apache2_plugin { //* Check if a ispconfigend user and group exists and create them if(!$app->system->is_group('ispconfigend')) { - exec('groupadd --gid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('groupadd --gid ? ispconfigend', $connect_userid_to_webid_start + 10000); } if(!$app->system->is_user('ispconfigend')) { - exec('useradd -g ispconfigend -d /usr/local/ispconfig --uid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('useradd -g ispconfigend -d /usr/local/ispconfig --uid ? ispconfigend', $connect_userid_to_webid_start + 10000); } } else { $fixed_uid_param = ''; $fixed_gid_param = ''; } - $groupname = escapeshellcmd($data['new']['system_group']); + $groupname = $data['new']['system_group']; if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - exec('groupadd '.$fixed_gid_param.' '.$groupname); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname); + $app->system->exec_safe('groupadd ' . $fixed_gid_param . ' ?', $groupname); + if($apache_chrooted) $app->system->exec_safe('chroot ? groupadd ?', $web_config['website_basedir'], $groupname); $app->log('Adding the group: '.$groupname, LOGLEVEL_DEBUG); } - $username = escapeshellcmd($data['new']['system_user']); + $username = $data['new']['system_user']; if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { if($web_config['add_web_users_to_sshusers_group'] == 'y') { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } else { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } $app->log('Adding the user: '.$username, LOGLEVEL_DEBUG); } @@ -638,7 +641,7 @@ class apache2_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // create the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -665,13 +668,12 @@ class apache2_plugin { } //* Unmount the old log directory bfore we move the log dir - //exec('fuser -km '.escapeshellcmd($old_dir.'/log')); - exec('umount '.escapeshellcmd($data['old']['document_root'].'/log')); + $app->system->exec_safe('umount ?', $data['old']['document_root'].'/log'); //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); $app->system->web_folder_protection($data['old']['document_root'], false); - exec('mv '.escapeshellarg($data['old']['document_root']).' '.escapeshellarg($new_dir)); + $app->system->exec_safe('mv ? ?', $data['old']['document_root'], $new_dir); //$app->system->rename($data['old']['document_root'],$new_dir); $app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir, LOGLEVEL_DEBUG); @@ -679,17 +681,17 @@ class apache2_plugin { $data['new']['php_open_basedir'] = str_replace($data['old']['document_root'], $data['new']['document_root'], $data['old']['php_open_basedir']); //* Change the owner of the website files to the new website owner - exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir); + $app->system->exec_safe('chown --recursive --from=?:? ?:? ?', $data['old']['system_user'], $data['old']['system_group'], $data['new']['system_user'], $data['new']['system_group'], $new_dir); //* Change the home directory and group of the website user - $command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' ; usermod'; - $command .= ' --home '.escapeshellcmd($data['new']['document_root']); - $command .= ' --gid '.escapeshellcmd($data['new']['system_group']); - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - exec($command); + $command = 'killall -u ? ; usermod'; + $command .= ' --home ?'; + $command .= ' --gid ?'; + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user'], $data['new']['document_root'], $data['new']['system_group'], $data['new']['system_user']); } - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + if($apache_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* Change the log mount /* @@ -711,7 +713,7 @@ class apache2_plugin { $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); } @@ -723,7 +725,6 @@ class apache2_plugin { if(!is_dir($data['new']['document_root'].'/' . $web_folder)) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder); if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/error') and $data['new']['errordocs']) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/error'); if($data['new']['stats_type'] != '' && !is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); - //if(!is_dir($data['new']['document_root'].'/'.$log_folder)) exec('mkdir -p '.$data['new']['document_root'].'/'.$log_folder); if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin'); if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp'); @@ -747,7 +748,7 @@ class apache2_plugin { // Remove the symlink for the site, if site is renamed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']); + if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) $app->system->exec_safe('rm -rf ?', '/var/log/ispconfig/httpd/'.$data['old']['domain']); if(is_link($data['old']['document_root'].'/'.$old_log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$old_log_folder); //* remove old log mount @@ -755,19 +756,18 @@ class apache2_plugin { $app->system->removeLine('/etc/fstab', $fstab_line); //* Unmount log directory - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); + $app->system->exec_safe('umount ?', $data['old']['document_root'].'/'.$old_log_folder); } //* Create the log dir if nescessary and mount it if(!is_dir($data['new']['document_root'].'/'.$log_folder) || !is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain']) || is_link($data['new']['document_root'].'/'.$log_folder)) { if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder); - if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']); + if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) $app->system->exec_safe('mkdir -p ?', '/var/log/ispconfig/httpd/'.$data['new']['domain']); $app->system->mkdirpath($data['new']['document_root'].'/'.$log_folder); $app->system->chown($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chgrp($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chmod($data['new']['document_root'].'/'.$log_folder, 0755); - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); //* add mountpoint to fstab $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait'; $fstab_line .= @($web_config['network_filesystem'] == 'y')?',_netdev 0 0':' 0 0'; @@ -792,7 +792,7 @@ class apache2_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // remove the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -813,11 +813,10 @@ class apache2_plugin { } // create the symlinks, if not exist if(!is_link($tmp_symlink)) { - // exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); if ($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($data["new"]["document_root"]), escapeshellcmd($tmp_symlink)); + $app->system->create_relative_link($data["new"]["document_root"], $tmp_symlink); } else { - exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); + $app->system->exec_safe("ln -s ? ?", $data["new"]["document_root"]."/", $tmp_symlink); } $app->log('Creating symlink: ln -s '.$data['new']['document_root'].'/ '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -837,69 +836,67 @@ class apache2_plugin { // Copy the error pages if($data['new']['errordocs']) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp '. $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } //* Copy the web skeleton files only when there is no index.ph or index.html file yet if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { - if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2))) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { + if(!file_exists($data['new']['document_root'] . '/' . $web_folder . '/index.html')) { + $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_' . substr($conf['language'], 0, 2), $data['new']['document_root'] . '/' . $web_folder . '/index.html'); + } if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf-custom/index/robots.txt')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf-custom/index/.htaccess')) { - // exec('cp ' . $conf['rootpath'] . '/conf-custom/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); - //} } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/index.html'); } else { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf/index/robots.txt')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf/index/.htaccess')) exec('cp ' . $conf['rootpath'] . '/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); } } } - exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + $app->system->exec_safe('chmod -R a+r ?', $data['new']['document_root'].'/' . $web_folder . '/'); //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); - exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); + $app->system->exec_safe('chown -R ?:? ?', $data['new']['system_user'], $data['new']['system_group'], $error_page_path); } // end copy error docs // Set the quota for the user, but only for vhosts, not vhostsubdomains or vhostalias @@ -914,39 +911,39 @@ class apache2_plugin { } // get the primitive folder for document_root and the filesystem, will need it later. - $df_output=explode(" ", exec("df -T " . escapeshellarg($data['new']['document_root']) . "|awk 'END{print \$2,\$NF}'")); + $df_output=explode(" ", $app->system->exec_safe("df -T ?|awk 'END{print \$2,\$NF}'", $data['new']['document_root'])); $file_system = $df_output[0]; $primitive_root = $df_output[1]; if($file_system == 'xfs') { - exec("xfs_quota -x -c " . escapeshellarg("limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username) . " " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username, $primitive_root); // xfs only supports timers globally, not per user. - exec("xfs_quota -x -c 'timer -bir -i 604800' " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c 'timer -bir -i 604800' ?", $primitive_root); unset($project_uid, $username_position, $xfs_projects); unset($primitive_root, $df_output, $mb_hard, $mb_soft); } else { if($app->system->is_installed('setquota')) { - exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); - exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); + $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); + $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } } } if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) { // Chown and chmod the directories below the document root - $app->system->_exec('chown -R '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); // The document root itself has to be owned by root in normal level and by the web owner in security level 20 if($web_config['security_level'] == 20) { - $app->system->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); } else { - $app->system->_exec('chown root:root '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown root:root ?', $data['new']['document_root'].'/' . $web_folder); } } //* add the Apache user to the client group if this is a vhost and security level is set to high, no matter if this is an insert or update and regardless of set_folder_permissions_on_update - if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user'])); + if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, $web_config['user']); //* If the security level is set to high if(($this->action == 'insert' && $data['new']['type'] == 'vhost') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhost')) { @@ -975,18 +972,18 @@ class apache2_plugin { if($web_config['add_web_users_to_sshusers_group'] == 'y') { $command = 'usermod'; $command .= ' --groups sshusers'; - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - $app->system->_exec($command); + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user']); } //* if we have a chrooted Apache environment if($apache_chrooted) { - $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* add the apache user to the client group in the chroot environment $tmp_groupfile = $app->system->server_conf['group_datei']; $app->system->server_conf['group_datei'] = $web_config['website_basedir'].'/etc/group'; - $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user'])); + $app->system->add_user_to_group($groupname, $web_config['user']); $app->system->server_conf['group_datei'] = $tmp_groupfile; unset($tmp_groupfile); } @@ -1089,7 +1086,9 @@ class apache2_plugin { if($data['new']['type'] == 'vhost') { // Change the ownership of the error log to the root user - if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) exec('touch '.escapeshellcmd('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')); + if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) { + $app->system->exec_safe('touch ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log'); + } $app->system->chown('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); $app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); } @@ -1162,7 +1161,7 @@ class apache2_plugin { $vhost_data['php_open_basedir'] = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; $vhost_data['ssl_domain'] = $data['new']['ssl_domain']; $vhost_data['has_custom_php_ini'] = $has_custom_php_ini; - $vhost_data['custom_php_ini_dir'] = escapeshellcmd($custom_php_ini_dir); + $vhost_data['custom_php_ini_dir'] = $custom_php_ini_dir; $vhost_data['logging'] = $web_config['logging']; // Custom Apache directives @@ -1223,8 +1222,9 @@ class apache2_plugin { $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ? AND `server_id` = ?", $data['new']['ssl'], 'n', $data['new']['domain'], $conf['server_id']); } } - - if(@is_file($bundle_file)) $vhost_data['has_bundle_cert'] = 1; + + // Use separate bundle file only for apache versions < 2.4.8 + if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1; // HTTP/2.0 ? $vhost_data['enable_http2'] = 'n'; @@ -1451,13 +1451,10 @@ class apache2_plugin { if (!is_dir($fastcgi_starter_path)) { $app->system->mkdirpath($fastcgi_starter_path); - //exec('chown '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.escapeshellcmd($fastcgi_starter_path)); - $app->log('Creating fastcgi starter script directory: '.$fastcgi_starter_path, LOGLEVEL_DEBUG); } - //exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.escapeshellcmd($fastcgi_starter_path)); $app->system->chown($fastcgi_starter_path, $data['new']['system_user']); $app->system->chgrp($fastcgi_starter_path, $data['new']['system_group']); if($web_config['security_level'] == 10) { @@ -1479,29 +1476,29 @@ class apache2_plugin { } if($has_custom_php_ini) { - $fcgi_tpl->setVar('php_ini_path', escapeshellcmd($custom_php_ini_dir)); + $fcgi_tpl->setVar('php_ini_path', $custom_php_ini_dir); } else { if($default_fastcgi_php){ - $fcgi_tpl->setVar('php_ini_path', escapeshellcmd($fastcgi_config['fastcgi_phpini_path'])); + $fcgi_tpl->setVar('php_ini_path', $fastcgi_config['fastcgi_phpini_path']); } else { - $fcgi_tpl->setVar('php_ini_path', escapeshellcmd($custom_fastcgi_php_ini_dir)); + $fcgi_tpl->setVar('php_ini_path', $custom_fastcgi_php_ini_dir); } } - $fcgi_tpl->setVar('document_root', escapeshellcmd($data['new']['document_root'])); - $fcgi_tpl->setVar('php_fcgi_children', escapeshellcmd($fastcgi_config['fastcgi_children'])); - $fcgi_tpl->setVar('php_fcgi_max_requests', escapeshellcmd($fastcgi_config['fastcgi_max_requests'])); + $fcgi_tpl->setVar('document_root', $data['new']['document_root']); + $fcgi_tpl->setVar('php_fcgi_children', $fastcgi_config['fastcgi_children']); + $fcgi_tpl->setVar('php_fcgi_max_requests', $fastcgi_config['fastcgi_max_requests']); if($default_fastcgi_php){ - $fcgi_tpl->setVar('php_fcgi_bin', escapeshellcmd($fastcgi_config['fastcgi_bin'])); + $fcgi_tpl->setVar('php_fcgi_bin', $fastcgi_config['fastcgi_bin']); } else { - $fcgi_tpl->setVar('php_fcgi_bin', escapeshellcmd($custom_fastcgi_php_executable)); + $fcgi_tpl->setVar('php_fcgi_bin', $custom_fastcgi_php_executable); } $fcgi_tpl->setVar('security_level', intval($web_config['security_level'])); - $fcgi_tpl->setVar('domain', escapeshellcmd($data['new']['domain'])); + $fcgi_tpl->setVar('domain', $data['new']['domain']); $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; - $fcgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir)); + $fcgi_tpl->setVar('open_basedir', $php_open_basedir); - $fcgi_starter_script = escapeshellcmd($fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : '')); + $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''); $app->system->file_put_contents($fcgi_starter_script, $fcgi_tpl->grab()); unset($fcgi_tpl); @@ -1561,14 +1558,15 @@ class apache2_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } $pool_dir = trim($pool_dir); + if(substr($pool_dir, -1) != '/') $pool_dir .= '/'; $pool_name = 'web'.$data['new']['domain_id']; - $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if($data['new']['php_fpm_use_socket'] == 'y'){ @@ -1580,6 +1578,8 @@ class apache2_plugin { } $tpl->setVar('use_tcp', $use_tcp); $tpl->setVar('use_socket', $use_socket); + $tpl->setVar('php_fpm_chroot', $data['new']['php_fpm_chroot']); + $tpl->setVar('php_fpm_chroot_web_folder', sprintf('/%s', trim($web_folder, '/'))); $fpm_socket = $socket_dir.$pool_name.'.sock'; $tpl->setVar('fpm_socket', $fpm_socket); $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1); @@ -1619,8 +1619,8 @@ class apache2_plugin { // This works because PHP "rewrites" a symlink to the physical path $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; - $cgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir)); - $cgi_tpl->setVar('document_root', escapeshellcmd($data['new']['document_root'])); + $cgi_tpl->setVar('open_basedir', $php_open_basedir); + $cgi_tpl->setVar('document_root', $data['new']['document_root']); // This will NOT work! //$cgi_tpl->setVar('open_basedir', '/var/www/' . $data['new']['domain']); @@ -1629,12 +1629,12 @@ class apache2_plugin { $cgi_tpl->setVar('has_custom_php_ini', $has_custom_php_ini); if($has_custom_php_ini) { - $cgi_tpl->setVar('php_ini_path', escapeshellcmd($custom_php_ini_dir)); + $cgi_tpl->setVar('php_ini_path', $custom_php_ini_dir); } else { - $cgi_tpl->setVar('php_ini_path', escapeshellcmd($fastcgi_config['fastcgi_phpini_path'])); + $cgi_tpl->setVar('php_ini_path', $fastcgi_config['fastcgi_phpini_path']); } - $cgi_starter_script = escapeshellcmd($cgi_starter_path.$cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : '')); + $cgi_starter_script = $cgi_starter_path.$cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''); $app->system->file_put_contents($cgi_starter_script, $cgi_tpl->grab()); unset($cgi_tpl); @@ -1654,7 +1654,7 @@ class apache2_plugin { } - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_file = $web_config['vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'; //* Make a backup copy of vhost file if(file_exists($vhost_file)) $app->system->copy($vhost_file, $vhost_file.'~'); @@ -1747,17 +1747,17 @@ class apache2_plugin { //* Set the symlink to enable the vhost //* First we check if there is a old type of symlink and remove it - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) $app->system->unlink($vhost_symlink); //* Remove old or changed symlinks if($data['new']['subdomain'] != $data['old']['subdomain'] or $data['new']['active'] == 'n') { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -1766,9 +1766,9 @@ class apache2_plugin { //* New symlink if($data['new']['subdomain'] == '*') { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; } else { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; } if($data['new']['active'] == 'y' && !is_link($vhost_symlink)) { symlink($vhost_file, $vhost_symlink); @@ -1777,43 +1777,45 @@ class apache2_plugin { // remove old symlink and vhost file, if domain name of the site has changed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; $app->system->unlink($vhost_file); $app->log('Removing file: '.$vhost_file, LOGLEVEL_DEBUG); } //* Create .htaccess and .htpasswd file for website statistics //if(!is_file($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess') or $data['old']['document_root'] != $data['new']['document_root']) { - if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); - $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; - $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); - $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); - unset($ht_file); - //} - if(!is_file($data['new']['document_root'].'/web/stats/.htpasswd_stats') || $data['new']['stats_password'] != $data['old']['stats_password']) { - if(trim($data['new']['stats_password']) != '') { - $htp_file = 'admin:'.trim($data['new']['stats_password']); - $app->system->web_folder_protection($data['new']['document_root'], false); - $app->system->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); - $app->system->web_folder_protection($data['new']['document_root'], true); - $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); - unset($htp_file); + if($data['new']['stats_type'] != '') { + if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); + $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; + $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); + $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); + unset($ht_file); + + if(!is_file($data['new']['document_root'].'/web/stats/.htpasswd_stats') || $data['new']['stats_password'] != $data['old']['stats_password']) { + if(trim($data['new']['stats_password']) != '') { + $htp_file = 'admin:'.trim($data['new']['stats_password']); + $app->system->web_folder_protection($data['new']['document_root'], false); + $app->system->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); + $app->system->web_folder_protection($data['new']['document_root'], true); + $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); + unset($htp_file); + } } } @@ -1822,7 +1824,12 @@ class apache2_plugin { $this->awstats_update($data, $web_config); } - $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir); + //* Remove Stats-Folder when Statistics set to none + if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { + $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); + } + + $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); $this->hhvm_update($data, $web_config); if($web_config['check_apache_config'] == 'y') { @@ -2019,14 +2026,10 @@ class apache2_plugin { if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias'){ if(is_array($log_folders) && !empty($log_folders)){ foreach($log_folders as $log_folder){ - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } } else { - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } // remove letsencrypt if it exists (renew will always fail otherwise) @@ -2066,19 +2069,19 @@ class apache2_plugin { } else { //* This is a website // Deleting the vhost file, symlink and the data directory - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -2088,11 +2091,11 @@ class apache2_plugin { $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') { - $docroot = escapeshellcmd($data['old']['document_root']); + $docroot = $data['old']['document_root']; if($docroot != '' && !stristr($docroot, '..')) { if($data['old']['type'] == 'vhost') { // this is a vhost - we delete everything in here. - exec('rm -rf '.$docroot); + $app->system->exec_safe('rm -rf ?', $docroot); } elseif(!stristr($data['old']['web_folder'], '..')) { // this is a vhost subdomain // IMPORTANT: do some folder checks before we delete this! @@ -2142,7 +2145,7 @@ class apache2_plugin { unset($used_paths); } - if($do_delete === true && $delete_folder !== '') exec('rm -rf '.$docroot.'/'.$delete_folder); + if($do_delete === true && $delete_folder !== '') $app->system->exec_safe('rm -rf ?', $docroot.'/'.$delete_folder); unset($delete_folder); unset($path_elements); @@ -2154,12 +2157,12 @@ class apache2_plugin { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $fastcgi_config['fastcgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($fastcgi_starter_path)) { - exec('rm -rf '.$fastcgi_starter_path); + $app->system->exec_safe('rm -rf ?', $fastcgi_starter_path); } } else { $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id']; if (file_exists($fcgi_starter_script)) { - exec('rm -f '.$fcgi_starter_script); + $app->system->exec_safe('rm -f ?', $fcgi_starter_script); } } } @@ -2179,12 +2182,12 @@ class apache2_plugin { $cgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['cgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($cgi_starter_path)) { - exec('rm -rf '.$cgi_starter_path); + $app->system->exec_safe('rm -rf ?', $cgi_starter_path); } } else { $cgi_starter_script = $cgi_starter_path.'php-cgi-starter_web'.$data['old']['domain_id']; if (file_exists($cgi_starter_script)) { - exec('rm -f '.$cgi_starter_script); + $app->system->exec_safe('rm -f ?', $cgi_starter_script); } } } @@ -2213,16 +2216,15 @@ class apache2_plugin { } // Delete the log file directory - $vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/httpd/'.$data['old']['domain']); - if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) exec('rm -rf '.$vhost_logfile_dir); + $vhost_logfile_dir = '/var/log/ispconfig/httpd/'.$data['old']['domain']; + if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) $app->system->exec_safe('rm -rf ?', $vhost_logfile_dir); $app->log('Removing website logfile directory: '.$vhost_logfile_dir, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost') { //delete the web user - $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' ; userdel'; - $command .= ' '.escapeshellcmd($data['old']['system_user']); - exec($command); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $command = 'killall -u ? ; userdel ?'; + $app->system->exec_safe($command, $data['old']['system_user'], $data['old']['system_user']); + if($apache_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); } @@ -2254,7 +2256,7 @@ class apache2_plugin { if($mount_backup){ $web_backup_dir = $backup_dir.'/web'.$data_old['domain_id']; //** do not use rm -rf $web_backup_dir because database(s) may exits - exec(escapeshellcmd('rm -f '.$web_backup_dir.'/web'.$data_old['domain_id'].'_').'*'); + $app->system->exec_safe('rm -f ?*', $web_backup_dir.'/web'.$data_old['domain_id'].'_'); //* cleanup database $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename LIKE ?"; $app->db->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%"); @@ -2309,7 +2311,7 @@ class apache2_plugin { $tpl->setLoop('ip_adresses', $records_out); } - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/ispconfig.conf'); + $vhost_file = $web_config['vhost_conf_dir'].'/ispconfig.conf'; $app->system->file_put_contents($vhost_file, $tpl->grab()); $app->log('Writing the conf file: '.$vhost_file, LOGLEVEL_DEBUG); unset($tpl); @@ -2342,7 +2344,7 @@ class apache2_plugin { //* Get the folder path. if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1); if(substr($folder['path'], -1) == '/') $folder['path'] = substr($folder['path'], 0, -1); - $folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$folder['path']); + $folder_path = $website['document_root'].'/' . $web_folder . '/'.$folder['path']; if(substr($folder_path, -1) != '/') $folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2488,7 +2490,7 @@ class apache2_plugin { if(substr($data['new']['path'], 0, 1) == '/') $data['new']['path'] = substr($data['new']['path'], 1); if(substr($data['new']['path'], -1) == '/') $data['new']['path'] = substr($data['new']['path'], 0, -1); - $new_folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$data['new']['path']); + $new_folder_path = $website['document_root'].'/' . $web_folder . '/'.$data['new']['path']; if(substr($new_folder_path, -1) != '/') $new_folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2668,8 +2670,6 @@ class apache2_plugin { /* * The webdav - Root needs the group/user as owner and the apache as read and write */ - //$app->system->_exec('chown ' . $user . ':' . $group . ' ' . escapeshellcmd($documentRoot . '/webdav/')); - //$app->system->_exec('chmod 770 ' . escapeshellcmd($documentRoot . '/webdav/')); $app->system->chown($documentRoot . '/webdav', $user); $app->system->chgrp($documentRoot . '/webdav', $group); $app->system->chmod($documentRoot . '/webdav', 0770); @@ -2678,8 +2678,6 @@ class apache2_plugin { * The webdav folder (not the webdav-root!) needs the same (not in ONE step, because the * pwd-files are owned by root) */ - //$app->system->_exec('chown ' . $user . ':' . $group . ' ' . escapeshellcmd($webdav_user_dir.' -R')); - //$app->system->_exec('chmod 770 ' . escapeshellcmd($webdav_user_dir.' -R')); $app->system->chown($webdav_user_dir, $user); $app->system->chgrp($webdav_user_dir, $group); $app->system->chmod($webdav_user_dir, 0770); @@ -2699,7 +2697,7 @@ class apache2_plugin { /* * Next step, patch the vhost - file */ - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'); + $vhost_file = $web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'; $this->_patchVhostWebdav($vhost_file, $documentRoot . '/webdav'); /* @@ -2731,7 +2729,7 @@ class apache2_plugin { /* * Next step, patch the vhost - file */ - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'); + $vhost_file = $web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'; $this->_patchVhostWebdav($vhost_file, $documentRoot . '/webdav'); /* @@ -2991,9 +2989,9 @@ class apache2_plugin { $content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $content); file_put_contents('/etc/init.d/hhvm_' . $data['new']['system_user'], $content); - exec('chmod +x /etc/init.d/hhvm_' . $data['new']['system_user'] . ' >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['new']['system_user'] . ' defaults >/dev/null 2>&1'); - exec('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); + $app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('? restart >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); if(is_dir('/etc/monit/conf.d')){ $monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content); @@ -3004,8 +3002,8 @@ class apache2_plugin { } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') { if($data['old']['system_user'] != ''){ - exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['old']['system_user'] . ' remove >/dev/null 2>&1'); + $app->system->exec_safe('? stop >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['old']['system_user']); + $app->system->exec_safe('/usr/sbin/update-rc.d ? remove >/dev/null 2>&1', 'hhvm_' . $data['old']['system_user']); unlink('/etc/init.d/hhvm_' . $data['old']['system_user']); if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini'); } @@ -3023,7 +3021,7 @@ class apache2_plugin { } //* Update the PHP-FPM pool configuration file - private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name, $socket_dir) { + private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder = null) { global $app, $conf; $pool_dir = trim($pool_dir); //$reload = false; @@ -3048,6 +3046,8 @@ class apache2_plugin { $app->uses("getconf"); $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); + + $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; if($data['new']['php'] != 'php-fpm'){ if(@is_file($pool_dir.$pool_name.'.conf')){ @@ -3056,9 +3056,9 @@ class apache2_plugin { } if($data['old']['php'] == 'php-fpm'){ if(!$default_php_fpm){ - $app->services->restartService('php-fpm', 'reload:'.$custom_php_fpm_init_script); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$custom_php_fpm_init_script); } else { - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } //if($reload == true) $app->services->restartService('php-fpm','reload'); @@ -3102,7 +3102,7 @@ class apache2_plugin { $tpl->setVar('document_root', $data['new']['document_root']); $tpl->setVar('security_level', $web_config['security_level']); $tpl->setVar('domain', $data['new']['domain']); - $php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']); + $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; $tpl->setVar('php_open_basedir', $php_open_basedir); if($php_open_basedir != ''){ $tpl->setVar('enable_php_open_basedir', ''); @@ -3110,6 +3110,15 @@ class apache2_plugin { $tpl->setVar('enable_php_open_basedir', ';'); } + // Chrooted PHP-FPM + if ($data['new']['php_fpm_chroot'] === 'y') { + $tpl->setVar('php_fpm_chroot', $data['new']['php_fpm_chroot']); + $tpl->setVar('php_fpm_chroot_dir', $data['new']['document_root']); + $tpl->setVar('php_fpm_chroot_web_folder', sprintf('/%s', trim($web_folder, '/'))); + $tpl->setVar('php_open_basedir', str_replace($tpl->getVar('document_root'), '', $tpl->getVar('php_open_basedir'))); + $tpl->setVar('document_root', ''); + } + // Custom php.ini settings $final_php_ini_settings = array(); $custom_php_ini_settings = trim($data['new']['custom_php_ini']); @@ -3180,13 +3189,13 @@ class apache2_plugin { unset($tpl); // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { $app->system->unlink($default_pool_dir.$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$default_pool_dir.$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } $php_versions = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ?", $conf["server_id"]); @@ -3198,7 +3207,7 @@ class apache2_plugin { if ( @is_file($php_version['php_fpm_pool_dir'].$pool_name.'.conf') ) { $app->system->unlink($php_version['php_fpm_pool_dir'].$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$php_version['php_fpm_pool_dir'].$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$php_version['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$php_version['php_fpm_init_script']); } } } @@ -3206,9 +3215,9 @@ class apache2_plugin { // Reload current PHP-FPM after all others sleep(1); if(!$default_php_fpm){ - $app->services->restartService('php-fpm', 'reload:'.$custom_php_fpm_init_script); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$custom_php_fpm_init_script); } else { - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } //$reload = true; @@ -3219,6 +3228,11 @@ class apache2_plugin { //* Delete the PHP-FPM pool configuration file private function php_fpm_pool_delete ($data, $web_config) { global $app, $conf; + + $app->uses("getconf"); + $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); + + $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){ $default_php_fpm = false; @@ -3229,7 +3243,7 @@ class apache2_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } @@ -3246,13 +3260,13 @@ class apache2_plugin { } // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { $app->system->unlink($default_pool_dir.$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$default_pool_dir.$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } $php_versions = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ?", $data['old']['server_id']); @@ -3264,7 +3278,7 @@ class apache2_plugin { if ( @is_file($php_version['php_fpm_pool_dir'].$pool_name.'.conf') ) { $app->system->unlink($php_version['php_fpm_pool_dir'].$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$php_version['php_fpm_pool_dir'].$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$php_version['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$php_version['php_fpm_init_script']); } } } @@ -3273,9 +3287,9 @@ class apache2_plugin { // Reload current PHP-FPM after all others sleep(1); if(!$default_php_fpm){ - $app->services->restartService('php-fpm', 'reload:'.$custom_php_fpm_init_script); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$custom_php_fpm_init_script); } else { - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } @@ -3306,7 +3320,7 @@ class apache2_plugin { } if($app->system->is_group('client'.$client_id)){ - $app->system->_exec('groupdel client'.$client_id); + $app->system->exec_safe('groupdel ?', 'client'.$client_id); $app->log('Removed group client'.$client_id, LOGLEVEL_DEBUG); } } diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index b843e3c8a4e45f86adedf8106207d79e1c4b586f..4d0866d1de9f283d25e23c857d6b652bf6975e15 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -106,6 +106,16 @@ class apps_vhost_plugin { $vhost_port_listen = '#'; } $tpl->setVar('vhost_port_listen', $vhost_port_listen); + + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if($mail_config['content_filter'] == 'rspamd'){ + $use_rspamd = true; + exec('/usr/sbin/a2enmod proxy'); + exec('/usr/sbin/a2enmod proxy_http'); + } else { + $use_rspamd = false; + } + $tpl->setVar('use_rspamd', $use_rspamd); $content = $tpl->grab(); @@ -121,7 +131,7 @@ class apps_vhost_plugin { $app->system->file_put_contents("$vhost_conf_dir/apps.vhost", $content); // enabled / disable apps-vhost - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'; if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') { $app->system->unlink($vhost_symlink); } @@ -156,11 +166,11 @@ class apps_vhost_plugin { $apps_vhost_ip = $web_config['apps_vhost_ip'].':'; } - $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; - if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + if(!is_dir($socket_dir)) $app->system->exec_safe('mkdir -p ?', $socket_dir); $fpm_socket = $socket_dir.'apps.sock'; - $cgi_socket = escapeshellcmd($web_config['nginx_cgi_socket']); + $cgi_socket = $web_config['nginx_cgi_socket']; $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); $content = str_replace('{apps_vhost_port}', $web_config['apps_vhost_port'], $content); @@ -184,6 +194,14 @@ class apps_vhost_plugin { $content = str_replace('{use_tcp}', $use_tcp, $content); $content = str_replace('{use_socket}', $use_socket, $content); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if($mail_config['content_filter'] == 'rspamd'){ + $use_rspamd = ''; + } else { + $use_rspamd = '#'; + } + $content = str_replace('{use_rspamd}', $use_rspamd, $content); + // Fix socket path on PHP 7 systems if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); @@ -207,7 +225,7 @@ class apps_vhost_plugin { file_put_contents("$vhost_conf_dir/apps.vhost", $content); // enabled / disable apps-vhost - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'; if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') { $app->system->unlink($vhost_symlink); } @@ -221,7 +239,3 @@ class apps_vhost_plugin { } // end class - - - -?> diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 6ce8c98939ae236f0246aecd574812d1a1c32673..3308289d41dfff03564450137cced34aaedb3d8e 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -104,13 +104,13 @@ class backup_plugin { // extract tar.gz archive $dump_directory = str_replace(".tar.gz", "", $backup['filename']); $extracted = "/usr/local/ispconfig/server/temp"; - exec("tar -xzvf ".escapeshellarg($backup_dir.'/'.$backup['filename'])." --directory=".escapeshellarg($extracted)); + $app->system->exec_safe("tar -xzvf ? --directory=?", $backup_dir.'/'.$backup['filename'], $extracted); $restore_directory = $extracted."/".$dump_directory."/".$db_name; // mongorestore -h 127.0.0.1 -u root -p 123456 --authenticationDatabase admin -d c1debug --drop ./toRestore - $command = "mongorestore -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d ".$db_name." --drop ".escapeshellarg($restore_directory); - exec($command); - exec("rm -rf ".escapeshellarg($extracted."/".$dump_directory)); + $command = "mongorestore -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d ? --drop ?"; + $app->system->exec_safe($command, $db_name, $restore_directory); + $app->system->exec_safe("rm -rf ?", $extracted."/".$dump_directory); } unset($clientdb_host); @@ -129,8 +129,8 @@ class backup_plugin { //$db_name = $parts[1]; preg_match('@^db_(.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql\.gz$@', $backup['filename'], $matches); $db_name = $matches[1]; - $command = "gunzip --stdout ".escapeshellarg($backup_dir.'/'.$backup['filename'])." | mysql -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".escapeshellarg($db_name); - exec($command); + $command = "gunzip --stdout ? | mysql -h ? -u ? -p? ?"; + $app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $clientdb_host, $clientdb_user, $clientdb_password, $db_name); } unset($clientdb_host); unset($clientdb_user); @@ -147,8 +147,8 @@ class backup_plugin { copy($backup_dir.'/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename']); chgrp($web['document_root'].'/backup/'.$backup['filename'], $web['system_group']); //chown($web['document_root'].'/backup/'.$backup['filename'],$web['system_user']); - $command = 'sudo -u '.escapeshellarg($web['system_user']).' unzip -qq -o '.escapeshellarg($web['document_root'].'/backup/'.$backup['filename']).' -d '.escapeshellarg($web['document_root']).' 2> /dev/null'; - exec($command); + $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $web['system_user'], $web['document_root'].'/backup/'.$backup['filename'], $web['document_root']); unlink($web['document_root'].'/backup/'.$backup['filename']); if(file_exists($web['document_root'].'/backup/'.$backup['filename'].'.bak')) rename($web['document_root'].'/backup/'.$backup['filename'].'.bak', $web['document_root'].'/backup/'.$backup['filename']); $app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); @@ -156,8 +156,8 @@ class backup_plugin { } if($backup['backup_mode'] == 'rootgz') { if(file_exists($backup_dir.'/'.$backup['filename']) && $web['document_root'] != '' && $web['document_root'] != '/' && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) { - $command = 'tar xzf '.escapeshellarg($backup_dir.'/'.$backup['filename']).' --directory '.escapeshellarg($web['document_root']); - exec($command); + $command = 'tar xzf ? --directory ?'; + $app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $web['document_root']); $app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); } } @@ -237,22 +237,24 @@ class backup_plugin { if($mail_backup['backup_mode'] == 'userzip') { copy($mail_backup_file, $record['maildir'].'/'.$mail_backup['filename']); chgrp($record['maildir'].'/'.$mail_backup['filename'], $mail_config['mailuser_group']); - $command = 'sudo -u '.$mail_config['mailuser_name'].' unzip -qq -o '.escapeshellarg($record['maildir'].'/'.$mail_backup['filename']).' -d '.escapeshellarg($record['maildir']).' 2> /dev/null'; - exec($command,$tmp_output, $retval); + $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $mail_config['mailuser_name'], $record['maildir'].'/'.$mail_backup['filename'], $record['maildir']); + $retval = $app->system->last_exec_retcode(); unlink($record['maildir'].'/'.$mail_backup['filename']); - } - if($mail_backup['backup_mode'] == 'rootgz') { - $command='tar xfz '.escapeshellarg($mail_backup_file).' --directory '.escapeshellarg($record['maildir']); - exec($command,$tmp_output, $retval); + } elseif($mail_backup['backup_mode'] == 'rootgz') { + $command='tar xfz ? --directory ?'; + $app->system->exec_safe($command, $mail_backup_file, $record['maildir']); + $retval = $app->system->last_exec_retcode(); } if($retval == 0) { // Now import backup-mailbox into special backup-folder $backupname = "backup-".date("Y-m-d", $mail_backup['tstamp']); - exec("doveadm mailbox create -u \"".$record["email"]."\" $backupname"); - exec("doveadm import -u \"".$record["email"]."\" mdbox:".$record['maildir']."/backup $backupname all", $tmp_output, $retval); - exec("for f in `doveadm mailbox list -u \"".$record["email"]."\" $backupname*`; do doveadm mailbox subscribe -u \"".$record["email"]."\" \$f; done", $tmp_output, $retval); - exec('rm -rf '.$record['maildir'].'/backup'); + $app->system->exec_safe("doveadm mailbox create -u ? ?", $record["email"], $backupname); + $app->system->exec_safe("doveadm import -u ? mdbox:? ? all", $record["email"], $record['maildir']."/backup", $backupname); + $app->system->exec_safe("for f in `doveadm mailbox list -u ? ?*`; do doveadm mailbox subscribe -u ? \$f; done", $record["email"], $backupname, $record["email"]); + $retval = $app->system->last_exec_retcode(); + $app->system->exec_safe('rm -rf ?', $record['maildir'].'/backup'); } if($retval == 0){ @@ -260,7 +262,7 @@ class backup_plugin { } else { // cleanup if (file_exists($record['maildir'].'/'.$mail_backup['filename'])) unlink($record['maildir'].'/'.$mail_backup['filename']); - if (file_exists($record['maildir']."/backup")) exec('rm -rf '.$record['maildir']."/backup"); + if (file_exists($record['maildir']."/backup")) $app->system->exec_safe('rm -rf ?', $record['maildir']."/backup"); $app->log('Unable to restore Mail backup '.$mail_backup_file.' '.$tmp_output,LOGLEVEL_ERROR); } @@ -269,8 +271,10 @@ class backup_plugin { if($mail_backup['backup_mode'] == 'userzip') { copy($mail_backup_file, $domain_dir.'/'.$mail_backup['filename']); chgrp($domain_dir.'/'.$mail_backup['filename'], $mail_config['mailuser_group']); - $command = 'sudo -u '.$mail_config['mailuser_name'].' unzip -qq -o '.escapeshellarg($domain_dir.'/'.$mail_backup['filename']).' -d '.escapeshellarg($domain_dir).' 2> /dev/null'; - exec($command,$tmp_output, $retval); + $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $mail_config['mailuser_name'], $domain_dir.'/'.$mail_backup['filename'], $domain_dir); + $retval = $app->system->last_exec_retcode(); + $tmp_output = $app->system->last_exec_out(); unlink($domain_dir.'/'.$mail_backup['filename']); if($retval == 0){ $app->log('Restored Mail backup '.$mail_backup_file,LOGLEVEL_DEBUG); @@ -279,8 +283,10 @@ class backup_plugin { } } if($mail_backup['backup_mode'] == 'rootgz') { - $command='tar xfz '.escapeshellarg($mail_backup_file).' --directory '.escapeshellarg($domain_dir); - exec($command,$tmp_output, $retval); + $command='tar xfz ? --directory ?'; + $app->system->exec_safe($command, $mail_backup_file, $domain_dir); + $retval = $app->system->last_exec_retcode(); + $tmp_output = $app->system->last_exec_out(); if($retval == 0){ $app->log('Restored Mail backup '.$mail_backup_file,LOGLEVEL_DEBUG); } else { diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 23856f0c8661f3317f4beaa91f2fb20c92ac93c2..e8b72b5dbc8b65a612158766f34414f536d11378 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -114,9 +114,7 @@ class bind_plugin { } //Do some magic... - exec('cd '.escapeshellcmd($dns_config['bind_zonefiles_dir']).';'. - 'dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE '.escapeshellcmd($domain).';'. - 'dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE '.escapeshellcmd($domain)); + $app->system->exec_safe('cd ?; dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE ?; dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE ?', $dns_config['bind_zonefiles_dir'], $domain, $domain); $this->soa_dnssec_sign($data); //Now sign the zone for the first time $data['new']['dnssec_initialized']='Y'; @@ -148,8 +146,7 @@ class bind_plugin { file_put_contents($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain, $zonefile); //Sign the zone and set it valid for max. 16 days - exec('cd '.escapeshellcmd($dns_config['bind_zonefiles_dir']).';'. - 'dnssec-signzone -A -e +1382400 -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N increment -o '.escapeshellcmd($domain).' -t '.$filespre.escapeshellcmd($domain)); + $app->system->exec_safe('cd ?; dnssec-signzone -A -e +1382400 -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N increment -o ? -t ?', $dns_config['bind_zonefiles_dir'], $domain, $filespre.$domain); //Write Data back ino DB $dnssecdata = "DS-Records:\n".file_get_contents($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.'); @@ -187,8 +184,8 @@ class bind_plugin { if (!$new && !file_exists($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.')) $this->soa_dnssec_create($data); $dbdata = $app->db->queryOneRecord('SELECT id,serial FROM dns_soa WHERE id=?', intval($data['new']['id'])); - exec('cd '.escapeshellcmd($dns_config['bind_zonefiles_dir']).';'. - 'named-checkzone '.escapeshellcmd($domain).' '.escapeshellcmd($dns_config['bind_zonefiles_dir']).'/'.$filespre.escapeshellcmd($domain).' | egrep -ho \'[0-9]{10}\'', $serial, $retState); + $app->system->exec_safe('cd ?; named-checkzone ? ? | egrep -ho \'[0-9]{10}\'', $dns_config['bind_zonefiles_dir'], $domain, $dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain); + $retState = $app->system->last_exec_retcode(); if ($retState != 0) { $app->log('DNSSEC Error: Error in Zonefile for '.$domain, LOGLEVEL_ERR); return false; @@ -236,6 +233,17 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); + //* Get the bind version + $bind_caa = false; + $bind = explode("\n", shell_exec('which named bind')); + $bind = reset($bind); + if(is_executable($bind)) { + exec($bind . ' -v 2>&1', $tmp); + $bind_caa = @(version_compare($tmp[0],"BIND 9.9.6", '>='))?true:false; + unset($tmp); + } + unset($bind); + //* Write the domain file if(!empty($data['new']['id'])) { $tpl = new tpl(); @@ -253,26 +261,41 @@ class bind_plugin { if($records[$i]['type'] == 'TXT' && strlen($records[$i]['data']) > 255) { $records[$i]['data'] = implode('" "',str_split( $records[$i]['data'], 255)); } + //* CAA-Records - Type257 for older bind-versions + if($records[$i]['type'] == 'CAA' && !$bind_caa) { + $records[$i]['type'] = 'TYPE257'; + $temp = explode(' ', $records[$i]['data']); + unset($temp[0]); + $records[$i]['data'] = implode(' ', $temp); + $data_new = str_replace(array('"', ' '), '', $records[$i]['data']); + $hex = unpack('H*', $data_new); + $hex[1] = '0005'.strtoupper($hex[1]); + $length = strlen($hex[1])/2; + $data_new = "\# $length $hex[1]"; + $records[$i]['data'] = $data_new; + } } } $tpl->setLoop('zones', $records); //TODO : change this when distribution information has been integrated into server record if (file_exists('/etc/gentoo-release')) { - $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($zone['origin'], 0, -1))); + $filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($zone['origin'], 0, -1)); } else { - $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1))); + $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1)); } $old_zonefile = @file_get_contents($filename); file_put_contents($filename, $tpl->grab()); - chown($filename, escapeshellcmd($dns_config['bind_user'])); - chgrp($filename, escapeshellcmd($dns_config['bind_group'])); + chown($filename, $dns_config['bind_user']); + chgrp($filename, $dns_config['bind_group']); //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status); + $app->system->exec_safe('named-checkzone ? ?', $zone['origin'], $filename); + $out = $app->system->last_exec_out(); + $return_status = $app->system->last_exec_retcode(); if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); } else { @@ -285,8 +308,8 @@ class bind_plugin { if ($old_zonefile != '') { rename($filename, $filename.'.err'); file_put_contents($filename, $old_zonefile); - chown($filename, escapeshellcmd($dns_config['bind_user'])); - chgrp($filename, escapeshellcmd($dns_config['bind_group'])); + chown($filename, $dns_config['bind_user']); + chgrp($filename, $dns_config['bind_group']); } else { rename($filename, $filename.'.err'); } @@ -368,7 +391,10 @@ class bind_plugin { $app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG); //* DNSSEC-Implementation - if ($data['old']['dnssec_initialized'] == 'Y') exec('/usr/local/ispconfig/server/scripts/dnssec-delete.sh '.$data['old']['origin']); //delete keys + if($data['old']['dnssec_initialized'] == 'Y' && file_exists('/usr/local/ispconfig/server/scripts/dnssec-delete.sh')) { + //delete keys + $app->system->exec_safe('/usr/local/ispconfig/server/scripts/dnssec-delete.sh ?', $data['old']['origin']); + } //* Reload bind nameserver $app->services->restartServiceDelayed('bind', 'reload'); @@ -558,11 +584,6 @@ class bind_plugin { 'zonefile_path' => $sec_zonefiles_path.str_replace("/", "_", substr($tmp['origin'], 0, -1)), 'options' => $options ); - - // $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/slave/sec.'.substr($tmp['origin'],0,-1)); - // $app->log("Writing BIND domain file: ".$filename,LOGLEVEL_DEBUG); - - } $tpl_sec = new tpl(); diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php index c652f299ebc44dd87c5cc3f1c65f118cdbebb144..0650ad87a3aefee4057d4d78d6a40214c2454852 100644 --- a/server/plugins-available/cron_jailkit_plugin.inc.php +++ b/server/plugins-available/cron_jailkit_plugin.inc.php @@ -103,20 +103,6 @@ class cron_jailkit_plugin { if ($data['new']['type'] == "chrooted") { // load the server configuration options - /* - $app->uses("getconf"); - $this->data = $data; - $this->app = $app; - $this->jailkit_config = $app->getconf->get_server_config($conf["server_id"], 'jailkit'); - $this->parent_domain = $parent_domain; - - $this->_setup_jailkit_chroot(); - - //$command .= 'usermod -U '.escapeshellcmd($parent_domain['system_user']); - //exec($command); - - $this->_add_jailkit_user(); - */ $app->uses("getconf"); $this->data = $data; $this->app = $app; @@ -130,8 +116,8 @@ class cron_jailkit_plugin { $this->_add_jailkit_user(); - $command .= 'usermod -U '.escapeshellcmd($parent_domain["system_user"]).' 2>/dev/null'; - exec($command); + $command .= 'usermod -U ? 2>/dev/null'; + $app->system->exec_safe($command, $parent_domain["system_user"]); $this->_update_website_security_level(); @@ -230,14 +216,9 @@ class cron_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->parent_domain['document_root'].'/etc/jailkit')) { - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh'; - $command .= ' '.escapeshellcmd($this->parent_domain['document_root']); - $command .= ' \''.$this->jailkit_config['jailkit_chroot_app_sections'].'\''; - exec($command.' 2>/dev/null'); - - $this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_chroot($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_sections']); - //$this->_add_jailkit_programs(); // done later on + $this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG); $this->app->load('tpl'); @@ -248,7 +229,7 @@ class cron_jailkit_plugin { $tpl->setVar('domain', $this->parent_domain['domain']); $tpl->setVar('home_dir', $this->_get_home_dir("")); - $bashrc = escapeshellcmd($this->parent_domain['document_root']).'/etc/bash.bashrc'; + $bashrc = $this->parent_domain['document_root'].'/etc/bash.bashrc'; if(@is_file($bashrc) || @is_link($bashrc)) unlink($bashrc); $app->system->file_put_contents($bashrc, $tpl->grab()); @@ -261,7 +242,7 @@ class cron_jailkit_plugin { $tpl->setVar('domain', $this->parent_domain['domain']); - $motd = escapeshellcmd($this->parent_domain['document_root']).'/var/run/motd'; + $motd = $this->parent_domain['document_root'].'/var/run/motd'; if(@is_file($motd) || @is_link($motd)) unlink($motd); $app->system->file_put_contents($motd, $tpl->grab()); @@ -275,19 +256,11 @@ class cron_jailkit_plugin { global $app; //copy over further programs and its libraries - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' '.escapeshellcmd($this->parent_domain['document_root']); - $command .= ' \''.$this->jailkit_config['jailkit_chroot_app_programs'].'\''; - exec($command.' 2>/dev/null'); - - $this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); - - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' '.escapeshellcmd($this->parent_domain['document_root']); - $command .= ' \''.$this->jailkit_config['jailkit_chroot_cron_programs'].'\''; - exec($command.' 2>/dev/null'); - - $this->app->log("Added cron programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_programs($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_programs']); + $this->app->log("Added app programs to jailkit chroot", LOGLEVEL_DEBUG); + + $app->system->create_jailkit_programs($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_cron_programs']); + $this->app->log("Added cron programs to jailkit chroot", LOGLEVEL_DEBUG); } function _add_jailkit_user() @@ -298,30 +271,23 @@ class cron_jailkit_plugin { $jailkit_chroot_userhome = $this->_get_home_dir($this->parent_domain['system_user']); if(!is_dir($this->parent_domain['document_root'].'/etc')) mkdir($this->parent_domain['document_root'].'/etc'); - if(!is_file($this->parent_domain['document_root'].'/etc/passwd')) exec('touch '.$this->parent_domain['document_root'].'/etc/passwd'); + if(!is_file($this->parent_domain['document_root'].'/etc/passwd')) $app->system->exec_safe('touch ?', $this->parent_domain['document_root'].'/etc/passwd'); // IMPORTANT! // ALWAYS create the user. Even if the user was created before // if we check if the user exists, then a update (no shell -> jailkit) will not work // and the user has FULL ACCESS to the root of the server! - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh'; - $command .= ' '.escapeshellcmd($this->parent_domain['system_user']); - $command .= ' '.escapeshellcmd($this->parent_domain['document_root']); - $command .= ' '.$jailkit_chroot_userhome; - $command .= ' '.escapeshellcmd("/bin/bash"); - exec($command.' 2>/dev/null'); - - $this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_user($this->parent_domain['system_user'], $this->parent_domain['document_root'], $jailkit_chroot_userhome); - $app->system->mkdir(escapeshellcmd($this->parent_domain['document_root'].$jailkit_chroot_userhome), 0755, true); - $app->system->chown(escapeshellcmd($this->parent_domain['document_root'].$jailkit_chroot_userhome), escapeshellcmd($this->parent_domain['system_user'])); - $app->system->chgrp(escapeshellcmd($this->parent_domain['document_root'].$jailkit_chroot_userhome), escapeshellcmd($this->parent_domain['system_group'])); + $app->system->mkdir($this->parent_domain['document_root'].$jailkit_chroot_userhome, 0755, true); + $app->system->chown($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_user']); + $app->system->chgrp($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_group']); } function _get_home_dir($username) { - return str_replace("[username]", escapeshellcmd($username), $this->jailkit_config["jailkit_chroot_home"]); + return str_replace("[username]", $username, $this->jailkit_config["jailkit_chroot_home"]); } //* Update the website root directory permissions depending on the security level @@ -345,15 +311,5 @@ class cron_jailkit_plugin { } } - //* Wrapper for exec function for easier debugging - private function _exec($command) { - global $app; - $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); - } - - - } // end class -?> diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index fb623b9213e436a916ab4c3ebc2ce59efe839417..af4e24d97429faf08e2acea80fb57eb21ab88583 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -112,15 +112,15 @@ class cron_plugin { // Create group and user, if not exist $app->uses("system"); - $groupname = escapeshellcmd($parent_domain["system_group"]); + $groupname = $parent_domain["system_group"]; if($parent_domain["system_group"] != '' && !$app->system->is_group($parent_domain["system_group"])) { - exec("groupadd $groupname"); + $app->system->exec_safe("groupadd ?", $groupname); $app->log("Adding the group: $groupname", LOGLEVEL_DEBUG); } - $username = escapeshellcmd($parent_domain["system_user"]); + $username = $parent_domain["system_user"]; if($parent_domain["system_user"] != '' && !$app->system->is_user($parent_domain["system_user"])) { - exec("useradd -d ".escapeshellcmd($parent_domain["document_root"])." -g $groupname $username -s /bin/false"); + $app->system->exec_safe("useradd -d ? -g ? ? -s /bin/false", $parent_domain["document_root"], $groupname, $username); $app->log("Adding the user: $username", LOGLEVEL_DEBUG); } @@ -136,19 +136,19 @@ class cron_plugin { } // get the primitive folder for document_root and the filesystem, will need it later. - $df_output=explode(" ", exec("df -T " . escapeshellarg($parent_domain["document_root"]) . "|awk 'END{print \$2,\$NF}'")); + $df_output=explode(" ", $app->system->exec_safe("df -T ?|awk 'END{print \$2,\$NF}'", $parent_domain["document_root"])); $file_system = $df_output[0]; $primitive_root = $df_output[1]; if ( in_array($file_system , array('ext2','ext3','ext4'),true) ) { - exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); - exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); + $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); + $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } elseif ($file_system == 'xfs') { - exec("xfs_quota -x -c 'limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " $username' $primitive_root"); + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " $username", $primitive_root); // xfs only supports timers globally, not per user. - exec("xfs_quota -x -c 'timer -bir -i 604800' $primitive_root"); + $app->system->exec_safe("xfs_quota -x -c 'timer -bir -i 604800' ?", $primitive_root); unset($project_uid, $username_position, $xfs_projects); unset($primitive_root, $df_output, $mb_hard, $mb_soft); @@ -164,7 +164,7 @@ class cron_plugin { } // make temp directory writable for the apache and website users - $app->system->chmod(escapeshellcmd($parent_domain["document_root"].'/tmp'), 0777); + $app->system->chmod($parent_domain["document_root"].'/tmp', 0777); /** TODO READ CRON MASTER **/ @@ -272,7 +272,7 @@ class cron_plugin { } } - $cron_file = escapeshellcmd($cron_config["crontab_dir"].'/ispc_'.$this->parent_domain["system_user"]); + $cron_file = $cron_config["crontab_dir"].'/ispc_'.$this->parent_domain["system_user"]; //TODO : change this when distribution information has been integrated into server record //* Gentoo vixie-cron requires files to end with .cron in the cron.d directory if (file_exists('/etc/gentoo-release')) { @@ -287,7 +287,7 @@ class cron_plugin { $app->log("Deleted Cron file $cron_file", LOGLEVEL_DEBUG); } - $cron_file = escapeshellcmd($cron_config["crontab_dir"].'/ispc_chrooted_'.$this->parent_domain["system_user"]); + $cron_file = $cron_config["crontab_dir"].'/ispc_chrooted_'.$this->parent_domain["system_user"]; if($chr_cmd_count > 0) { $app->system->file_put_contents($cron_file, $chr_cron_content); $app->log("Wrote Cron file $cron_file with content:\n$chr_cron_content", LOGLEVEL_DEBUG); diff --git a/server/plugins-available/firewall_plugin.inc.php b/server/plugins-available/firewall_plugin.inc.php index 67ed2379fbbe554b595efceef048c761cbff2667..b924f43a2620a35813aebee9a3bb5a082f99daab 100644 --- a/server/plugins-available/firewall_plugin.inc.php +++ b/server/plugins-available/firewall_plugin.inc.php @@ -145,7 +145,7 @@ class firewall_plugin { //* add tcp ports foreach($tcp_ports_new_array as $port) { if(!in_array($port, $tcp_ports_old_array) && $port > 0) { - exec('ufw allow '.$port.'/tcp'); + $app->system->exec_safe('ufw allow ?', $port.'/tcp'); $app->log('ufw allow '.$port.'/tcp', LOGLEVEL_DEBUG); sleep(1); } @@ -154,7 +154,7 @@ class firewall_plugin { //* remove tcp ports foreach($tcp_ports_old_array as $port) { if(!in_array($port, $tcp_ports_new_array) && $port > 0) { - exec('ufw delete allow '.$port.'/tcp'); + $app->system->exec_safe('ufw delete allow ?', $port.'/tcp'); $app->log('ufw delete allow '.$port.'/tcp', LOGLEVEL_DEBUG); sleep(1); } @@ -163,7 +163,7 @@ class firewall_plugin { //* add udp ports foreach($udp_ports_new_array as $port) { if(!in_array($port, $udp_ports_old_array) && $port > 0) { - exec('ufw allow '.$port.'/udp'); + $app->system->exec_safe('ufw allow ?', $port.'/udp'); $app->log('ufw allow '.$port.'/udp', LOGLEVEL_DEBUG); sleep(1); } @@ -172,32 +172,12 @@ class firewall_plugin { //* remove udp ports foreach($udp_ports_old_array as $port) { if(!in_array($port, $udp_ports_new_array) && $port > 0) { - exec('ufw delete allow '.$port.'/udp'); + $app->system->exec_safe('ufw delete allow ?', $port.'/udp'); $app->log('ufw delete allow '.$port.'/udp', LOGLEVEL_DEBUG); sleep(1); } } - /* - if($tcp_ports_new != $tcp_ports_old) { - exec('ufw allow to any proto tcp port '.$tcp_ports_new); - $app->log('ufw allow to any proto tcp port '.$tcp_ports_new,LOGLEVEL_DEBUG); - if($event_name == 'firewall_update') { - exec('ufw delete allow to any proto tcp port '.$tcp_ports_old); - $app->log('ufw delete allow to any proto tcp port '.$tcp_ports_old,LOGLEVEL_DEBUG); - } - } - - if($udp_ports_new != $udp_ports_old) { - exec('ufw allow to any proto udp port '.$udp_ports_new); - $app->log('ufw allow to any proto udp port '.$udp_ports_new,LOGLEVEL_DEBUG); - if($event_name == 'firewall_update') { - exec('ufw delete allow to any proto udp port '.$udp_ports_old); - $app->log('ufw delete allow to any proto udp port '.$udp_ports_old,LOGLEVEL_DEBUG); - } - } - */ - if($data['new']['active'] == 'y') { if($data['new']['active'] == $data['old']['active']) { exec('ufw reload'); diff --git a/server/plugins-available/ftpuser_base_plugin.inc.php b/server/plugins-available/ftpuser_base_plugin.inc.php index af5870a4bae04662b065666b4aad77ae99db4479..c34371a18121a3b2502036213a28d7810a38140b 100644 --- a/server/plugins-available/ftpuser_base_plugin.inc.php +++ b/server/plugins-available/ftpuser_base_plugin.inc.php @@ -83,8 +83,7 @@ class ftpuser_base_plugin { } $app->system->web_folder_protection($web['document_root'], false); - exec('mkdir -p '.escapeshellcmd($data['new']['dir'])); - exec('chown '.escapeshellcmd($web["system_user"]).':'.escapeshellcmd($web['system_group']).' '.$data['new']['dir']); + $app->system->mkdirpath($data['new']['dir'], 0755, $web["system_user"], $web["system_group"]); $app->system->web_folder_protection($web['document_root'], true); $app->log("Added ftpuser_dir: ".$data['new']['dir'], LOGLEVEL_DEBUG); @@ -109,8 +108,7 @@ class ftpuser_base_plugin { } $app->system->web_folder_protection($web['document_root'], false); - exec('mkdir -p '.escapeshellcmd($data['new']['dir'])); - exec('chown '.escapeshellcmd($web["system_user"]).':'.escapeshellcmd($web['system_group']).' '.$data['new']['dir']); + $app->system->mkdirpath($data['new']['dir'], 0755, $web["system_user"], $web["system_group"]); $app->system->web_folder_protection($web['document_root'], true); diff --git a/server/plugins-available/getmail_plugin.inc.php b/server/plugins-available/getmail_plugin.inc.php index 5b1edfbab97c6c44f9040005d4c2881ec546e867..c3f4f7e1dcd48f210bcf935398f9960cb28fe80f 100644 --- a/server/plugins-available/getmail_plugin.inc.php +++ b/server/plugins-available/getmail_plugin.inc.php @@ -76,6 +76,9 @@ class getmail_plugin { function update($event_name, $data) { global $app, $conf; + + // Do not write getmail config files on mirror servers to avoid double fetching of emails. + if($conf['mirror_server_id'] > 0) return true; // load the server specific configuration options for getmail $app->uses("getconf"); @@ -91,7 +94,7 @@ class getmail_plugin { $this->delete($event_name, $data); // Get the new config file path - $config_file_path = escapeshellcmd($this->getmail_config_dir.'/'.$this->_clean_path($data["new"]["source_server"]).'_'.$this->_clean_path($data["new"]["source_username"]).'.conf'); + $config_file_path = $this->getmail_config_dir.'/'.$this->_clean_path($data["new"]["source_server"]).'_'.$this->_clean_path($data["new"]["source_username"]).'.conf'; if(stristr($config_file_path, "..") or stristr($config_file_path, "|") or stristr($config_file_path, ";") or stristr($config_file_path, '$')) { $app->log("Possibly faked path for getmail config file: '$config_file_path'. File is not written.", LOGLEVEL_ERROR); return false; @@ -159,7 +162,7 @@ class getmail_plugin { $getmail_config = $app->getconf->get_server_config($conf["server_id"], 'getmail'); $this->getmail_config_dir = $getmail_config["getmail_config_dir"]; - $config_file_path = escapeshellcmd($this->getmail_config_dir.'/'.$this->_clean_path($data["old"]["source_server"]).'_'.$this->_clean_path($data["old"]["source_username"]).'.conf'); + $config_file_path = $this->getmail_config_dir.'/'.$this->_clean_path($data["old"]["source_server"]).'_'.$this->_clean_path($data["old"]["source_username"]).'.conf'; if(stristr($config_file_path, "..") || stristr($config_file_path, "|") || stristr($config_file_path, ";") || stristr($config_file_path, '$')) { $app->log("Possibly faked path for getmail config file: '$config_file_path'. File is not written.", LOGLEVEL_ERROR); return false; diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php index 8275696620fbe1612aa78c816f9a9deaf1f11c7d..4d5ac826d3780f4d264f07c0060a9f0ffe13bd56 100644 --- a/server/plugins-available/mail_plugin.inc.php +++ b/server/plugins-available/mail_plugin.inc.php @@ -125,23 +125,22 @@ class mail_plugin { $group = $app->system->getgroup($data['new']['gid']); //* Create the mail domain directory, if it does not exist if(!empty($base_path) && !is_dir($base_path)) { - //exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']); $app->system->mkdirpath($base_path, 0770, $mail_config['mailuser_name'], $mail_config['mailuser_group']); // needs group-access because users of subfolders may differ from vmail $app->log('Created Directory: '.$base_path, LOGLEVEL_DEBUG); } if ($data['new']['maildir_format'] == 'mdbox') { - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Drafts'", $data["new"]["email"]); } else { // Dovecot uses a different mail layout with a separate 'Maildir' subdirectory. @@ -154,53 +153,44 @@ class mail_plugin { //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); - exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail"); - $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); + $app->system->exec_safe("su -c ? vmail", "mv -f " . $data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']); + $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path)) { - //exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); $app->system->maildirmake($maildomain_path, $user, '', $group); //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { - if(is_dir($maildomain_path)) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user); // Avoid maildirmake quota bug, see debian bug #214911 - $app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($maildomain_path)) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$maildomain_path, $user); // Avoid maildirmake quota bug, see debian bug #214911 + $app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$maildomain_path."' ".$user, LOGLEVEL_DEBUG); } } if(!is_dir($data['new']['maildir'].'/.Sent')) { - //exec("su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Sent: '."su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } if(!is_dir($data['new']['maildir'].'/.Drafts')) { - //exec("su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Drafts: '."su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Drafts', $group); } if(!is_dir($data['new']['maildir'].'/.Trash')) { - //exec("su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Trash: '."su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Trash', $group); } if(!is_dir($data['new']['maildir'].'/.Junk')) { - //exec("su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Junk: '."su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } // Set permissions now recursive - exec('chown -R '.$user.':'.$group.' '.escapeshellcmd($data['new']['maildir'])); - $app->log('Set ownership on '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_DEBUG); + $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); + $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); //* Set the maildir quota if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { - if(is_dir($data['new']['maildir'])) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user); - $app->log('Set Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($data['new']['maildir'])) $app->system->exec_safe("su -c ? ? ", "maildirmake -q ".$data['new']['quota']."S ". $data['new']['maildir'], $user); + $app->log('Set Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$data['new']['maildir']."' ".$user, LOGLEVEL_DEBUG); } } } @@ -269,19 +259,6 @@ class mail_plugin { $app->uses('getconf,system'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - // convert to lower case - it could cause problems if some directory above has upper case name - // $data['new']['maildir'] = strtolower($data['new']['maildir']); - - // Create the maildir, if it does not exist - /* - if(!is_dir($data['new']['maildir'])) { - mkdir(escapeshellcmd($data['new']['maildir']), 0, true); - chown(escapeshellcmd($data['new']['maildir']), $mail_config['mailuser_name']); - chgrp(escapeshellcmd($data['new']['maildir']), $mail_config['mailuser_group']); - $app->log('Created Maildir: '.$data['new']['maildir'],LOGLEVEL_DEBUG); - } - */ - // Maildir-Format must not be changed on this way !! $data['new']['maildir_format'] = $data['old']['maildir_format']; @@ -324,7 +301,6 @@ class mail_plugin { //* Create the mail domain directory, if it does not exist if(!empty($base_path) && !is_dir($base_path)) { - //exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']); $app->system->mkdirpath($base_path, 0770, $mail_config['mailuser_name'], $mail_config['mailuser_group']); // needs group-access because users of subfolders may differ from vmail $app->log('Created Directory: '.$base_path, LOGLEVEL_DEBUG); } @@ -333,29 +309,26 @@ class mail_plugin { // Move mailbox, if domain has changed and delete old mailbox if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) { if(is_dir($data['new']['maildir'])) { - exec("rm -fr ".escapeshellcmd($data['new']['maildir'])); + $app->system->exec_safe("rm -fr ?", $data['new']['maildir']); //rmdir($data['new']['maildir']); } - exec('mv -f '.escapeshellcmd($data['old']['maildir']).' '.escapeshellcmd($data['new']['maildir'])); - // exec('mv -f '.escapeshellcmd($data['old']['maildir']).'/* '.escapeshellcmd($data['new']['maildir'])); - // if(is_file($data['old']['maildir'].'.ispconfig_mailsize'))exec('mv -f '.escapeshellcmd($data['old']['maildir']).'.ispconfig_mailsize '.escapeshellcmd($data['new']['maildir'])); - // rmdir($data['old']['maildir']); + $app->system->exec_safe('mv -f ? ?'. $data['old']['maildir'], $data['new']['maildir']); $app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'], LOGLEVEL_DEBUG); } //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!is_dir($data['new']['maildir'].'/mdbox')) { - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Drafts'", $data["new"]["email"]); } } else { @@ -369,21 +342,19 @@ class mail_plugin { //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); - exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail"); - $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); + $app->system->exec_safe("su -c ? ?", "mv -f ".$data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 'vmail'); + $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path.'/new')) { - //exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log("Created Maildir "."su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, '', $group); //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { - if(is_dir($maildomain_path)) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user); // Avoid maildirmake quota bug, see debian bug #214911 - $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($maildomain_path)) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$maildomain_path, $user); // Avoid maildirmake quota bug, see debian bug #214911 + $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$maildomain_path."' ".$user, LOGLEVEL_DEBUG); } else { if(file_exists($data['new']['maildir'].'/maildirsize')) unlink($data['new']['maildir'].'/maildirsize'); $app->log('Set Maildir quota to unlimited.', LOGLEVEL_DEBUG); @@ -392,48 +363,36 @@ class mail_plugin { } if(!is_dir($data['new']['maildir'].'/.Sent')) { - //exec("su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Sent: '."su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } if(!is_dir($data['new']['maildir'].'/.Drafts')) { - //exec("su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Drafts: '."su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Drafts', $group); } if(!is_dir($data['new']['maildir'].'/.Trash')) { - //exec("su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Trash: '."su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Trash', $group); } if(!is_dir($data['new']['maildir'].'/.Junk')) { - //exec("su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Junk: '."su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } // Set permissions now recursive - exec('chown -R '.$user.':'.$group.' '.escapeshellcmd($data['new']['maildir'])); - $app->log('Set ownership on '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_DEBUG); + $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); + $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); // Move mailbox, if domain has changed and delete old mailbox if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) { if(is_dir($data['new']['maildir'])) { - exec("rm -fr ".escapeshellcmd($data['new']['maildir'])); - //rmdir($data['new']['maildir']); + $app->system->exec_safe("rm -fr ?", $data['new']['maildir']); } - exec('mv -f '.escapeshellcmd($data['old']['maildir']).' '.escapeshellcmd($data['new']['maildir'])); - // exec('mv -f '.escapeshellcmd($data['old']['maildir']).'/* '.escapeshellcmd($data['new']['maildir'])); - // if(is_file($data['old']['maildir'].'.ispconfig_mailsize'))exec('mv -f '.escapeshellcmd($data['old']['maildir']).'.ispconfig_mailsize '.escapeshellcmd($data['new']['maildir'])); - // rmdir($data['old']['maildir']); + $app->system->exec_safe('mv -f ? ?', $data['old']['maildir'], $data['new']['maildir']); $app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'], LOGLEVEL_DEBUG); } //This is to fix the maildrop quota not being rebuilt after the quota is changed. // Courier Layout if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { - if(is_dir($data['new']['maildir'])) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user); - $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($data['new']['maildir'])) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$data['new']['maildir'], $user); + $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$data['new']['maildir']."' ".$user, LOGLEVEL_DEBUG); } else { if(file_exists($data['new']['maildir'].'/maildirsize')) unlink($data['new']['maildir'].'/maildirsize'); $app->log('Set Maildir quota to unlimited.', LOGLEVEL_DEBUG); @@ -450,9 +409,9 @@ class mail_plugin { $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); $maildir_path_deleted = false; - $old_maildir_path = escapeshellcmd($data['old']['maildir']); + $old_maildir_path = $data['old']['maildir']; if($old_maildir_path != $mail_config['homedir_path'] && strlen($old_maildir_path) > strlen($mail_config['homedir_path']) && !stristr($old_maildir_path, '//') && !stristr($old_maildir_path, '..') && !stristr($old_maildir_path, '*') && strlen($old_maildir_path) >= 10) { - exec('rm -rf '.escapeshellcmd($old_maildir_path)); + $app->system->exec_safe('rm -rf ?', $old_maildir_path); $app->log('Deleted the Maildir: '.$data['old']['maildir'], LOGLEVEL_DEBUG); $maildir_path_deleted = true; } else { @@ -474,7 +433,7 @@ class mail_plugin { if (is_array($domain_rec)) { $mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id']; $mail_backup_files = 'mail'.$data['old']['mailuser_id']; - exec(escapeshellcmd('rm -f '.$mail_backup_dir.'/'.$mail_backup_files).'*'); + $app->system->exec_safe('rm -f ?*', $mail_backup_dir.'/'.$mail_backup_files); //* cleanup database $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?"; $app->db->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']); @@ -494,9 +453,9 @@ class mail_plugin { $maildomain_path_deleted = false; //* Delete maildomain path - $old_maildomain_path = escapeshellcmd($mail_config['homedir_path'].'/'.$data['old']['domain']); + $old_maildomain_path = $mail_config['homedir_path'].'/'.$data['old']['domain']; if($old_maildomain_path != $mail_config['homedir_path'] && !stristr($old_maildomain_path, '//') && !stristr($old_maildomain_path, '..') && !stristr($old_maildomain_path, '*') && !stristr($old_maildomain_path, '&') && strlen($old_maildomain_path) >= 10 && !empty($data['old']['domain'])) { - exec('rm -rf '.escapeshellcmd($old_maildomain_path)); + $app->system->exec_safe('rm -rf ?', $old_maildomain_path); $app->log('Deleted the mail domain directory: '.$old_maildomain_path, LOGLEVEL_DEBUG); $maildomain_path_deleted = true; } else { @@ -504,9 +463,9 @@ class mail_plugin { } //* Delete mailfilter path - $old_maildomain_path = escapeshellcmd($mail_config['homedir_path'].'/mailfilters/'.$data['old']['domain']); + $old_maildomain_path = $mail_config['homedir_path'].'/mailfilters/'.$data['old']['domain']; if($old_maildomain_path != $mail_config['homedir_path'].'/mailfilters/' && !stristr($old_maildomain_path, '//') && !stristr($old_maildomain_path, '..') && !stristr($old_maildomain_path, '*') && !stristr($old_maildomain_path, '&') && strlen($old_maildomain_path) >= 10 && !empty($data['old']['domain'])) { - exec('rm -rf '.escapeshellcmd($old_maildomain_path)); + $app->system->exec_safe('rm -rf ?', $old_maildomain_path); $app->log('Deleted the mail domain mailfilter directory: '.$old_maildomain_path, LOGLEVEL_DEBUG); } else { $app->log('Possible security violation when deleting the mail domain mailfilter directory: '.$old_maildomain_path, LOGLEVEL_ERROR); @@ -521,7 +480,7 @@ class mail_plugin { if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false; if($mount_backup){ $mail_backup_dir = $backup_dir.'/mail'.$data['old']['domain_id']; - exec(escapeshellcmd('rm -rf '.$mail_backup_dir)); + $app->system->exec_safe('rm -rf ?', $mail_backup_dir); //* cleanup database $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ?"; $app->db->query($sql, $conf['server_id'], $data['old']['domain_id']); diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index 6f042e9070c0a53be51d99e7f7029a3558e5e332..b937f82275192fbcef06f19e2e9f14eebb79a240 100755 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -29,6 +29,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @author Florian Schaal, info@schaal-24.de + @author Marius Burkard, m.burkard@ispconfig.org (modified for rspamd) @copyright Florian Schaal, info@schaal-24.de */ @@ -59,8 +60,8 @@ class mail_plugin_dkim { /** * This function is called when the plugin is loaded */ - function onLoad() { - global $app, $conf; + public function onLoad() { + global $app; /* Register for the events */ @@ -73,7 +74,7 @@ class mail_plugin_dkim { * This function gets the amavisd-config file * @return string path to the amavisd-config for dkim-keys */ - function get_amavis_config() { + private function get_amavis_config() { $pos_config=array( '/etc/amavisd.conf/50-user', '/etc/amavis/conf.d/50-user', @@ -101,42 +102,59 @@ class mail_plugin_dkim { * @param array $data mail-settings * @return boolean - true when the amavis-config and the dkim-dir are writeable */ - function check_system($data) { - global $app, $mail_config; + private function check_system() { + global $app, $conf, $mail_config; $app->uses('getconf'); - $check=true; + $check = true; - /* check for amavis-config */ - $amavis_configfile = $this->get_amavis_config(); - - //* Create the file if it does not exists. - if (substr_compare($amavis_configfile, '60-dkim', -7) === 0 && !file_exists($amavis_configfile)) - $app->system->touch($amavis_configfile); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if($mail_config['content_filter'] != 'rspamd') { + /* check for amavis-config */ + $amavis_configfile = $this->get_amavis_config(); - if ( $amavis_configfile == '' || !is_writeable($amavis_configfile) ) { - $app->log('Amavis-config not found or not writeable.', LOGLEVEL_ERROR); - $check=false; + //* Create the file if it does not exists. + if (substr_compare($amavis_configfile, '60-dkim', -7) === 0 && !file_exists($amavis_configfile)) { + $app->system->touch($amavis_configfile); + } + + if ( $amavis_configfile == '' || !is_writeable($amavis_configfile) ) { + $app->log('Amavis-config not found or not writeable.', LOGLEVEL_ERROR); + $check = false; + } } /* dir for dkim-keys writeable? */ - $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); if (isset($mail_config['dkim_path']) && !empty($mail_config['dkim_path']) && $mail_config['dkim_path'] != '/') { if (!is_dir($mail_config['dkim_path'])) { $app->log('DKIM Path '.$mail_config['dkim_path'].' not found - (re)created.', LOGLEVEL_DEBUG); if($app->system->is_user('amavis')) { $amavis_user='amavis'; + } elseif($app->system->is_user('_rspamd')) { + $amavis_user = '_rspamd'; + } elseif($app->system->is_user('rspamd')) { + $amavis_user = 'rspamd'; } elseif ($app->system->is_user('vscan')) { - $amavis_user='vscan'; + $amavis_user = 'vscan'; + } else { + $amavis_user = ''; } - else { - $amavis_user=''; + if($app->system->is_user('amavis')) { + $amavis_group='amavis'; + } elseif($app->system->is_user('_rspamd')) { + $amavis_group = '_rspamd'; + } elseif($app->system->is_user('rspamd')) { + $amavis_group = 'rspamd'; + } elseif ($app->system->is_user('vscan')) { + $amavis_group = 'vscan'; + } else { + $amavis_group = ''; } + if(!empty($amavis_user)) { - mkdir($mail_config['dkim_path'], 0750, true); - $app->system->chown($mail_config['dkim_path'], $amavis_user); + $app->system->mkdirpath($mail_config['dkim_path'], 0750, $amavis_user, $amavis_group); } else { - mkdir($mail_config['dkim_path'], 0755, true); + $app->system->mkdirpath($mail_config['dkim_path'], 0755); $app->log('No user amavis or vscan found - using root for '.$mail_config['dkim_path'], LOGLEVEL_WARNING); } } else { @@ -166,12 +184,15 @@ class mail_plugin_dkim { /** * This function restarts amavis */ - function restart_amavis() { + private function restart_amavis() { global $app; + $output = null; $initcommand = $app->system->getinitcommand(array('amavis', 'amavisd'), 'restart'); $app->log('Restarting amavis: '.$initcommand.'.', LOGLEVEL_DEBUG); exec($initcommand, $output); - foreach($output as $logline) $app->log($logline, LOGLEVEL_DEBUG); + foreach($output as $logline) { + $app->log($logline, LOGLEVEL_DEBUG); + } } /** @@ -181,8 +202,8 @@ class mail_plugin_dkim { * @param string $key_domain mail-domain * @return bool - true when the private key was written to disk */ - function write_dkim_key($key_file, $key_value, $key_domain) { - global $app, $mailconfig; + private function write_dkim_key($key_file, $key_value, $key_domain) { + global $app; $success=false; if ($key_file == '' || $key_value == '' || $key_domain == '') { $app->log('DKIM internal error for domain '.$key_domain, LOGLEVEL_ERROR); @@ -191,14 +212,21 @@ class mail_plugin_dkim { if ( $app->system->file_put_contents($key_file.'.private', $key_value) ) { $app->log('Saved DKIM Private-key to '.$key_file.'.private', LOGLEVEL_DEBUG); $success=true; + $pubkey = null; + $result = 0; /* now we get the DKIM Public-key */ - exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout 2> /dev/null', $pubkey, $result); + $app->system->exec_safe('cat ?|openssl rsa -pubout 2> /dev/null', $key_file.'.private'); + $pubkey = $app->system->last_exec_out(); $public_key=''; - foreach($pubkey as $values) $public_key=$public_key.$values."\n"; + foreach($pubkey as $values) { + $public_key = $public_key . $values . "\n"; + } /* save the DKIM Public-key in dkim-dir */ - if ( $app->system->file_put_contents($key_file.'.public', $public_key) ) + if($app->system->file_put_contents($key_file.'.public', $public_key)) { $app->log('Saved DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG); - else $app->log('Unable to save DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG); + } else { + $app->log('Unable to save DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG); + } } else { $app->log('Unable to save DKIM Private-key to '.$key_file.'.private', LOGLEVEL_ERROR); } @@ -210,26 +238,32 @@ class mail_plugin_dkim { * @param string $key_file full path to the key-file * @param string $key_domain mail-domain */ - function remove_dkim_key($key_file, $key_domain) { + private function remove_dkim_key($key_file, $key_domain) { global $app; if (file_exists($key_file.'.private')) { $app->system->unlink($key_file.'.private'); $app->log('Deleted the DKIM Private-key for '.$key_domain.'.', LOGLEVEL_DEBUG); - } else $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } else { + $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } if (file_exists($key_file.'.public')) { $app->system->unlink($key_file.'.public'); $app->log('Deleted the DKIM Public-key for '.$key_domain.'.', LOGLEVEL_DEBUG); - } else $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } else { + $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } } /** * This function adds the entry to the amavisd-config * @param string $key_domain mail-domain */ - function add_to_amavis($key_domain, $selector, $old_selector) { + private function add_to_amavis($key_domain, $selector, $old_selector) { global $app, $mail_config; - if (empty($selector)) $selector = 'default'; + if (empty($selector)) { + $selector = 'default'; + } $restart = false; $amavis_configfile = $this->get_amavis_config(); @@ -267,7 +301,7 @@ class mail_plugin_dkim { * This function removes the entry from the amavisd-config * @param string $key_domain mail-domain */ - function remove_from_amavis($key_domain) { + private function remove_from_amavis($key_domain) { global $app; $restart = false; @@ -305,14 +339,20 @@ class mail_plugin_dkim { * This function controlls new key-files and amavisd-entries * @param array $data mail-settings */ - function add_dkim($data) { - global $app; + private function add_dkim($data) { + global $app, $conf; if ($data['new']['active'] == 'y') { $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } if ($this->write_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'], $data['new']['dkim_private'], $data['new']['domain'])) { - if ($this->add_to_amavis($data['new']['domain'], $data['new']['dkim_selector'], $data['old']['dkim_selector'] )) { + if($mail_config['content_filter'] == 'rspamd') { + $app->system->replaceLine('/etc/rspamd/local.d/dkim_domains.map', 'REGEX:/^' . preg_quote($data['new']['domain'], '/') . ' /', $data['new']['domain'] . ' ' . $mail_config['dkim_path']."/".$data['new']['domain'] . '.private'); + $app->system->replaceLine('/etc/rspamd/local.d/dkim_selectors.map', 'REGEX:/^' . preg_quote($data['new']['domain'], '/') . ' /', $data['new']['domain'] . ' ' . $data['new']['dkim_selector']); + + $app->services->restartServiceDelayed('rspamd', 'reload'); + } elseif ($this->add_to_amavis($data['new']['domain'], $data['new']['dkim_selector'], $data['old']['dkim_selector'] )) { $this->restart_amavis(); } else { $this->remove_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'], $data['new']['domain']); @@ -326,86 +366,91 @@ class mail_plugin_dkim { /** * This function controlls the removement of keyfiles (public and private) * and the entry in the amavisd-config - * @param array $data mail-settings + * @param array $_data mail-settings */ - function remove_dkim($_data) { - global $app; + private function remove_dkim($_data) { + global $app, $conf; $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } $this->remove_dkim_key($mail_config['dkim_path']."/".$_data['domain'], $_data['domain']); - if ($this->remove_from_amavis($_data['domain'])) + + if($mail_config['content_filter'] == 'rspamd') { + $app->system->removeLine('/etc/rspamd/local.d/dkim_domains.map', 'REGEX:/^' . preg_quote($_data['domain'], '/') . ' /'); + $app->system->removeLine('/etc/rspamd/local.d/dkim_selectors.map', 'REGEX:/^' . preg_quote($_data['domain'], '/') . ' /'); + $app->services->restartServiceDelayed('rspamd', 'reload'); + } elseif ($this->remove_from_amavis($_data['domain'])) { $this->restart_amavis(); + } } /** * Function called by onLoad * deletes dkim-keys */ - function domain_dkim_delete($event_name, $data) { - if (isset($data['old']['dkim']) && $data['old']['dkim'] == 'y' && $data['old']['active'] == 'y') + public function domain_dkim_delete($event_name, $data) { + if (isset($data['old']['dkim']) && $data['old']['dkim'] == 'y' && $data['old']['active'] == 'y') { $this->remove_dkim($data['old']); + } } /** * Function called by onLoad * insert dkim-keys */ - function domain_dkim_insert($event_name, $data) { - if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system($data)) + public function domain_dkim_insert($event_name, $data) { + if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system()) { $this->add_dkim($data); + } } /** * Function called by onLoad * chang dkim-settings */ - function domain_dkim_update($event_name, $data) { + public function domain_dkim_update($event_name, $data) { global $app; if($data['new']['dkim'] == 'y' || $data['old']['dkim'] == 'y'){ - if ($this->check_system($data)) { + if ($this->check_system()) { /* maildomain disabled */ if ($data['new']['active'] == 'n' && $data['old']['active'] == 'y' && $data['new']['dkim']=='y') { $app->log('Maildomain '.$data['new']['domain'].' disabled - remove DKIM-settings', LOGLEVEL_DEBUG); $this->remove_dkim($data['new']); } /* maildomain re-enabled */ - if ($data['new']['active'] == 'y' && $data['old']['active'] == 'n' && $data['new']['dkim']=='y') + if ($data['new']['active'] == 'y' && $data['old']['active'] == 'n' && $data['new']['dkim']=='y') { $this->add_dkim($data); - + } + /* maildomain active - only dkim changes */ if ($data['new']['active'] == 'y' && $data['old']['active'] == 'y') { /* dkim disabled */ if ($data['new']['dkim'] != $data['old']['dkim'] && $data['new']['dkim'] == 'n') { $this->remove_dkim($data['new']); } - /* dkim enabled */ - elseif ($data['new']['dkim'] != $data['old']['dkim'] && $data['new']['dkim'] == 'y') { - $this->add_dkim($data); - } - /* new private-key */ - if ($data['new']['dkim_private'] != $data['old']['dkim_private'] && $data['new']['dkim'] == 'y') { - $this->add_dkim($data); - } - /* new selector */ - if ($data['new']['dkim_selector'] != $data['old']['dkim_selector'] && $data['new']['dkim'] == 'y') { + /* dkim enabled + * or new private-key + * or new selector + * or new domain-name + */ + elseif ( + ($data['new']['dkim'] != $data['old']['dkim'] && $data['new']['dkim'] == 'y') + || ($data['new']['dkim_private'] != $data['old']['dkim_private'] && $data['new']['dkim'] == 'y') + || ($data['new']['dkim_selector'] != $data['old']['dkim_selector'] && $data['new']['dkim'] == 'y') + || ($data['new']['domain'] != $data['old']['domain']) + ) { + if ($data['new']['domain'] != $data['old']['domain']) { + $this->remove_dkim($data['old']); + } $this->add_dkim($data); } - /* new domain-name */ - if ($data['new']['domain'] != $data['old']['domain']) { - $this->remove_dkim($data['old']); + /* resync */ + elseif($data['new'] == $data['old'] && $data['new']['dkim']=='y') { $this->add_dkim($data); } } - - /* resync */ - if ($data['new']['active'] == 'y' && $data['new'] == $data['old'] && $data['new']['dkim']=='y') { - $this->add_dkim($data); - } } } } - } - -?> diff --git a/server/plugins-available/mailman_plugin.inc.php b/server/plugins-available/mailman_plugin.inc.php index 99ac9db7d23d8add4c1a0f5d94f447c265e282b9..e6251aedf10637a4891900f3ec2c9e13455660b9 100644 --- a/server/plugins-available/mailman_plugin.inc.php +++ b/server/plugins-available/mailman_plugin.inc.php @@ -73,7 +73,7 @@ class mailman_plugin { $this->update_config(); - $pid = exec("nohup /usr/lib/mailman/bin/newlist -u ".escapeshellcmd($data["new"]["domain"])." -e ".escapeshellcmd($data["new"]["domain"])." ".escapeshellcmd($data["new"]["listname"])." ".escapeshellcmd($data["new"]["email"])." ".escapeshellcmd($data["new"]["password"])." >/dev/null 2>&1 & echo $!;"); + $pid = $app->system->exec_safe("nohup /usr/lib/mailman/bin/newlist -u ? -e ? ? ? ? >/dev/null 2>&1 & echo $!;", $data["new"]["domain"], $data["new"]["domain"], $data["new"]["listname"], $data["new"]["email"], $data["new"]["password"]); // wait for /usr/lib/mailman/bin/newlist-call $running = true; do { @@ -91,7 +91,7 @@ class mailman_plugin { exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); // Fix list URL - exec('/usr/sbin/withlist -l -r fix_url '.escapeshellcmd($data["new"]["listname"])); + $app->system->exec_safe('/usr/sbin/withlist -l -r fix_url ?', $data["new"]["listname"]); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ?", $data["new"]['mailinglist_id']); @@ -104,7 +104,7 @@ class mailman_plugin { $this->update_config(); if($data["new"]["password"] != $data["old"]["password"] && $data["new"]["password"] != '') { - exec("nohup /usr/lib/mailman/bin/change_pw -l ".escapeshellcmd($data["new"]["listname"])." -p ".escapeshellcmd($data["new"]["password"])." >/dev/null 2>&1 &"); + $app->system->exec_safe("nohup /usr/lib/mailman/bin/change_pw -l ? -p ? >/dev/null 2>&1 &", $data["new"]["listname"], $data["new"]["password"]); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ?", $data["new"]['mailinglist_id']); } @@ -118,7 +118,7 @@ class mailman_plugin { $this->update_config(); - exec("nohup /usr/lib/mailman/bin/rmlist -a ".escapeshellcmd($data["old"]["listname"])." >/dev/null 2>&1 &"); + $app->system->exec_safe("nohup /usr/lib/mailman/bin/rmlist -a ? >/dev/null 2>&1 &", $data["old"]["listname"]); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index efe7142c8d68e953942839652b98cb90d5665a92..a26129eed96e1b8e9499c61efa7ecb831da5114d 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -344,15 +344,15 @@ class mysql_clientdb_plugin { $triggers_array[] = $row; } $app->log('Dumping triggers from '.$old_name, LOGLEVEL_DEBUG); - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$old_name." -d -t -R -E > ".$timestamp.$old_name.'.triggers'; - exec($command, $out, $ret); + $command = "mysqldump -h ? -u ? -p? ? -d -t -R -E > ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $old_name, $timestamp.$old_name.'.triggers'); + $ret = $app->system->last_exec_retcode(); $app->system->chmod($timestamp.$old_name.'.triggers', 0600); if ($ret != 0) { unset($triggers_array); $app->system->unlink($timestamp.$old_name.'.triggers'); $app->log('Unable to dump triggers from '.$old_name, LOGLEVEL_ERROR); } - unset($out); } //* save views @@ -366,15 +366,15 @@ class mysql_clientdb_plugin { } $app->log('Dumping views from '.$old_name, LOGLEVEL_DEBUG); $temp_views = implode(' ', $temp); - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$old_name." ".$temp_views." > ".$timestamp.$old_name.'.views'; - exec($command, $out, $ret); + $command = "mysqldump -h ? -u ? -p? ? ? > ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $old_name, $temp_views, $timestamp.$old_name.'.views'); + $ret = $app->system->last_exec_retcode(); $app->system->chmod($timestamp.$old_name.'.views', 0600); if ($ret != 0) { unset($views_array); $app->system->unlink($timestamp.$old_name.'.views'); $app->log('Unable to dump views from '.$old_name, LOGLEVEL_ERROR); } - unset($out); unset($temp); unset($temp_views); } @@ -405,8 +405,9 @@ class mysql_clientdb_plugin { unset($_trigger); } //* update triggers, routines and events - $command = "mysql -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$new_name." < ".$timestamp.$old_name.'.triggers'; - exec($command, $out, $ret); + $command = "mysql -h ? -u ? -p? ? < ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $new_name, $timestamp.$old_name.'.triggers'); + $ret = $app->system->last_exec_retcode(); if ($ret != 0) { $app->log('Unable to import triggers for '.$new_name, LOGLEVEL_ERROR); } else { @@ -416,8 +417,9 @@ class mysql_clientdb_plugin { //* loading views if (@is_array($views_array)) { - $command = "mysql -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$new_name." < ".$timestamp.$old_name.'.views'; - exec($command, $out, $ret); + $command = "mysql -h ? -u ? -p? ? < ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $new_name, $timestamp.$old_name.'.views'); + $ret = $app->system->last_exec_retcode(); if ($ret != 0) { $app->log('Unable to import views for '.$new_name, LOGLEVEL_ERROR); } else { diff --git a/server/plugins-available/network_settings_plugin.inc.php b/server/plugins-available/network_settings_plugin.inc.php index 5ce6f934b810c64148b997690f57fc4263b41f9c..1ed12f3a1c5a87bcc792f64274a332e6dd08b14f 100644 --- a/server/plugins-available/network_settings_plugin.inc.php +++ b/server/plugins-available/network_settings_plugin.inc.php @@ -280,8 +280,8 @@ class network_settings_plugin { //* Executing the postconf commands foreach($postconf_commands as $cmd) { - $command = "postconf -e '$cmd'"; - exec($command); + $command = "postconf -e ?"; + $app->system->exec_safe($command, $cmd); } $app->log('Changed changed myhostname and mydestination in postfix main.cf to '.$new_hostname, LOGLEVEL_DEBUG); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 4df2f843171754d3ce5206187e5300d1ab20f0ea..a8a3c3bf16be22f3e737ef8bfb6adf9ef32d2572 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -105,7 +105,6 @@ class nginx_plugin { //* Only vhosts can have a ssl cert if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") return; - // if(!is_dir($data['new']['document_root'].'/ssl')) exec('mkdir -p '.$data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/ssl') && !is_dir($data['old']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); $ssl_dir = $data['new']['document_root'].'/ssl'; @@ -170,36 +169,36 @@ class nginx_plugin { $ssl_cnf_file = $ssl_dir.'/openssl.conf'; $app->system->file_put_contents($ssl_cnf_file, $ssl_cnf); - $rand_file = escapeshellcmd($rand_file); - $key_file2 = escapeshellcmd($key_file2); + $rand_file = $rand_file; + $key_file2 = $key_file2; $openssl_cmd_key_file2 = $key_file2; if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate - $key_file = escapeshellcmd($key_file); + $key_file = $key_file; $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $ssl_days = 3650; - $csr_file = escapeshellcmd($csr_file); + $csr_file = $csr_file; $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate - $config_file = escapeshellcmd($ssl_cnf_file); - $crt_file = escapeshellcmd($crt_file); + $config_file = $ssl_cnf_file; + $crt_file = $crt_file; $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file2 2048"); - exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); - exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file2 -out $openssl_cmd_key_file"); + $app->system->exec_safe("openssl genrsa -des3 -rand ? -passout pass:? -out ? 2048", $rand_file, $ssl_password, $openssl_cmd_key_file2); + $app->system->exec_safe("openssl req -new -sha256 -passin pass:? -passout pass:? -key ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $ssl_days, $config_file); + $app->system->exec_safe("openssl rsa -passin pass:? -in ? -out ?", $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_key_file); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file"); + $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -in $openssl_cmd_csr_file -out $openssl_cmd_crt_file -days $ssl_days -config $config_file "); + $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; @@ -240,7 +239,8 @@ class nginx_plugin { if($data["new"]["ssl_action"] == 'save') { $tmp = array(); $crt_data = ''; - exec('openssl x509 -noout -text -in '.escapeshellarg($crt_file),$tmp); + $app->system->exec_safe('openssl x509 -noout -text -in ?', $crt_file); + $tmp = $app->system->last_exec_out(); $crt_data = implode("\n",$tmp); if(stristr($crt_data,'.acme.invalid')) { $data["new"]["ssl_action"] = ''; @@ -303,7 +303,7 @@ class nginx_plugin { if($data['new']['ssl_action'] == 'del') { if(file_exists($web_config['CA_path'].'/openssl.cnf') && !is_link($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke ".escapeshellcmd($crt_file)); + $app->system->exec_safe("openssl ca -batch -config ? -passin pass:? -revoke ?", $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $crt_file); $app->log("Revoking CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; $app->system->unlink($csr_file); @@ -439,31 +439,31 @@ class nginx_plugin { //* Check if a ispconfigend user and group exists and create them if(!$app->system->is_group('ispconfigend')) { - exec('groupadd --gid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('groupadd --gid ? ispconfigend', $connect_userid_to_webid_start + 10000); } if(!$app->system->is_user('ispconfigend')) { - exec('useradd -g ispconfigend -d /usr/local/ispconfig --uid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('useradd -g ispconfigend -d /usr/local/ispconfig --uid ? ispconfigend', $connect_userid_to_webid_start + 10000); } } else { $fixed_uid_param = ''; $fixed_gid_param = ''; } - $groupname = escapeshellcmd($data['new']['system_group']); + $groupname = $data['new']['system_group']; if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - exec('groupadd '.$fixed_gid_param.' '.$groupname); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname); + $app->system->exec_safe('groupadd ' . $fixed_gid_param . ' ?', $groupname); + if($nginx_chrooted) $app->system->exec_safe('chroot ? groupadd ?', $web_config['website_basedir'], $groupname); $app->log('Adding the group: '.$groupname, LOGLEVEL_DEBUG); } - $username = escapeshellcmd($data['new']['system_user']); + $username = $data['new']['system_user']; if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { if($web_config['add_web_users_to_sshusers_group'] == 'y') { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } else { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } $app->log('Adding the user: '.$username, LOGLEVEL_DEBUG); } @@ -486,7 +486,7 @@ class nginx_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // create the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -510,12 +510,12 @@ class nginx_plugin { } //* Unmount the old log directory bfore we move the log dir - exec('umount '.escapeshellcmd($old_dir.'/log')); + $app->system->exec_safe('umount ?', $old_dir.'/log'); //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); $app->system->web_folder_protection($data['old']['document_root'], false); - exec('mv '.escapeshellarg($data['old']['document_root']).' '.escapeshellarg($new_dir)); + $app->system->exec_safe('mv ? ?', $data['old']['document_root'], $new_dir); //$app->system->rename($data['old']['document_root'],$new_dir); $app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir, LOGLEVEL_DEBUG); @@ -523,17 +523,17 @@ class nginx_plugin { $data['new']['php_open_basedir'] = str_replace($data['old']['document_root'], $data['new']['document_root'], $data['old']['php_open_basedir']); //* Change the owner of the website files to the new website owner - exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir); + $app->system->exec_safe('chown --recursive --from=?:? ?:? ?', $data['old']['system_user'], $data['old']['system_group'], $data['new']['system_user'], $data['new']['system_group'], $new_dir); //* Change the home directory and group of the website user - $command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' ; usermod'; - $command .= ' --home '.escapeshellcmd($data['new']['document_root']); - $command .= ' --gid '.escapeshellcmd($data['new']['system_group']); - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - exec($command); + $command = 'killall -u ? ; usermod'; + $command .= ' --home ?'; + $command .= ' --gid ?'; + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user'], $data['new']['document_root'], $data['new']['system_group'], $data['new']['system_user']); } - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + if($nginx_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* Change the log mount /* @@ -555,7 +555,7 @@ class nginx_plugin { $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); } @@ -567,11 +567,9 @@ class nginx_plugin { if(!is_dir($data['new']['document_root'].'/' . $web_folder)) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder); if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/error') and $data['new']['errordocs']) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/error'); if($data['new']['stats_type'] != '' && !is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); - //if(!is_dir($data['new']['document_root'].'/'.$log_folder)) exec('mkdir -p '.$data['new']['document_root'].'/'.$log_folder); if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin'); if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp'); - //if(!is_dir($data['new']['document_root'].'/webdav')) $app->system->mkdirpath($data['new']['document_root'].'/webdav'); if(!is_dir($data['new']['document_root'].'/.ssh')) { $app->system->mkdirpath($data['new']['document_root'].'/.ssh'); @@ -591,7 +589,7 @@ class nginx_plugin { // Remove the symlink for the site, if site is renamed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']); + if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) $app->system->exec_safe('rm -rf ?', '/var/log/ispconfig/httpd/'.$data['old']['domain']); if(is_link($data['old']['document_root'].'/'.$old_log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$old_log_folder); //* remove old log mount @@ -599,19 +597,18 @@ class nginx_plugin { $app->system->removeLine('/etc/fstab', $fstab_line); //* Unmount log directory - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); + $app->system->exec_safe('umount ?', $data['old']['document_root'].'/'.$old_log_folder); } //* Create the log dir if nescessary and mount it if(!is_dir($data['new']['document_root'].'/'.$log_folder) || !is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain']) || is_link($data['new']['document_root'].'/'.$log_folder)) { if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder); - if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']); + if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) $app->system->exec_safe('mkdir -p ?', '/var/log/ispconfig/httpd/'.$data['new']['domain']); $app->system->mkdirpath($data['new']['document_root'].'/'.$log_folder); $app->system->chown($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chgrp($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chmod($data['new']['document_root'].'/'.$log_folder, 0755); - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); //* add mountpoint to fstab $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait'; $fstab_line .= @($web_config['network_filesystem'] == 'y')?',_netdev 0 0':' 0 0'; @@ -636,7 +633,7 @@ class nginx_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // remove the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -657,11 +654,10 @@ class nginx_plugin { } // create the symlinks, if not exist if(!is_link($tmp_symlink)) { - // exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); if ($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($data["new"]["document_root"]), escapeshellcmd($tmp_symlink)); + $app->system->create_relative_link($data["new"]["document_root"], $tmp_symlink); } else { - exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); + $app->system->exec_safe("ln -s ? ?", $data["new"]["document_root"]."/", $tmp_symlink); } $app->log('Creating symlink: ln -s '.$data['new']['document_root'].'/ '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -681,69 +677,65 @@ class nginx_plugin { // Copy the error pages if($data['new']['errordocs']) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp '. $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } //* Copy the web skeleton files only when there is no index.ph or index.html file yet if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { - if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2))) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf-custom/index/robots.txt')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf-custom/index/.htaccess')) { - // exec('cp ' . $conf['rootpath'] . '/conf-custom/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); - //} } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/index.html'); } else { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf/index/robots.txt')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf/index/.htaccess')) exec('cp ' . $conf['rootpath'] . '/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); } } } - exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + $app->system->exec_safe('chmod -R a+r ?', $data['new']['document_root'].'/' . $web_folder . '/'); //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); - exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); + $app->system->exec_safe('chown -R ?:? ?', $data['new']['system_user'], $data['new']['system_group'], $error_page_path); } // end copy error docs // Set the quota for the user, but only for vhosts, not vhostsubdomains or vhostalias @@ -758,39 +750,39 @@ class nginx_plugin { } // get the primitive folder for document_root and the filesystem, will need it later. - $df_output=explode(" ", exec("df -T " . escapeshellarg($data['new']['document_root']) . "|awk 'END{print \$2,\$NF}'")); + $df_output=explode(" ", $app->system->exec_safe("df -T ?|awk 'END{print \$2,\$NF}'", $data['new']['document_root'])); $file_system = $df_output[0]; $primitive_root = $df_output[1]; if($file_system == 'xfs') { - exec("xfs_quota -x -c " . escapeshellarg("limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username) . " " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username, $primitive_root); // xfs only supports timers globally, not per user. - exec("xfs_quota -x -c 'timer -bir -i 604800' " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c 'timer -bir -i 604800' ?", $primitive_root); unset($project_uid, $username_position, $xfs_projects); unset($primitive_root, $df_output, $mb_hard, $mb_soft); } else { if($app->system->is_installed('setquota')) { - exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); - exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); + $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); + $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } } } if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) { // Chown and chmod the directories below the document root - $app->system->_exec('chown -R '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); // The document root itself has to be owned by root in normal level and by the web owner in security level 20 if($web_config['security_level'] == 20) { - $app->system->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); } else { - $app->system->_exec('chown root:root '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown root:root ?', $data['new']['document_root'].'/' . $web_folder); } } //* add the nginx user to the client group if this is a vhost and security level is set to high, no matter if this is an insert or update and regardless of set_folder_permissions_on_update - if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['nginx_user'])); + if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, $web_config['nginx_user']); //* If the security level is set to high if(($this->action == 'insert' && $data['new']['type'] == 'vhost') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhost') or ($web_folder != $old_web_folder && $data['new']['type'] == 'vhost')) { @@ -820,18 +812,18 @@ class nginx_plugin { if($web_config['add_web_users_to_sshusers_group'] == 'y') { $command = 'usermod'; $command .= ' --groups sshusers'; - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - $app->system->_exec($command); + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user']); } //* if we have a chrooted nginx environment if($nginx_chrooted) { - $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* add the nginx user to the client group in the chroot environment $tmp_groupfile = $app->system->server_conf['group_datei']; $app->system->server_conf['group_datei'] = $web_config['website_basedir'].'/etc/group'; - $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['nginx_user'])); + $app->system->add_user_to_group($groupname, $web_config['nginx_user']); $app->system->server_conf['group_datei'] = $tmp_groupfile; unset($tmp_groupfile); } @@ -945,7 +937,7 @@ class nginx_plugin { if($data['new']['type'] == 'vhost') { // Change the ownership of the error log to the root user - if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) exec('touch '.escapeshellcmd('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')); + if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) $app->system->exec_safe('touch ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log'); $app->system->chown('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); $app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); } @@ -991,6 +983,7 @@ class nginx_plugin { } } } + if($data['new']['ip_address'] == '*' && $data['new']['ipv6_address'] == '') $tpl->setVar('ipv6_wildcard', 1); // PHP-FPM // Support for multiple PHP versions @@ -1022,14 +1015,14 @@ class nginx_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } $pool_dir = trim($pool_dir); if(substr($pool_dir, -1) != '/') $pool_dir .= '/'; $pool_name = 'web'.$data['new']['domain_id']; - $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if($data['new']['php_fpm_use_socket'] == 'y'){ @@ -1041,6 +1034,8 @@ class nginx_plugin { } $tpl->setVar('use_tcp', $use_tcp); $tpl->setVar('use_socket', $use_socket); + $tpl->setVar('php_fpm_chroot', $data['new']['php_fpm_chroot']); + $tpl->setVar('php_fpm_chroot_web_folder', sprintf('/%s', trim($web_folder, '/'))); $fpm_socket = $socket_dir.$pool_name.'.sock'; $tpl->setVar('fpm_socket', $fpm_socket); $tpl->setVar('rnd_php_dummy_file', '/'.md5(uniqid(microtime(), 1)).'.htm'); @@ -1811,7 +1806,7 @@ class nginx_plugin { $basic_auth_locations = $this->_create_web_folder_auth_configuration($data['new']); if(is_array($basic_auth_locations) && !empty($basic_auth_locations)) $tpl->setLoop('basic_auth_locations', $basic_auth_locations); - $vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_file = $web_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'; //* Make a backup copy of vhost file if(file_exists($vhost_file)) copy($vhost_file, $vhost_file.'~'); @@ -1822,17 +1817,17 @@ class nginx_plugin { //* Set the symlink to enable the vhost //* First we check if there is a old type of symlink and remove it - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) $app->system->unlink($vhost_symlink); //* Remove old or changed symlinks if($data['new']['subdomain'] != $data['old']['subdomain'] or $data['new']['active'] == 'n') { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -1841,9 +1836,9 @@ class nginx_plugin { //* New symlink if($data['new']['subdomain'] == '*') { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; } else { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; } if($data['new']['active'] == 'y' && !is_link($vhost_symlink)) { symlink($vhost_file, $vhost_symlink); @@ -1852,22 +1847,22 @@ class nginx_plugin { // remove old symlink and vhost file, if domain name of the site has changed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; $app->system->unlink($vhost_file); $app->log('Removing file: '.$vhost_file, LOGLEVEL_DEBUG); } @@ -1887,7 +1882,12 @@ class nginx_plugin { $this->awstats_update($data, $web_config); } - $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir); + //* Remove Stats-Folder when Statistics set to none + if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { + $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); + } + + $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); $this->hhvm_update($data, $web_config); if($web_config['check_apache_config'] == 'y') { @@ -2054,14 +2054,10 @@ class nginx_plugin { if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias'){ if(is_array($log_folders) && !empty($log_folders)){ foreach($log_folders as $log_folder){ - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } } else { - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } // remove letsencrypt if it exists (renew will always fail otherwise) @@ -2101,19 +2097,19 @@ class nginx_plugin { } else { //* This is a website // Deleting the vhost file, symlink and the data directory - $vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -2123,11 +2119,11 @@ class nginx_plugin { $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') { - $docroot = escapeshellcmd($data['old']['document_root']); + $docroot = $data['old']['document_root']; if($docroot != '' && !stristr($docroot, '..')) { if($data['old']['type'] == 'vhost') { // this is a vhost - we delete everything in here. - exec('rm -rf '.$docroot); + $app->system->exec_safe('rm -rf ?', $docroot); } elseif(!stristr($data['old']['web_folder'], '..')) { // this is a vhost subdomain // IMPORTANT: do some folder checks before we delete this! @@ -2177,7 +2173,7 @@ class nginx_plugin { unset($used_paths); } - if($do_delete === true && $delete_folder !== '') exec('rm -rf '.$docroot.'/'.$delete_folder); + if($do_delete === true && $delete_folder !== '') $app->system->exec_safe('rm -rf ?', $docroot.'/'.$delete_folder); unset($delete_folder); unset($path_elements); @@ -2190,12 +2186,12 @@ class nginx_plugin { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['fastcgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($fastcgi_starter_path)) { - exec('rm -rf '.$fastcgi_starter_path); + $app->system->exec_safe('rm -rf ?', $fastcgi_starter_path); } } else { $fcgi_starter_script = $fastcgi_starter_path.$web_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id']; if (file_exists($fcgi_starter_script)) { - exec('rm -f '.$fcgi_starter_script); + $app->system->exec_safe('rm -f ?', $fcgi_starter_script); } } } @@ -2216,12 +2212,12 @@ class nginx_plugin { $cgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['cgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($cgi_starter_path)) { - exec('rm -rf '.$cgi_starter_path); + $app->system->exec_safe('rm -rf ?', $cgi_starter_path); } } else { $cgi_starter_script = $cgi_starter_path.'php-cgi-starter_web'.$data['old']['domain_id']; if (file_exists($cgi_starter_script)) { - exec('rm -f '.$cgi_starter_script); + $app->system->exec_safe('rm -f ?', $cgi_starter_script); } } } @@ -2250,16 +2246,16 @@ class nginx_plugin { } // Delete the log file directory - $vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/httpd/'.$data['old']['domain']); - if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) exec('rm -rf '.$vhost_logfile_dir); + $vhost_logfile_dir = '/var/log/ispconfig/httpd/'.$data['old']['domain']; + if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) $app->system->exec_safe('rm -rf ?', $vhost_logfile_dir); $app->log('Removing website logfile directory: '.$vhost_logfile_dir, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost') { //delete the web user - $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' ; userdel'; - $command .= ' '.escapeshellcmd($data['old']['system_user']); - exec($command); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $command = 'killall -u ? ; userdel'; + $command .= ' ?'; + $app->system->exec_safe($command, $data['old']['system_user'], $data['old']['system_user']); + if($nginx_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); } @@ -2280,7 +2276,7 @@ class nginx_plugin { if($mount_backup){ $web_backup_dir = $backup_dir.'/web'.$data_old['domain_id']; //** do not use rm -rf $web_backup_dir because database(s) may exits - exec(escapeshellcmd('rm -f '.$web_backup_dir.'/web'.$data_old['domain_id'].'_').'*'); + $app->system->exec_safe('rm -f ?*', $web_backup_dir.'/web'.$data_old['domain_id'].'_'); //* cleanup database $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename LIKE ?"; $app->db->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%"); @@ -2330,7 +2326,7 @@ class nginx_plugin { //* Get the folder path. if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1); if(substr($folder['path'], -1) == '/') $folder['path'] = substr($folder['path'], 0, -1); - $folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$folder['path']); + $folder_path = $website['document_root'].'/' . $web_folder . '/'.$folder['path']; if(substr($folder_path, -1) != '/') $folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2436,7 +2432,7 @@ class nginx_plugin { if(substr($data['new']['path'], 0, 1) == '/') $data['new']['path'] = substr($data['new']['path'], 1); if(substr($data['new']['path'], -1) == '/') $data['new']['path'] = substr($data['new']['path'], 0, -1); - $new_folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$data['new']['path']); + $new_folder_path = $website['document_root'].'/' . $web_folder . '/'.$data['new']['path']; if(substr($new_folder_path, -1) != '/') $new_folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2483,7 +2479,7 @@ class nginx_plugin { //* Create the domain.auth file which is included in the vhost configuration file $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - $basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth'); + $basic_auth_file = $web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth'; //$app->load('tpl'); //$tpl = new tpl(); //$tpl->newTemplate('nginx_http_authentication.auth.master'); @@ -2608,9 +2604,9 @@ class nginx_plugin { $content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $content); file_put_contents('/etc/init.d/hhvm_' . $data['new']['system_user'], $content); - exec('chmod +x /etc/init.d/hhvm_' . $data['new']['system_user'] . ' >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['new']['system_user'] . ' defaults >/dev/null 2>&1'); - exec('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); + $app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); if(is_dir('/etc/monit/conf.d')){ $monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content); @@ -2622,7 +2618,7 @@ class nginx_plugin { } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') { if($data['old']['system_user'] != ''){ exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['old']['system_user'] . ' remove >/dev/null 2>&1'); + $app->system->exec_safe('/usr/sbin/update-rc.d remove >/dev/null 2>&1', 'hhvm_' . $data['old']['system_user']); unlink('/etc/init.d/hhvm_' . $data['old']['system_user']); if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini'); } @@ -2640,7 +2636,7 @@ class nginx_plugin { } //* Update the PHP-FPM pool configuration file - private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name, $socket_dir) { + private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder = null) { global $app, $conf; $pool_dir = trim($pool_dir); $rh_releasefiles = array('/etc/centos-release', '/etc/redhat-release'); @@ -2735,7 +2731,7 @@ class nginx_plugin { $tpl->setVar('document_root', $data['new']['document_root']); $tpl->setVar('security_level', $web_config['security_level']); $tpl->setVar('domain', $data['new']['domain']); - $php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']); + $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; $tpl->setVar('php_open_basedir', $php_open_basedir); if($php_open_basedir != ''){ $tpl->setVar('enable_php_open_basedir', ''); @@ -2743,6 +2739,15 @@ class nginx_plugin { $tpl->setVar('enable_php_open_basedir', ';'); } + // Chrooted PHP-FPM + if ($data['new']['php_fpm_chroot'] === 'y') { + $tpl->setVar('php_fpm_chroot', $data['new']['php_fpm_chroot']); + $tpl->setVar('php_fpm_chroot_dir', $data['new']['document_root']); + $tpl->setVar('php_fpm_chroot_web_folder', sprintf('/%s', trim($web_folder, '/'))); + $tpl->setVar('php_open_basedir', str_replace($tpl->getVar('document_root'), '', $tpl->getVar('php_open_basedir'))); + $tpl->setVar('document_root', ''); + } + // Custom php.ini settings $final_php_ini_settings = array(); $custom_php_ini_settings = trim($data['new']['custom_php_ini']); @@ -2813,7 +2818,7 @@ class nginx_plugin { unset($tpl); // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { @@ -2858,7 +2863,7 @@ class nginx_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } @@ -2873,7 +2878,7 @@ class nginx_plugin { } // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { @@ -3076,7 +3081,7 @@ class nginx_plugin { } if($app->system->is_group('client'.$client_id)){ - $app->system->_exec('groupdel client'.$client_id); + $app->system->exec_safe('groupdel ?', 'client'.$client_id); $app->log('Removed group client'.$client_id, LOGLEVEL_DEBUG); } } diff --git a/server/plugins-available/nginx_reverseproxy_plugin.inc.php b/server/plugins-available/nginx_reverseproxy_plugin.inc.php index b5881dbf240886b5cc6127847a84f1e2dfa954de..1013042254ba2a2c63980394e6dc964021beb1f8 100644 --- a/server/plugins-available/nginx_reverseproxy_plugin.inc.php +++ b/server/plugins-available/nginx_reverseproxy_plugin.inc.php @@ -176,7 +176,7 @@ class nginx_reverseproxy_plugin { } - $vhost_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_file = $nginx_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'; //* Make a backup copy of vhost file copy($vhost_file, $vhost_file.'~'); @@ -187,7 +187,7 @@ class nginx_reverseproxy_plugin { // Set the symlink to enable the vhost - $vhost_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'; if($data['new']['active'] == 'y' && !is_link($vhost_symlink)) { symlink($vhost_file, $vhost_symlink); $app->log('Creating symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -199,18 +199,18 @@ class nginx_reverseproxy_plugin { $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - if(!is_dir('/var/log/ispconfig/nginx/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/nginx/'.$data['new']['domain']); + if(!is_dir('/var/log/ispconfig/nginx/'.$data['new']['domain'])) $app->system->exec_safe('mkdir -p ?', '/var/log/ispconfig/nginx/'.$data['new']['domain']); // remove old symlink and vhost file, if domain name of the site has changed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - $vhost_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); - $vhost_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_file); $app->log('Removing file: '.$vhost_file, LOGLEVEL_DEBUG); - if(is_dir('/var/log/ispconfig/nginx/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/nginx/'.$data['old']['domain']); + if(is_dir('/var/log/ispconfig/nginx/'.$data['old']['domain'])) $app->system->exec_safe('rm -rf ?', '/var/log/ispconfig/nginx/'.$data['old']['domain']); } // request a httpd reload when all records have been processed @@ -232,7 +232,7 @@ class nginx_reverseproxy_plugin { function ssl($event_name, $data) { global $app, $conf; - if(!is_dir($conf['nginx']['config_dir'].'/ssl')) exec('mkdir -p '.$conf['nginx']['config_dir'].'/ssl'); + if(!is_dir($conf['nginx']['config_dir'].'/ssl')) $app->system->exec_safe('mkdir -p ?', $conf['nginx']['config_dir'].'/ssl'); $ssl_dir = $conf['nginx']['config_dir'].'/ssl'; $domain = $data['new']['ssl_domain']; $key_file = $ssl_dir.'/'.$domain.'.key.org'; @@ -250,7 +250,7 @@ class nginx_reverseproxy_plugin { //$csr_file = $ssl_dir.'/'.$domain.".csr"; //$crt_file = $ssl_dir.'/'.$domain.".crt"; //$bundle_file = $ssl_dir.'/'.$domain.".bundle"; - $this->_exec('rsync -v -e ssh root@'.$web['ip_address'].':~/$src_ssl_dir '.$ssl_dir); + $app->system->exec_safe('rsync -v -e ssh root@?:? ?', $web['ip_address'], '~/'.$src_ssl_dir, $ssl_dir); $app->log('Syncing SSL Cert for: '.$domain, LOGLEVEL_DEBUG); } @@ -284,31 +284,24 @@ class nginx_reverseproxy_plugin { //* This is a website // Deleting the vhost file, symlink and the data directory - $vhost_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); - $vhost_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_file); $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG); // Delete the log file directory - $vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/nginx/'.$data['old']['domain']); - if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) exec('rm -rf '.$vhost_logfile_dir); + $vhost_logfile_dir = '/var/log/ispconfig/nginx/'.$data['old']['domain']; + if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) $app->system->exec_safe('rm -rf ?', $vhost_logfile_dir); $app->log('Removing website logfile directory: '.$vhost_logfile_dir, LOGLEVEL_DEBUG); } } - //* Wrapper for exec function for easier debugging - private function _exec($command) { - global $app; - $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); - } - function rewrite_insert($event_name, $data) { global $app, $conf; @@ -329,7 +322,7 @@ class nginx_reverseproxy_plugin { $tpl->newTemplate("nginx_reverseproxy_rewrites.conf.master"); if (!empty($rules))$tpl->setLoop('nginx_rewrite_rules', $rules); - $rewrites_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/default.rewrites.conf'); + $rewrites_file = $nginx_config['nginx_vhost_conf_dir'].'/default.rewrites.conf'; //* Make a backup copy of vhost file copy($rewrites_file, $rewrites_file.'~'); @@ -340,7 +333,7 @@ class nginx_reverseproxy_plugin { // Set the symlink to enable the vhost - $rewrite_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/default.rewrites.conf'); + $rewrite_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/default.rewrites.conf'; if(!is_link($rewrite_symlink)) { symlink($rewrites_file, $rewrite_symlink); diff --git a/server/plugins-available/openvz_plugin.inc.php b/server/plugins-available/openvz_plugin.inc.php index 5cc4bf6522aaf1a64ab8d375b96ed8b6f89de18a..f17edb7b8c1882844b26eb6afb147eba9416075f 100644 --- a/server/plugins-available/openvz_plugin.inc.php +++ b/server/plugins-available/openvz_plugin.inc.php @@ -86,11 +86,11 @@ class openvz_plugin { } $tmp = $app->db->queryOneRecord("SELECT template_file FROM openvz_ostemplate WHERE ostemplate_id = ?", $data['new']['ostemplate_id']); - $ostemplate = escapeshellcmd($tmp['template_file']); + $ostemplate = $tmp['template_file']; unset($tmp); //* Create the virtual machine - exec("vzctl create $veid --ostemplate $ostemplate"); + $app->system->exec_safe("vzctl create ? --ostemplate ?", $veid, $ostemplate); $app->log("Create OpenVZ VM: vzctl create $veid --ostemplate $ostemplate", LOGLEVEL_DEBUG); //* Write the configuration of the VM @@ -103,7 +103,7 @@ class openvz_plugin { } //* Set the root password in the virtual machine - exec("vzctl set $veid --userpasswd root:".escapeshellcmd($data['new']['vm_password'])); + $app->system->exec_safe("vzctl set ? --userpasswd root:?", $veid, $data['new']['vm_password']); } @@ -123,7 +123,7 @@ class openvz_plugin { //* new diskspace for ploop-containers requieres "vzctl set" if($data['new']['diskspace'] != $data['old']['diskspace']) { - exec("vzctl set ".$veid." --diskspace ".$data['new']['diskspace']."G --save"); + escapeshell("vzctl set ? --diskspace ? --save", $veid, $data['new']['diskspace']."G"); } //* Apply config changes to the VM @@ -140,7 +140,7 @@ class openvz_plugin { //* Set the root password in the virtual machine if($data['new']['vm_password'] != $data['old']['vm_password']) { - exec("vzctl set $veid --userpasswd root:".escapeshellcmd($data['new']['vm_password'])); + $app->system->exec_safe("vzctl set ? --userpasswd root:?", $veid, $data['new']['vm_password']); } @@ -193,12 +193,12 @@ class openvz_plugin { $parts = explode(':', $data); $veid = intval($parts[0]); $template_cache_dir = '/vz/template/cache/'; - $template_name = escapeshellcmd($parts[1]); + $template_name = $parts[1]; if($veid > 0 && $template_name != '' && is_dir($template_cache_dir)) { - $command = "vzdump --suspend --compress --stdexcludes --dumpdir $template_cache_dir $veid"; - exec($command); - exec("mv ".$template_cache_dir."vzdump-openvz-".$veid."*.tgz ".$template_cache_dir.$template_name.".tar.gz"); - exec("rm -f ".$template_cache_dir."vzdump-openvz-".$veid."*.log"); + $command = "vzdump --suspend --compress --stdexcludes --dumpdir ? ?"; + $app->system->exec_safe($command, $template_cache_dir, $veid); + $app->system->exec_safe("mv ?*.tgz ?", $template_cache_dir."vzdump-openvz-".$veid, $template_cache_dir.$template_name.".tar.gz"); + $app->system->exec_safe("rm -f ?*.log", $template_cache_dir."vzdump-openvz-".$veid); } $app->log("Created OpenVZ OStemplate $template_name from VM $veid", LOGLEVEL_DEBUG); return 'ok'; diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 2b0b1ba67b584f9e640e6a5a26e22e2aeee1adf8..ad48e3dee87064ed2ecc913a2ae5128fb90e8155 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -60,15 +60,11 @@ class postfix_server_plugin { Register for the events */ - $app->plugins->registerEvent('server_insert', 'postfix_server_plugin', 'insert'); - $app->plugins->registerEvent('server_update', 'postfix_server_plugin', 'update'); - - - + $app->plugins->registerEvent('server_insert', $this->plugin_name, 'insert'); + $app->plugins->registerEvent('server_update', $this->plugin_name, 'update'); } function insert($event_name, $data) { - global $app, $conf; $this->update($event_name, $data); @@ -99,7 +95,7 @@ class postfix_server_plugin { exec("postconf -e 'smtp_sasl_auth_enable = no'"); } - exec("postconf -e 'relayhost = ".$mail_config['relayhost']."'"); + $app->system->exec_safe("postconf -e ?", 'relayhost = '.$mail_config['relayhost']); file_put_contents('/etc/postfix/sasl_passwd', $content); chmod('/etc/postfix/sasl_passwd', 0600); chown('/etc/postfix/sasl_passwd', 'root'); @@ -116,7 +112,7 @@ class postfix_server_plugin { if($rbl_hosts != ''){ $rbl_hosts = explode(",", $rbl_hosts); } - $options = explode(", ", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); foreach ($options as $key => $value) { if (!preg_match('/reject_rbl_client/', $value)) { @@ -138,7 +134,7 @@ class postfix_server_plugin { if($value != '') $new_options[] = "reject_rbl_client ".$value; } } - exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + $app->system->exec_safe("postconf -e ?", 'smtpd_recipient_restrictions = '.implode(", ", $new_options)); exec('postfix reload'); } @@ -157,12 +153,13 @@ class postfix_server_plugin { while (isset($new_options[$i]) && substr($new_options[$i], 0, 19) == 'check_sender_access') ++$i; array_splice($new_options, $i, 0, array('reject_authenticated_sender_login_mismatch')); } - exec("postconf -e 'smtpd_sender_restrictions = ".implode(", ", $new_options)."'"); + $app->system->exec_safe("postconf -e ?", 'smtpd_sender_restrictions = '.implode(", ", $new_options)); exec('postfix reload'); } if($app->system->is_installed('dovecot')) { - $temp = exec("postconf -n virtual_transport", $out); + $out = null; + exec("postconf -n virtual_transport", $out); if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') { // If dovecot switch to lmtp if($out[0] != "virtual_transport = lmtp:unix:private/dovecot-lmtp") { @@ -182,12 +179,74 @@ class postfix_server_plugin { } } - exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); //TODO : no reload? - exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); //TODO : no reload? + if($mail_config['content_filter'] != $old_ini_data['mail']['content_filter']) { + if($mail_config['content_filter'] == 'rspamd'){ + exec("postconf -X 'receive_override_options'"); + exec("postconf -X 'content_filter'"); + + exec("postconf -e 'smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'non_smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'milter_protocol = 6'"); + exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'"); + exec("postconf -e 'milter_default_action = accept'"); + + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); + + $new_options = array(); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); + foreach ($options as $key => $value) { + if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { + $new_options[] = $value; + } + } + exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + + // get all domains that have dkim enabled + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { + $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } + $dkim_domains = $app->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM `mail_domain` WHERE `dkim` = ? ORDER BY `domain` ASC', 'y'); + $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); + $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); + foreach($dkim_domains as $dkim_domain) { + fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); + fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector'] . "\n"); + } + fclose($fpp); + fclose($fps); + unset($dkim_domains); + } else { + exec("postconf -X 'smtpd_milters'"); + exec("postconf -X 'milter_protocol'"); + exec("postconf -X 'milter_mail_macros'"); + exec("postconf -X 'milter_default_action'"); + + exec("postconf -e 'receive_override_options = no_address_mappings'"); + exec("postconf -e 'content_filter = amavis:[127.0.0.1]:10024'"); + + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'"); + } + } + if($mail_config['content_filter'] == 'rspamd' && ($mail_config['rspamd_password'] != $old_ini_data['mail']['rspamd_password'] || $mail_config['content_filter'] != $old_ini_data['mail']['content_filter'])) { + $app->load('tpl'); - } + $rspamd_password = $mail_config['rspamd_password']; + $crypted_password = trim(exec('rspamadm pw -p ' . escapeshellarg($rspamd_password))); + if($crypted_password) { + $rspamd_password = $crypted_password; + } + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_worker-controller.inc.master'); + $tpl->setVar('rspamd_password', $rspamd_password); + $app->system->file_put_contents('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + chmod('/etc/rspamd/local.d/worker-controller.inc', 0644); + $app->services->restartServiceDelayed('rspamd', 'reload'); + } + exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); + exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); + $app->services->restartServiceDelayed('postfix', 'reload'); + } } // end class - -?> diff --git a/server/plugins-available/powerdns_plugin.inc.php b/server/plugins-available/powerdns_plugin.inc.php index f5f5158c44825f9093f44f33710c4c6480e64859..7ab23ec5494cd57d6f877e8a1afcbd864f48926f 100644 --- a/server/plugins-available/powerdns_plugin.inc.php +++ b/server/plugins-available/powerdns_plugin.inc.php @@ -7,14 +7,14 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED @@ -97,7 +97,7 @@ class powerdns_plugin { /* - This function is called when the plugin is loaded + This function is called when the plugin is loaded */ function onLoad() { @@ -421,15 +421,23 @@ class powerdns_plugin { } } - function find_pdns_pdnssec() { + function find_pdns_pdnssec_or_pdnsutil() { $output = array(); $retval = ''; + + // The command is named pdnssec in PowerDNS 3 exec("type -p pdnssec", $output, $retval); if ($retval == 0 && is_file($output[0])){ return $output[0]; - } else { - return false; } + + // But in PowerNDS 4 they renamed it to pdnsutil + exec("type -p pdnsutil", $output, $retval); + if ($retval == 0 && is_file($output[0])){ + return $output[0]; + } + + return false; } function zoneRediscover() { @@ -440,16 +448,20 @@ class powerdns_plugin { } function notifySlave($data) { + global $app; + $pdns_control = $this->find_pdns_control(); if ( $pdns_control != false ) { - exec($pdns_control . ' notify ' . rtrim($data["new"]["origin"],".")); + $app->system->exec_safe($pdns_control . ' notify ?', rtrim($data["new"]["origin"],".")); } } function fetchFromMaster($data) { + global $app; + $pdns_control = $this->find_pdns_control(); if ( $pdns_control != false ) { - exec($pdns_control . ' retrieve ' . rtrim($data["new"]["origin"],".")); + $app->system->exec_safe($pdns_control . ' retrieve ?', rtrim($data["new"]["origin"],".")); } } @@ -466,6 +478,14 @@ class powerdns_plugin { } } + function is_pdns_version_supported() { + if (preg_match('/^[34]/',$this->get_pdns_version())) { + return true; + } + + return false; + } + function handle_dnssec($data) { // If origin changed, delete keys first if ($data['old']['origin'] != $data['new']['origin']) { @@ -475,14 +495,14 @@ class powerdns_plugin { } // If DNSSEC is disabled, but was enabled before, just disable DNSSEC but leave the keys in dns_info - if ($data['new']['dnssec_wanted'] === 'N' && $data['old']['dnssec_initialized'] === 'Y') { + if ($data['new']['dnssec_wanted'] === 'N' && $data['old']['dnssec_wanted'] === 'Y') { $this->soa_dnssec_disable($data); return; } // If DNSSEC is wanted, enable it - if ($data['new']['dnssec_wanted'] === 'Y') { + if ($data['new']['dnssec_wanted'] === 'Y' && $data['old']['dnssec_wanted'] === 'N') { $this->soa_dnssec_create($data); } } @@ -490,11 +510,11 @@ class powerdns_plugin { function soa_dnssec_create($data) { global $app; - if (!preg_match('/^3/',$this->get_pdns_version()) ) { + if (false === $this->is_pdns_version_supported()) { return; } - $pdns_pdnssec = $this->find_pdns_pdnssec(); + $pdns_pdnssec = $this->find_pdns_pdnssec_or_pdnsutil(); if ($pdns_pdnssec === false) { return; } @@ -504,22 +524,26 @@ class powerdns_plugin { // We don't log the actual commands here, because having commands in the dnssec_info field will trigger // the IDS if you try to save the record using the interface afterwards. - $cmd_secure_zone = sprintf('%s secure-zone %s 2>&1', $pdns_pdnssec, $zone); - $log[] = sprintf("\r\n%s %s", date('c'), 'Running secure-zone command...'); - exec($cmd_secure_zone, $log); + $cmd_add_zone_key_ksk = sprintf('%s add-zone-key %s ksk active 2048 rsasha256', $pdns_pdnssec, $zone); + $log[] = sprintf("\r\n%s %s", date('c'), 'Running add-zone-key ksk command...'); + exec($cmd_add_zone_key_ksk, $log); + + $cmd_add_zone_key_zsk = sprintf('%s add-zone-key %s zsk active 1024 rsasha256', $pdns_pdnssec, $zone); + $log[] = sprintf("\r\n%s %s", date('c'), 'Running add-zone-key zsk command...'); + exec($cmd_add_zone_key_zsk, $log); $cmd_set_nsec3 = sprintf('%s set-nsec3 %s "1 0 10 deadbeef" 2>&1', $pdns_pdnssec, $zone); $log[] = sprintf("\r\n%s %s", date('c'), 'Running set-nsec3 command...'); exec($cmd_set_nsec3, $log); - $pubkeys = []; + $pubkeys = array(); $cmd_show_zone = sprintf('%s show-zone %s 2>&1', $pdns_pdnssec, $zone); $log[] = sprintf("\r\n%s %s", date('c'), 'Running show-zone command...'); exec($cmd_show_zone, $pubkeys); $log = array_merge($log, $pubkeys); - $dnssec_info = array_merge($this->format_dnssec_pubkeys($pubkeys), ['', '== Raw log ============================'], $log); + $dnssec_info = array_merge($this->format_dnssec_pubkeys($pubkeys), array('', '== Raw log ============================'), $log); $dnssec_info = implode("\r\n", $dnssec_info); if ($app->dbmaster !== $app->db) { @@ -529,7 +553,7 @@ class powerdns_plugin { } function format_dnssec_pubkeys($lines) { - $formatted = []; + $formatted = array(); // We don't care about the first two lines about presigning and NSEC array_shift($lines); @@ -539,17 +563,19 @@ class powerdns_plugin { switch ($part = substr($line, 0, 3)) { case 'ID ': // Only process active keys - if (!strpos($line, 'Active: 1')) { - continue; + // 'Active: 1' is pdnssec (PowerDNS 3.x) output + // 'Active (' is pdnsutil (PowerDNS 4.x) output + if (!strpos($line, 'Active: 1') && !strpos($line, 'Active ( ')) { + break; } - // Determine key type (KSK or ZSK) - preg_match('/(KSK|ZSK)/', $line, $matches_key_type); + // Determine key type (KSK, ZSK or CSK) + preg_match('/(KSK|ZSK|CSK)/', $line, $matches_key_type); $key_type = $matches_key_type[1]; - // We only care about the KSK - if ('ZSK' === $key_type) { - continue; + // We only care about the KSK or CSK + if (!in_array($key_type, array('KSK', 'CSK'), true)) { + break; } // Determine key tag @@ -568,6 +594,7 @@ class powerdns_plugin { break; case 'KSK': + case 'CSK': // Determine DNSKEY preg_match('/ IN DNSKEY \d+ \d+ \d+ (.*) ;/', $line, $matches_dnskey); $formatted[] = sprintf('DNSKEY: %s', $matches_dnskey[1]); @@ -604,11 +631,11 @@ class powerdns_plugin { function soa_dnssec_disable($data) { global $app; - if (!preg_match('/^3/',$this->get_pdns_version()) ) { + if (false === $this->is_pdns_version_supported()) { return; } - $pdns_pdnssec = $this->find_pdns_pdnssec(); + $pdns_pdnssec = $this->find_pdns_pdnssec_or_pdnsutil(); if ($pdns_pdnssec === false) { return; } @@ -631,11 +658,11 @@ class powerdns_plugin { function soa_dnssec_delete($data) { global $app; - if (!preg_match('/^3/',$this->get_pdns_version()) ) { + if (false === $this->is_pdns_version_supported()) { return; } - $pdns_pdnssec = $this->find_pdns_pdnssec(); + $pdns_pdnssec = $this->find_pdns_pdnssec_or_pdnsutil(); if ($pdns_pdnssec === false) { return; } @@ -650,7 +677,7 @@ class powerdns_plugin { exec($cmd_disable_dnssec, $log); - $dnssec_info = array_merge(['== Raw log ============================'], $log); + $dnssec_info = array_merge(array('== Raw log ============================'), $log); $dnssec_info = implode("\r\n", $dnssec_info); if ($app->dbmaster !== $app->db) { @@ -661,17 +688,20 @@ class powerdns_plugin { function rectifyZone($data) { global $app, $conf; - if ( preg_match('/^3/',$this->get_pdns_version()) ) { - $pdns_pdnssec = $this->find_pdns_pdnssec(); - if ( $pdns_pdnssec != false ) { - if (isset($data["new"]["origin"])) { - //* data has origin field only for SOA recordtypes - exec($pdns_pdnssec . ' rectify-zone ' . rtrim($data["new"]["origin"],".")); - } else { - // get origin from DB for all other recordtypes - $zn = $app->db->queryOneRecord("SELECT d.name AS name FROM powerdns.domains d, powerdns.records r WHERE r.ispconfig_id=? AND r.domain_id = d.id", $data["new"]["id"]); - exec($pdns_pdnssec . ' rectify-zone ' . trim($zn["name"])); - } + + if (false === $this->is_pdns_version_supported()) { + return; + } + + $pdns_pdnssec = $this->find_pdns_pdnssec_or_pdnsutil(); + if ( $pdns_pdnssec != false ) { + if (isset($data["new"]["origin"])) { + //* data has origin field only for SOA recordtypes + $app->system->exec_safe($pdns_pdnssec . ' rectify-zone ?', rtrim($data["new"]["origin"],".")); + } else { + // get origin from DB for all other recordtypes + $zn = $app->db->queryOneRecord("SELECT d.name AS name FROM powerdns.domains d, powerdns.records r WHERE r.ispconfig_id=? AND r.domain_id = d.id", $data["new"]["id"]); + $app->system->exec_safe($pdns_pdnssec . ' rectify-zone ?', trim($zn["name"])); } } } diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..f6bb5d5a8ea3e9f33752d50237cd5738de3ddfa1 --- /dev/null +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -0,0 +1,408 @@ +plugins->registerEvent('spamfilter_wblist_insert', $this->plugin_name, 'spamfilter_wblist_insert'); + $app->plugins->registerEvent('spamfilter_wblist_update', $this->plugin_name, 'spamfilter_wblist_update'); + $app->plugins->registerEvent('spamfilter_wblist_delete', $this->plugin_name, 'spamfilter_wblist_delete'); + + //* global mail access filters + $app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert'); + $app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update'); + $app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete'); + + //* server ip + $app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip'); + $app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip'); + $app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip'); + + //* spamfilter_users + $app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('spamfilter_users_delete', $this->plugin_name, 'user_settings_update'); + + //* mail user / fwd / catchall changed (greylisting) + $app->plugins->registerEvent('mail_user_insert', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_user_update', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_user_delete', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_forwarding_insert', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_forwarding_update', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_forwarding_delete', $this->plugin_name, 'user_settings_update'); + } + + function user_settings_update($event_name, $data) { + global $app, $conf; + + if(!is_dir('/etc/rspamd')) { + return; + } + + $use_data = 'new'; + if(substr($event_name, -7) === '_delete') { + $mode = 'delete'; + $use_data = 'old'; + } elseif(substr($event_name, -7) === '_insert') { + $mode = 'insert'; + } else { + $mode = 'update'; + } + + // get the config + $app->uses('getconf,system,functions'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + $type = false; + $identifier = false; + $entry_id = false; + if(substr($event_name, 0, 17) === 'spamfilter_users_') { + $identifier = 'email'; + $type = 'spamfilter_user'; + $entry_id = $data[$use_data]['id']; + } elseif(substr($event_name, 0, 16) === 'mail_forwarding_') { + $identifier = 'source'; + $type = 'mail_forwarding'; + $entry_id = $data[$use_data]['forwarding_id']; + } elseif(substr($event_name, 0, 10) === 'mail_user_') { + $identifier = 'email'; + $type = 'mail_user'; + $entry_id = $data[$use_data]['mailuser_id']; + } else { + // invalid event + $app->log('Invalid event name for rspamd_plugin: ' . $event_name, LOGLEVEL_WARN); + return; + } + + $is_domain = false; + $email_address = $data[$use_data][$identifier]; + $settings_name = $email_address; + if($email_address === '*@' || $email_address === '@') { + // we will ignore those global targets + $app->log('Ignoring @ spamfilter_user as rspamd does not support it this way.', LOGLEVEL_DEBUG); + return; + } elseif(!$email_address) { + // problem reading identifier + $app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); + return; + } elseif(substr($email_address, 0, 1) === '@') { + $settings_name = substr($email_address, 1); + $is_domain = true; + } elseif(strpos($email_address, '@') === false) { + $email_address = '@' . $email_address; + $is_domain = true; + } + + if($settings_name == '') { + // missing settings file name + $app->log('Empty rspamd identifier in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); + return; + } + + $settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf'; + //$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN); + if($mode === 'delete') { + if(is_file($settings_file)) { + unlink($settings_file); + } + } else { + $settings_priority = 20; + if(isset($data[$use_data]['priority'])) { + $settings_priority = intval($data[$use_data]['priority']); + } elseif($is_domain === true) { + $settings_priority = 18; + } + + // get policy for entry + if($type === 'spamfilter_user') { + $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); + + $check = $app->db->queryOneRecord('SELECT `greylisting` FROM `mail_user` WHERE `server_id` = ? AND `email` = ? UNION SELECT `greylisting` FROM `mail_forwarding` WHERE `server_id` = ? AND `source` = ? ORDER BY (`greylisting` = ?) DESC', $conf['server_id'], $email_address, $conf['server_id'], $email_address, 'y'); + if($check) { + $greylisting = $check['greylisting']; + } else { + $greylisting = 'n'; + } + } else { + $search_for_policy[] = $email_address; + $search_for_policy[] = substr($email_address, strpos($email_address, '@')); + + $policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = ? AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy); + + $greylisting = $data[$use_data]['greylisting']; + } + + if(!is_dir($this->users_config_dir)){ + $app->system->mkdirpath($this->users_config_dir); + } + + $app->load('tpl'); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.inc.conf.master'); + + $tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id); + $tpl->setVar('priority', $settings_priority); + + if($type === 'spamfilter_user') { + if($data[$use_data]['local'] === 'Y') { + $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); + } else { + $tpl->setVar('from_email', $app->functions->idn_encode($email_address)); + } + $spamfilter = $data[$use_data]; + } else { + $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); + + // need to get matching spamfilter user if any + $spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address); + } + + if(!isset($policy['rspamd_spam_tag_level'])) { + $policy['rspamd_spam_tag_level'] = 6.0; + } + if(!isset($policy['rspamd_spam_tag_method'])) { + $policy['rspamd_spam_tag_method'] = 'add_header'; + } + if(!isset($policy['rspamd_spam_kill_level'])) { + $policy['rspamd_spam_kill_level'] = 15.0; + } + if(!isset($policy['rspamd_virus_kill_level'])) { + $policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000; + } + + $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); + $tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method'])); + $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); + $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); + + if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') { + $tpl->setVar('spam_lover', true); + } + if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') { + $tpl->setVar('virus_lover', true); + } + + $tpl->setVar('greylisting', $greylisting); + + if(isset($policy['rspamd_spam_greylisting_level'])) { + $tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level'])); + } else { + $tpl->setVar('greylisting_level', 0.1); + } + + $app->system->file_put_contents($settings_file, $tpl->grab()); + } + + if($mail_config['content_filter'] == 'rspamd'){ + $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + + function spamfilter_wblist_insert($event_name, $data) { + $this->action = 'insert'; + // just run the spamfilter_wblist_update function + $this->spamfilter_wblist_update($event_name, $data); + } + + function spamfilter_wblist_update($event_name, $data) { + global $app, $conf; + + $app->uses('getconf,system,functions'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + $global_filter = false; + //* Create the config file + $filter = null; + if($event_name === 'mail_access_insert' || $event_name === 'mail_access_update') { + $global_filter = true; + $record_id = intval($data['new']['access_id']); + $wblist_file = $this->users_config_dir.'global_wblist_'.$record_id.'.conf'; + $filter = array( + 'wb' => ($data['new']['access'] === 'OK' ? 'W' : 'B'), + 'from' => ($data['new']['type'] === 'sender' ? $app->functions->idn_encode($data['new']['source']) : ''), + 'rcpt' => ($data['new']['type'] === 'recipient' ? $app->functions->idn_encode($data['new']['source']) : ''), + 'ip' => ($data['new']['type'] === 'client' && $this->_is_valid_ip_address($data['new']['source']) ? $data['new']['source'] : ''), + 'hostname' => ($data['new']['type'] === 'client' && !$this->_is_valid_ip_address($data['new']['source']) ? $data['new']['source'] : '') + ); + } else { + $record_id = intval($data['new']['wblist_id']); + $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.$record_id.'.conf'; + $tmp = $app->db->queryOneRecord("SELECT email FROM spamfilter_users WHERE id = ?", intval($data['new']['rid'])); + if($tmp && !empty($tmp)) { + $filter = array( + 'wb' => $data['new']['wb'], + 'from' => $app->functions->idn_encode($data['new']['email']), + 'rcpt' => $app->functions->idn_encode($tmp['email']), + 'ip' => '', + 'hostname' => '' + ); + } + } + + if($data['new']['active'] == 'y' && is_array($filter) && !empty($filter)){ + if(!is_dir($this->users_config_dir)){ + $app->system->mkdirpath($this->users_config_dir); + } + + $app->load('tpl'); + + $filter_from = $filter['from']; + if($filter_from != '') { + if(strpos($filter_from, '@') === false) { + $filter_from = '@' . $filter_from; + } elseif(substr($filter_from, 0, 2) === '*@') { + $filter_from = substr($filter_from, 1); + } + } + $filter_rcpt = $filter['rcpt']; + if($filter_rcpt != '') { + if(strpos($filter_rcpt, '@') === false) { + $filter_rcpt = '@' . $filter_rcpt; + } elseif(substr($filter_rcpt, 0, 2) === '*@') { + $filter_rcpt = substr($filter_rcpt, 1); + } + } + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_wblist.inc.conf.master'); + $tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter')); + $tpl->setVar('record_id', $record_id); + // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists + $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20)); + $tpl->setVar('from', $filter_from); + $tpl->setVar('recipient', $filter_rcpt); + $tpl->setVar('hostname', $filter['hostname']); + $tpl->setVar('ip', $filter['ip']); + $tpl->setVar('wblist', $filter['wb']); + + $app->system->file_put_contents($wblist_file, $tpl->grab()); + } elseif(is_file($wblist_file)) { + unlink($wblist_file); + } + + if($mail_config['content_filter'] == 'rspamd' && is_file('/etc/init.d/rspamd')) { + $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + + function spamfilter_wblist_delete($event_name, $data) { + global $app, $conf; + + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + //* delete the config file + if($event_name === 'mail_access_delete') { + $wblist_file = $this->users_config_dir.'global_wblist_'.intval($data['old']['access_id']).'.conf'; + } else { + $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.intval($data['old']['wblist_id']).'.conf'; + } + if(is_file($wblist_file)) { + unlink($wblist_file); + } + + if($mail_config['content_filter'] == 'rspamd'){ + if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + + function server_ip($event_name, $data) { + global $app, $conf; + + // get the config + $app->uses("getconf,system"); + $app->load('tpl'); + + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.conf.master'); + + $whitelist_ips = array(); + $ips = $app->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); + if(is_array($ips) && !empty($ips)){ + foreach($ips as $ip){ + $whitelist_ips[] = array('ip' => $ip['ip_address']); + } + } + $tpl->setLoop('whitelist_ips', $whitelist_ips); + $app->system->file_put_contents('/etc/rspamd/local.d/users.conf', $tpl->grab()); + + if($mail_config['content_filter'] == 'rspamd'){ + $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + + private function _is_valid_ip_address($ip) { + if(function_exists('filter_var')) { + if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) { + return false; + } else { + return true; + } + } else { + return false; + } + } +} // end class diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 9c4568901deef3e73b8051929ca94247070e6fd2..9f19c2be58cb397f8b2fa4acf3b48c0ccca05440 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -115,34 +115,36 @@ class shelluser_base_plugin { // Create home base directory if it does not exist if(!is_dir($data['new']['dir'].'/home')){ - $app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0755'); + $app->file->mkdirs($data['new']['dir'].'/home', '0755'); } // Change ownership of home base dir to root user - $app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),'root'); - $app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),'root'); - $app->system->chmod(escapeshellcmd($data['new']['dir'].'/home'),0755); + $app->system->chown($data['new']['dir'].'/home','root'); + $app->system->chgrp($data['new']['dir'].'/home','root'); + $app->system->chmod($data['new']['dir'].'/home',0755); if(!is_dir($homedir)){ - $app->file->mkdirs(escapeshellcmd($homedir), '0750'); - $app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser']),false); - $app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup']),false); + $app->file->mkdirs($homedir, '0750'); + $app->system->chown($homedir,$data['new']['puser'],false); + $app->system->chgrp($homedir,$data['new']['pgroup'],false); } - $command = 'useradd'; - $command .= ' -d '.escapeshellcmd($homedir); - $command .= ' -g '.escapeshellcmd($data['new']['pgroup']); - $command .= ' -o '; // non unique - if($data['new']['password'] != '') $command .= ' -p '.escapeshellcmd($data['new']['password']); - $command .= ' -s '.escapeshellcmd($data['new']['shell']); - $command .= ' -u '.escapeshellcmd($uid); - $command .= ' '.escapeshellcmd($data['new']['username']); - - exec($command); + $command = 'useradd -d ? -g ? -o'; // non unique + $command .= ' -s ? -u ? ?'; + $app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['shell'], $uid, $data['new']['username']); $app->log("Executed command: ".$command, LOGLEVEL_DEBUG); $app->log("Added shelluser: ".$data['new']['username'], LOGLEVEL_DEBUG); - - $app->system->chown(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['username']),false); - $app->system->chgrp(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['pgroup']),false); + + if($data['new']['password'] != '') { + $retval = null; + $stderr = ''; + $app->system->pipe_exec('chpasswd -e ' . escapeshellarg($data['new']['username']), $data['new']['username'] . ':' . $data['new']['password'], $retval, $stderr); + if($retval != 0) { + $app->log("Command chpasswd failed for user ".$data['new']['username'] . ' with code ' . $retval . ': ' . $stderr, LOGLEVEL_WARN); + } + } + + $app->system->chown($data['new']['dir'],$data['new']['username'],false); + $app->system->chgrp($data['new']['dir'],$data['new']['pgroup'],false); // call the ssh-rsa update function @@ -152,21 +154,21 @@ class shelluser_base_plugin { $this->_setup_ssh_rsa(); //* Create .bash_history file - $app->system->touch(escapeshellcmd($homedir).'/.bash_history'); - $app->system->chmod(escapeshellcmd($homedir).'/.bash_history', 0750); - $app->system->chown(escapeshellcmd($homedir).'/.bash_history', $data['new']['username']); - $app->system->chgrp(escapeshellcmd($homedir).'/.bash_history', $data['new']['pgroup']); + $app->system->touch($homedir.'/.bash_history'); + $app->system->chmod($homedir.'/.bash_history', 0750); + $app->system->chown($homedir.'/.bash_history', $data['new']['username']); + $app->system->chgrp($homedir.'/.bash_history', $data['new']['pgroup']); //* Create .profile file - $app->system->touch(escapeshellcmd($homedir).'/.profile'); - $app->system->chmod(escapeshellcmd($homedir).'/.profile', 0644); - $app->system->chown(escapeshellcmd($homedir).'/.profile', $data['new']['username']); - $app->system->chgrp(escapeshellcmd($homedir).'/.profile', $data['new']['pgroup']); + $app->system->touch($homedir.'/.profile'); + $app->system->chmod($homedir.'/.profile', 0644); + $app->system->chown($homedir.'/.profile', $data['new']['username']); + $app->system->chgrp($homedir.'/.profile', $data['new']['pgroup']); //* Disable shell user temporarily if we use jailkit if($data['new']['chroot'] == 'jailkit') { - $command = 'usermod -s /bin/false -L '.escapeshellcmd($data['new']['username']).' 2>/dev/null'; - exec($command); + $command = 'usermod -s /bin/false -L ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['username']); $app->log("Disabling shelluser temporarily: ".$command, LOGLEVEL_DEBUG); } @@ -233,55 +235,32 @@ class shelluser_base_plugin { if($app->system->is_user($data['old']['username'])) { //* Remove webfolder protection $app->system->web_folder_protection($web['document_root'], false); - - /* - $command = 'usermod'; - $command .= ' --home '.escapeshellcmd($data['new']['dir']); - $command .= ' --gid '.escapeshellcmd($data['new']['pgroup']); - // $command .= ' --non-unique '; - $command .= ' --password '.escapeshellcmd($data['new']['password']); - if($data['new']['chroot'] != 'jailkit') $command .= ' --shell '.escapeshellcmd($data['new']['shell']); - // $command .= ' --uid '.escapeshellcmd($uid); - $command .= ' --login '.escapeshellcmd($data['new']['username']); - $command .= ' '.escapeshellcmd($data['old']['username']); - - exec($command); - $app->log("Executed command: $command ",LOGLEVEL_DEBUG); - */ - //$groupinfo = $app->system->posix_getgrnam($data['new']['pgroup']); + if($homedir != $homedir_old){ $app->system->web_folder_protection($web['document_root'], false); // Rename dir, in case the new directory exists already. if(is_dir($homedir)) { $app->log("New Homedir exists, renaming it to ".$homedir.'_bak', LOGLEVEL_DEBUG); - $app->system->rename(escapeshellcmd($homedir),escapeshellcmd($homedir.'_bak')); + $app->system->rename($homedir,$homedir.'_bak'); } - /*if(!is_dir($data['new']['dir'].'/home')){ - $app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0750'); - $app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),escapeshellcmd($data['new']['puser'])); - $app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),escapeshellcmd($data['new']['pgroup'])); - } - $app->file->mkdirs(escapeshellcmd($homedir), '0755'); - $app->system->chown(escapeshellcmd($homedir),'root'); - $app->system->chgrp(escapeshellcmd($homedir),'root');*/ // Move old directory to new path - $app->system->rename(escapeshellcmd($homedir_old),escapeshellcmd($homedir)); - $app->file->mkdirs(escapeshellcmd($homedir), '0750'); - $app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser'])); - $app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup'])); + $app->system->rename($homedir_old,$homedir); + $app->file->mkdirs($homedir, '0750'); + $app->system->chown($homedir,$data['new']['puser']); + $app->system->chgrp($homedir,$data['new']['pgroup']); $app->system->web_folder_protection($web['document_root'], true); } else { if(!is_dir($homedir)){ $app->system->web_folder_protection($web['document_root'], false); if(!is_dir($data['new']['dir'].'/home')){ - $app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0755'); - $app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),'root'); - $app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),'root'); + $app->file->mkdirs($data['new']['dir'].'/home', '0755'); + $app->system->chown($data['new']['dir'].'/home','root'); + $app->system->chgrp($data['new']['dir'].'/home','root'); } - $app->file->mkdirs(escapeshellcmd($homedir), '0750'); - $app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser'])); - $app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup'])); + $app->file->mkdirs($homedir, '0750'); + $app->system->chown($homedir,$data['new']['puser']); + $app->system->chgrp($homedir,$data['new']['pgroup']); $app->system->web_folder_protection($web['document_root'], true); } } @@ -296,18 +275,18 @@ class shelluser_base_plugin { //* Create .bash_history file if(!is_file($data['new']['dir']).'/.bash_history') { - $app->system->touch(escapeshellcmd($homedir).'/.bash_history'); - $app->system->chmod(escapeshellcmd($homedir).'/.bash_history', 0750); - $app->system->chown(escapeshellcmd($homedir).'/.bash_history', escapeshellcmd($data['new']['username'])); - $app->system->chgrp(escapeshellcmd($homedir).'/.bash_history', escapeshellcmd($data['new']['pgroup'])); + $app->system->touch($homedir.'/.bash_history'); + $app->system->chmod($homedir.'/.bash_history', 0750); + $app->system->chown($homedir.'/.bash_history', $data['new']['username']); + $app->system->chgrp($homedir.'/.bash_history', $data['new']['pgroup']); } //* Create .profile file if(!is_file($data['new']['dir']).'/.profile') { - $app->system->touch(escapeshellcmd($homedir).'/.profile'); - $app->system->chmod(escapeshellcmd($homedir).'/.profile', 0644); - $app->system->chown(escapeshellcmd($homedir).'/.profile', escapeshellcmd($data['new']['username'])); - $app->system->chgrp(escapeshellcmd($homedir).'/.profile', escapeshellcmd($data['new']['pgroup'])); + $app->system->touch($homedir.'/.profile'); + $app->system->chmod($homedir.'/.profile', 0644); + $app->system->chown($homedir.'/.profile', $data['new']['username']); + $app->system->chgrp($homedir.'/.profile', $data['new']['pgroup']); } //* Add webfolder protection again @@ -362,7 +341,7 @@ class shelluser_base_plugin { if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); } foreach($dirs as $deldir) { - if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) exec('rm -rf ' . escapeshellarg($homedir . $deldir)); + if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) $app->system->exec_safe('rm -rf ?', $homedir . $deldir); } $empty = true; $dirres = opendir($homedir); @@ -401,9 +380,8 @@ class shelluser_base_plugin { $app->services->restartService('php-fpm', 'stop:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } - $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; userdel -f'; - $command .= ' '.escapeshellcmd($data['old']['username']).' &> /dev/null'; - exec($command); + $command = 'killall -u ? ; userdel -f ? &> /dev/null'; + $app->system->exec_safe($command, $data['old']['username'], $data['old']['username']); $app->log("Deleted shelluser: ".$data['old']['username'], LOGLEVEL_DEBUG); // start PHP-FPM again if($web['php'] == 'php-fpm'){ @@ -447,12 +425,10 @@ class shelluser_base_plugin { } } $sshrsa = trim($sshrsa); - $usrdir = escapeshellcmd($this->data['new']['dir']); + $usrdir = $this->data['new']['dir']; //* Home directory of the new shell user - if($this->data['new']['chroot'] == 'jailkit') { - $usrdir = escapeshellcmd($this->data['new']['dir']); - } else { - $usrdir = escapeshellcmd($this->data['new']['dir'].'/home/'.$this->data['new']['username']); + if($this->data['new']['chroot'] != 'jailkit') { + $usrdir = $this->data['new']['dir'].'/home/'.$this->data['new']['username']; } $sshdir = $usrdir.'/.ssh'; $sshkeys= $usrdir.'/.ssh/authorized_keys'; @@ -528,8 +504,8 @@ class shelluser_base_plugin { $this->app->log("ssh-rsa key updated in ".$sshkeys, LOGLEVEL_DEBUG); // set proper file permissions - exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$sshdir); - exec("chmod 600 '$sshkeys'"); + $app->system->exec_safe("chown -R ?:? ?", $this->data['new']['puser'], $this->data['new']['pgroup'], $sshdir); + $app->system->exec_safe("chmod 600 ?", $sshkeys); } diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index 147d39d571947ae7026ca263623a70a74d89b836..43d636500808fdc59fc9637a8c1128a73c985b68 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -121,13 +121,11 @@ class shelluser_jailkit_plugin { //* call the ssh-rsa update function $this->_setup_ssh_rsa(); - //$command .= 'usermod -s /usr/sbin/jk_chrootsh -U '.escapeshellcmd($data['new']['username']); - //exec($command); $app->system->usermod($data['new']['username'], 0, 0, '', '/usr/sbin/jk_chrootsh', '', ''); //* Unlock user - $command = 'usermod -U '.escapeshellcmd($data['new']['username']).' 2>/dev/null'; - exec($command); + $command = 'usermod -U ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['username']); $this->_update_website_security_level(); $app->system->web_folder_protection($web['document_root'], true); @@ -242,15 +240,12 @@ class shelluser_jailkit_plugin { $jailkit_chroot_userhome = $this->_get_home_dir($data['old']['username']); - //commented out proved to be dangerous on config errors - //exec('rm -rf '.$data['old']['dir'].$jailkit_chroot_userhome); - $app->system->web_folder_protection($web['document_root'], false); $userid = intval($app->system->getuid($data['old']['username'])); - $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; '; - $command .= 'userdel -f '.escapeshellcmd($data['old']['username']).' &> /dev/null'; - exec($command); + $command = 'killall -u ? ; '; + $command .= 'userdel -f ? &> /dev/null'; + $app->system->exec_safe($command, $data['old']['username'], $data['old']['username']); // Remove the jailed user from passwd and shadow file inside the jail $app->system->removeLine($data['old']['dir'].'/etc/passwd', $data['old']['username']); @@ -278,12 +273,8 @@ class shelluser_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->data['new']['dir'].'/etc/jailkit')) { - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh'; - $command .= ' '.escapeshellcmd($this->data['new']['dir']); - $command .= ' \''.$this->jailkit_config['jailkit_chroot_app_sections'].'\''; - exec($command.' 2>/dev/null'); - - $this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_chroot($this->data['new']['dir'], $this->jailkit_config['jailkit_chroot_app_sections']); + $this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG); $this->_add_jailkit_programs(); @@ -300,7 +291,7 @@ class shelluser_jailkit_plugin { $tpl->setVar('domain', $web['domain']); $tpl->setVar('home_dir', $this->_get_home_dir("")); - $bashrc = escapeshellcmd($this->data['new']['dir']).'/etc/bash.bashrc'; + $bashrc = $this->data['new']['dir'].'/etc/bash.bashrc'; if(@is_file($bashrc) || @is_link($bashrc)) unlink($bashrc); file_put_contents($bashrc, $tpl->grab()); @@ -313,7 +304,7 @@ class shelluser_jailkit_plugin { $tpl->setVar('domain', $web['domain']); - $motd = escapeshellcmd($this->data['new']['dir']).'/var/run/motd'; + $motd = $this->data['new']['dir'].'/var/run/motd'; if(@is_file($motd) || @is_link($motd)) unlink($motd); $app->system->file_put_contents($motd, $tpl->grab()); @@ -323,18 +314,15 @@ class shelluser_jailkit_plugin { function _add_jailkit_programs() { + global $app; $jailkit_chroot_app_programs = preg_split("/[\s,]+/", $this->jailkit_config['jailkit_chroot_app_programs']); if(is_array($jailkit_chroot_app_programs) && !empty($jailkit_chroot_app_programs)){ foreach($jailkit_chroot_app_programs as $jailkit_chroot_app_program){ $jailkit_chroot_app_program = trim($jailkit_chroot_app_program); if(is_file($jailkit_chroot_app_program) || is_dir($jailkit_chroot_app_program)){ //copy over further programs and its libraries - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' '.escapeshellcmd($this->data['new']['dir']); - $command .= ' '.$jailkit_chroot_app_program; - exec($command.' 2>/dev/null'); - - $this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_programs($this->data['new']['dir'], $jailkit_chroot_app_program); + $this->app->log("Added programs to jailkit chroot", LOGLEVEL_DEBUG); } } } @@ -342,7 +330,7 @@ class shelluser_jailkit_plugin { function _get_home_dir($username) { - return str_replace("[username]", escapeshellcmd($username), $this->jailkit_config['jailkit_chroot_home']); + return str_replace("[username]", $username, $this->jailkit_config['jailkit_chroot_home']); } function _add_jailkit_user() @@ -365,36 +353,7 @@ class shelluser_jailkit_plugin { // ALWAYS create the user. Even if the user was created before // if we check if the user exists, then a update (no shell -> jailkit) will not work // and the user has FULL ACCESS to the root of the server! - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh'; - $command .= ' '.escapeshellcmd($this->data['new']['username']); - $command .= ' '.escapeshellcmd($this->data['new']['dir']); - $command .= ' '.$jailkit_chroot_userhome; - $command .= ' '.escapeshellcmd($this->data['new']['shell']); - $command .= ' '.$this->data['new']['puser']; - $command .= ' '.$jailkit_chroot_puserhome; - exec($command.' 2>/dev/null'); - - //* Change the homedir of the shell user and parent user - //* We have to do this manually as the usermod command fails - //* when the user is logged in or a command is running under that user - /* - $passwd_file_array = file('/etc/passwd'); - $passwd_out = ''; - if(is_array($passwd_file_array)) { - foreach($passwd_file_array as $line) { - $line = trim($line); - $parts = explode(':',$line); - if($parts[0] == $this->data['new']['username']) { - $parts[5] = escapeshellcmd($this->data['new']['dir'].'/.'.$jailkit_chroot_userhome); - $parts[6] = escapeshellcmd('/usr/sbin/jk_chrootsh'); - $new_line = implode(':',$parts); - copy('/etc/passwd','/etc/passwd~'); - chmod('/etc/passwd~',0600); - $app->uses('system'); - $app->system->replaceLine('/etc/passwd',$line,$new_line,1,0); - } - } - }*/ + $app->system->create_jailkit_user($this->data['new']['username'], $this->data['new']['dir'], $jailkit_chroot_userhome, $this->data['new']['shell'], $this->data['new']['puser'], $jailkit_chroot_puserhome); $shell = '/usr/sbin/jk_chrootsh'; if($this->data['new']['active'] != 'y') $shell = '/bin/false'; @@ -402,23 +361,21 @@ class shelluser_jailkit_plugin { $app->system->usermod($this->data['new']['username'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_userhome, $shell); $app->system->usermod($this->data['new']['puser'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_puserhome, '/usr/sbin/jk_chrootsh'); - $this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG); - if(!is_dir($this->data['new']['dir'].$jailkit_chroot_userhome)) { if(is_dir($this->data['old']['dir'].$jailkit_chroot_userhome_old)) { - $app->system->rename(escapeshellcmd($this->data['old']['dir'].$jailkit_chroot_userhome_old),escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome)); + $app->system->rename($this->data['old']['dir'].$jailkit_chroot_userhome_old,$this->data['new']['dir'].$jailkit_chroot_userhome); } else { - mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), 0750, true); + mkdir($this->data['new']['dir'].$jailkit_chroot_userhome, 0750, true); } } - $app->system->chown(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), $this->data['new']['username']); - $app->system->chgrp(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), $this->data['new']['pgroup']); + $app->system->chown($this->data['new']['dir'].$jailkit_chroot_userhome, $this->data['new']['username']); + $app->system->chgrp($this->data['new']['dir'].$jailkit_chroot_userhome, $this->data['new']['pgroup']); $this->app->log("Added created jailkit user home in : ".$this->data['new']['dir'].$jailkit_chroot_userhome, LOGLEVEL_DEBUG); - if(!is_dir($this->data['new']['dir'].$jailkit_chroot_puserhome)) mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), 0750, true); - $app->system->chown(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), $this->data['new']['puser']); - $app->system->chgrp(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), $this->data['new']['pgroup']); + if(!is_dir($this->data['new']['dir'].$jailkit_chroot_puserhome)) mkdir($this->data['new']['dir'].$jailkit_chroot_puserhome, 0750, true); + $app->system->chown($this->data['new']['dir'].$jailkit_chroot_puserhome, $this->data['new']['puser']); + $app->system->chgrp($this->data['new']['dir'].$jailkit_chroot_puserhome, $this->data['new']['pgroup']); $this->app->log("Added jailkit parent user home in : ".$this->data['new']['dir'].$jailkit_chroot_puserhome, LOGLEVEL_DEBUG); @@ -447,13 +404,6 @@ class shelluser_jailkit_plugin { } - //* Wrapper for exec function for easier debugging - private function _exec($command) { - global $app; - $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); - } - private function _setup_ssh_rsa() { global $app; $this->app->log("ssh-rsa setup shelluser_jailkit", LOGLEVEL_DEBUG); @@ -469,7 +419,7 @@ class shelluser_jailkit_plugin { // ssh-rsa authentication variables $sshrsa = $this->data['new']['ssh_rsa']; - $usrdir = escapeshellcmd($this->data['new']['dir']).'/'.$this->_get_home_dir($this->data['new']['username']); + $usrdir = $this->data['new']['dir'].'/'.$this->_get_home_dir($this->data['new']['username']); $sshdir = $usrdir.'/.ssh'; $sshkeys= $usrdir.'/.ssh/authorized_keys'; @@ -489,7 +439,8 @@ class shelluser_jailkit_plugin { if (!file_exists($sshkeys)){ // add root's key $app->file->mkdirs($sshdir, '0755'); - if(is_file('/root/.ssh/authorized_keys')) $app->system->file_put_contents($sshkeys, $app->system->file_get_contents('/root/.ssh/authorized_keys')); + $authorized_keys_template = $this->jailkit_config['jailkit_chroot_authorized_keys_template']; + if(is_file($authorized_keys_template)) $app->system->file_put_contents($sshkeys, $app->system->file_get_contents($authorized_keys_template)); // Remove duplicate keys $existing_keys = @file($sshkeys, FILE_IGNORE_NEW_LINES); @@ -544,9 +495,9 @@ class shelluser_jailkit_plugin { $this->app->log("ssh-rsa key updated in ".$sshkeys, LOGLEVEL_DEBUG); // set proper file permissions - exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$sshdir); - exec("chmod 700 ".$sshdir); - exec("chmod 600 '$sshkeys'"); + $app->system->exec_safe("chown -R ?:? ?", $this->data['new']['puser'], $this->data['new']['pgroup'], $sshdir); + $app->system->exec_safe("chmod 700 ?", $sshdir); + $app->system->exec_safe("chmod 600 ?", $sshkeys); } @@ -568,7 +519,7 @@ class shelluser_jailkit_plugin { if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); } foreach($dirs as $deldir) { - if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) exec('rm -rf ' . escapeshellarg($homedir . $deldir)); + if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) $app->system->exec_safe('rm -rf ?', $homedir . $deldir); } $empty = true; $dirres = opendir($homedir); diff --git a/server/plugins-available/software_update_plugin.inc.php b/server/plugins-available/software_update_plugin.inc.php index 587bd4f09a610c3ec496e1fa1edffe1e17e76b94..2626d1e75695bcefb79605ed7ae77e211a1755dd 100644 --- a/server/plugins-available/software_update_plugin.inc.php +++ b/server/plugins-available/software_update_plugin.inc.php @@ -111,11 +111,12 @@ class software_update_plugin { $software_update["update_url"] = str_replace('{key}', $software_package['package_key'], $software_update["update_url"]); //* Download the update package - $cmd = "cd $temp_dir && wget ".$software_update["update_url"]; if($installuser == '') { - exec($cmd); + $cmd = "cd ? && wget ?"; + $app->system->exec_safe($cmd, $temp_dir, $software_update["update_url"]); } else { - exec("su -c ".escapeshellarg($cmd)." $installuser"); + $cmd = "cd $temp_dir && wget ".$software_update["update_url"]; + $app->system->exec_safe("su -c ? ?", $cmd, $installuser); } $app->log("Downloading the update file from: ".$software_update["update_url"], LOGLEVEL_DEBUG); @@ -135,7 +136,7 @@ class software_update_plugin { if($update_filename == '') { $app->log("No package file found. Download failed? Installation aborted.", LOGLEVEL_WARN); - exec("rm -rf $temp_dir"); + $app->system->exec_safe("rm -rf ?", $temp_dir); $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); return false; @@ -148,7 +149,7 @@ class software_update_plugin { //* Checking the md5sum if(md5_file($temp_dir.'/'.$update_filename) != $software_update["update_md5"]) { $app->log("The md5 sum of the downloaded file is incorrect. Update aborted.", LOGLEVEL_WARN); - exec("rm -rf $temp_dir"); + $app->system->exec_safe("rm -rf ", $temp_dir); $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); return false; @@ -158,11 +159,13 @@ class software_update_plugin { //* unpacking the update - $cmd = "cd $temp_dir && unzip $update_filename"; + if($installuser == '') { - exec($cmd); + $cmd = "cd ? && unzip ?"; + $app->system->exec_safe($cmd, $temp_dir, $update_filename); } else { - exec("su -c ".escapeshellarg($cmd)." $installuser"); + $cmd = "cd $temp_dir && unzip $update_filename"; + $app->system->exec_safe("su -c ? ?", $cmd, $installuser); } //* Create a database, if the package requires one @@ -181,7 +184,7 @@ class software_update_plugin { $db_config['database_password'] != '' && $db_config['database_name'] != '' && $db_config['database_host'] != '') { - system("mysql --default-character-set=utf8 --force -h '".$db_config['database_host']."' -u '".$db_config['database_user']."' ".$db_config['database_name']." < ".escapeshellcmd($temp_dir.'/setup.sql')); + $app->system->exec_safe("mysql --default-character-set=utf8 --force -h ? -u ? ? < ?", $db_config['database_host'], $db_config['database_user'], $db_config['database_name'], $temp_dir.'/setup.sql'); $app->log("Loading setup.sql dump into the app db.", LOGLEVEL_DEBUG); } } @@ -196,13 +199,15 @@ class software_update_plugin { if(is_file($temp_dir.'/setup.sh')) { // Execute the setup script - exec('chmod +x '.$temp_dir.'/setup.sh'); + $app->system->exec_safe('chmod +x ?', $temp_dir.'/setup.sh'); $app->log("Executing setup.sh file in directory $temp_dir", LOGLEVEL_DEBUG); - $cmd = 'cd '.$temp_dir.' && ./setup.sh > package_install.log'; + if($installuser == '') { - exec($cmd); + $cmd = 'cd ? && ./setup.sh > package_install.log'; + $app->system->exec_safe($cmd, $temp_dir); } else { - exec("su -c ".escapeshellarg($cmd)." $installuser"); + $cmd = 'cd '.$temp_dir.' && ./setup.sh > package_install.log'; + $app->system->exec_safe("su -c ? ?", $cmd, $installuser); } $log_data = @file_get_contents("{$temp_dir}/package_install.log"); @@ -223,7 +228,7 @@ class software_update_plugin { $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); } - if($temp_dir != '' && $temp_dir != '/') exec("rm -rf $temp_dir"); + if($temp_dir != '' && $temp_dir != '/') $app->system->exec_safe("rm -rf ?", $temp_dir); $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); } diff --git a/server/plugins-available/xmpp_plugin.inc.php b/server/plugins-available/xmpp_plugin.inc.php index 128a88ebb47e76d9ce51dc1b05f578fc15a9ab2b..c680e62f0ed5e51f5ccf7b634b8321984942d808 100644 --- a/server/plugins-available/xmpp_plugin.inc.php +++ b/server/plugins-available/xmpp_plugin.inc.php @@ -240,8 +240,8 @@ class xmpp_plugin { $app->system->unlink("/etc/metronome/certs/$domain.csr"); // Remove all stored data var_dump('rm -rf /var/lib/metronome/'.$folder); - exec('rm -rf /var/lib/metronome/'.$folder); - exec('rm -rf /var/lib/metronome/*%2e'.$folder); + $app->system->exec_safe('rm -rf ?', '/var/lib/metronome/'.$folder); + $app->system->exec_safe('rm -rf ?*?', '/var/lib/metronome/', '%2e'.$folder); $app->services->restartServiceDelayed('metronome', 'reload'); } @@ -264,7 +264,7 @@ class xmpp_plugin { // Don't allow manual user deletion for mailaccount controlled domains // Remove account from metronome - exec('metronomectl deluser '.$data['old']['jid']); + $app->system->exec_safe('metronomectl deluser ?', $data['old']['jid']); } // Handle the creation of SSL certificates @@ -311,9 +311,9 @@ class xmpp_plugin { $app->system->file_put_contents($cnf_file, $tpl->grab()); // Generate new key, csr and cert - exec("(cd /etc/metronome/certs && make $domain.key)"); - exec("(cd /etc/metronome/certs && make $domain.csr)"); - exec("(cd /etc/metronome/certs && make $domain.cert)"); + $app->system->exec_safe("(cd /etc/metronome/certs && make ?)", "$domain.key"); + $app->system->exec_safe("(cd /etc/metronome/certs && make ?)", "$domain.csr"); + $app->system->exec_safe("(cd /etc/metronome/certs && make ?)", "$domain.cert"); $ssl_key = $app->system->file_get_contents($key_file); $app->system->chmod($key_file, 0400); diff --git a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..f88cbe9c0b4cdc20f6e653acd25ba2fbaccf6e3d --- /dev/null +++ b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php @@ -0,0 +1,189 @@ +isPluginEnabled() === false) { + return; + } + + if ($this->isIncronAvailable() === false) { + $app->log('You must install incron in order to use this plugin', LOGLEVEL_DEBUG); + + return; + } + + $app->plugins->registerEvent('web_domain_insert', $this->plugin_name, 'incronInsert'); + $app->plugins->registerEvent('web_domain_update', $this->plugin_name, 'incronUpdate'); + $app->plugins->registerEvent('web_domain_delete', $this->plugin_name, 'incronDelete'); + } + + function incronInsert($eventName, $data) { + $this->setup($data['new']); + } + + function incronUpdate($eventName, $data) { + global $app; + + if ($data['new']['document_root'] === $data['old']['document_root']) { + $app->log('Document root unchanged. Not updating incron configuration.', LOGLEVEL_DEBUG); + + return; + } + + $this->teardown($data['old']); + $this->setup($data['new']); + } + + function incronDelete($eventName, $data) { + $this->teardown($data['old']); + } + + private function setup($data) + { + $triggerFile = $this->getTriggerFilePath($data['document_root']); + + $this->createTriggerFile($triggerFile, $data['system_user'], $data['system_group']); + $this->createIncronConfiguration( + $triggerFile, + $data['system_user'], + $data['fastcgi_php_version'] + ); + + $this->restartIncronService(); + } + + private function teardown($data) { + $this->deleteIncronConfiguration($data['system_user']); + $this->deleteTriggerFile($this->getTriggerFilePath($data['document_root'])); + + $file = sprintf('/etc/incron.d/%s.conf', $data['system_user']); + + @unlink($file); + + $this->restartIncronService(); + } + + private function isIncronAvailable() { + exec('which incrond', $output, $retval); + + return $retval === 0; + } + + private function isPluginEnabled() { + global $app, $conf; + + $app->uses('getconf'); + $serverConfig = $app->getconf->get_server_config($conf['server_id'], 'web'); + + return $serverConfig['php_fpm_incron_reload'] === 'y'; + } + + private function createIncronConfiguration($triggerFile, $systemUser, $fastcgiPhpVersion) { + global $app; + + $phpService = $this->getPhpService($fastcgiPhpVersion); + $configFile = $this->getIncronConfigurationFilePath($systemUser); + + $content = sprintf( + '%s %s %s', + $triggerFile, + 'IN_CLOSE_WRITE', + $app->system->getinitcommand($phpService, 'reload') + ); + + file_put_contents($configFile, $content); + + $app->log(sprintf('Created incron configuration "%s"', $configFile), LOGLEVEL_DEBUG); + } + + private function createTriggerFile($triggerFile, $systemUser, $systemGroup) { + global $app; + + if (!file_exists($triggerFile)) { + exec(sprintf('touch %s', $triggerFile)); + } + + exec(sprintf('chown %s:%s %s', $systemUser, $systemGroup, $triggerFile)); + + $app->log(sprintf('Ensured incron trigger file "%s"', $triggerFile), LOGLEVEL_DEBUG); + } + + private function deleteIncronConfiguration($systemUser) { + global $app; + + $configFile = $this->getIncronConfigurationFilePath($systemUser); + if (!file_exists($configFile)) { + return; + } + + unlink($configFile); + + $app->log(sprintf('Deleted incron configuration "%s"', $configFile), LOGLEVEL_DEBUG); + } + + private function deleteTriggerFile($triggerFile) { + global $app; + + if (!file_exists($triggerFile)) { + return; + } + + unlink($triggerFile); + + $app->log(sprintf('Deleted incron trigger file "%s"', $triggerFile), LOGLEVEL_DEBUG); + } + + private function getTriggerFilePath($documentRoot) { + return sprintf('%s/private/php-fpm.reload', $documentRoot); + } + + private function getIncronConfigurationFilePath($systemUser) { + return sprintf('/etc/incron.d/%s.conf', $systemUser); + } + + private function getPhpService($fastcgiPhpVersion) { + $phpInfo = explode(':', $fastcgiPhpVersion); + if (empty($phpInfo)) { + return null; + } + + $phpService = $phpInfo[1]; + if (empty($phpService)) { + return null; + } + + return $phpService; + } + + private function restartIncronService() { + global $app; + + $serviceName = 'incrond'; + if (file_exists('/etc/debian_version')) { + $serviceName = 'incron'; + } + + exec($app->system->getinitcommand($serviceName, 'restart')); + } +} \ No newline at end of file diff --git a/server/scripts/create_jailkit_user.sh b/server/scripts/create_jailkit_user.sh index 5e1060be2503bc713842d3ef83910e675cf8d2d7..efefafe3ea808210639dd15021988a78221087dd 100755 --- a/server/scripts/create_jailkit_user.sh +++ b/server/scripts/create_jailkit_user.sh @@ -21,6 +21,12 @@ CHROOT_SHELL=$4 CHROOT_P_USER=$5 CHROOT_P_USER_HOMEDIR=$6 +### Check if USERHOMEDIR already exists ### +if [ ! -d $CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR ]; then + mkdir -p $CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR + chown -R $CHROOT_USERNAME $CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR +fi + ### Reconfigure the chroot home directory for the user ### usermod --home=$CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR $CHROOT_USERNAME 2>/dev/null diff --git a/server/scripts/ispconfig_patch b/server/scripts/ispconfig_patch index 6ed2a3f5aebb078e787f726d95c1e10565025416..4470552c137e7c5fc5c0ee62178c8492a2a463a4 100644 --- a/server/scripts/ispconfig_patch +++ b/server/scripts/ispconfig_patch @@ -79,7 +79,9 @@ function simple_query($query, $answers, $default) } function is_installed($appname) { - exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out,$returncode); + $out = array(); + $returncode = null; + exec('which '.escapeshellarg($appname).' 2> /dev/null',$out,$returncode); if(isset($out[0]) && stristr($out[0],$appname) && $returncode == 0) { return true; } else { @@ -87,6 +89,13 @@ function is_installed($appname) { } } +$cmd_opt = getopt('', array('patch_id::')); +$auto = false; +if(isset($cmd_opt['patch_id'])) { + $patch_id = $cmd_opt['patch_id']; + $auto = true; +} + echo "\n\n".str_repeat('-',80)."\n"; echo " _____ ___________ _____ __ _ |_ _/ ___| ___ \ / __ \ / _(_) @@ -98,14 +107,18 @@ echo " _____ ___________ _____ __ _ |___/ "; echo "\n".str_repeat('-',80)."\n"; echo "\n\n>> Patch tool \n\n"; -echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n"; +if(!$auto) { + echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n"; +} if(!is_installed('patch')) { swriteln("The program 'patch' is missing on your server. Please install it and try again."); exit; } -$patch_id = simple_query('Enter patch id', false, ''); +if(!$auto) { + $patch_id = simple_query('Enter patch id', false, ''); +} if($patch_id == '') { swriteln("Patch terminated by user.\n"); die(); @@ -122,8 +135,12 @@ if(!$patch_data) { $patch_text = @file_get_contents('http://ispconfig.org/downloads/patches/' . $patch_id . '.txt'); if($patch_text) { - $ok = simple_query("Patch description:\n".str_repeat("-", 80)."\n".$patch_text."\n".str_repeat("-", 80)."\nDo you really want to apply this patch now?", array('y','n'), 'y'); - if($ok != 'y') { + if($auto) { + $ok = 'y'; + } else { + $ok = simple_query("Patch description:\n" . str_repeat("-", 80) . "\n" . $patch_text . "\n" . str_repeat("-", 80) . "\nDo you really want to apply this patch now?", array('y', 'n'), 'y'); + } + if($ok != 'y') { swriteln("Patch terminated by user.\n"); die(); } @@ -139,5 +156,3 @@ passthru('patch -p0 < ' . escapeshellarg($temp_file)); unlink($temp_file); exit; - -?> \ No newline at end of file diff --git a/server/scripts/ispconfig_update.php b/server/scripts/ispconfig_update.php index 0c2d3789e8e801ac93a97d71be21f8ba8db23180..2c77607b6576a44bf8fb0a6ca70c9a4f3d94d214 100644 --- a/server/scripts/ispconfig_update.php +++ b/server/scripts/ispconfig_update.php @@ -91,7 +91,7 @@ echo "Please choose the update method. For production systems select 'stable'. \ $method = simple_query('Select update method', array('stable', 'git-stable', 'git-master'), 'stable'); if($method == 'stable') { - $new_version = @file_get_contents('http://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.'); + $new_version = @file_get_contents('https://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.'); $new_version = trim($new_version); if(version_compare($new_version, ISPC_APP_VERSION, '>')) { passthru('/usr/local/ispconfig/server/scripts/update_stable.sh');
{tmpl_var name='name_txt'}{tmpl_var name='name_txt'} {tmpl_var name='version_txt'} {tmpl_var name='category_txt'}  
{tmpl_var name='name'}{tmpl_var name='name'} {tmpl_var name='version'}-{tmpl_var name='release'} {tmpl_var name='category'} {tmpl_var name='package_status'}{tmpl_var name='package_status'}  
{tmpl_var name="command"}
- +
{tmpl_var name="sys_groupid"} - +
{tmpl_var name="database_user"} - +
{tmpl_var name="parent_domain_id"} {tmpl_var name="username"} - +
{tmpl_var name="parent_domain_id"} {tmpl_var name="domain"} - +
{tmpl_var name="parent_domain_id"} {tmpl_var name="path"} - +
{tmpl_var name="web_folder_id"} {tmpl_var name="username"} - +
- +
- +
{tmpl_var name="parent_domain_id"} {tmpl_var name="username"} - +
{tmpl_var name="reserved"} - +
{tmpl_var name="server_id"} {tmpl_var name="allservers"} - +
{tmpl_var name="active"} {tmpl_var name="template_name"} - +
{tmpl_var name="ip_address"} - +