diff --git a/.gitignore b/.gitignore index 1a3b8bd98ef0ed25aa2dcfd12fa9671e256d0e5d..d42aee61f4caf9d716977a21353bf598c3092220 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store -/nbproject/private/ \ No newline at end of file +/nbproject/private/ +.phplint-cache diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..f2f552088d76ac018c4df2caac9858ac7af2c77a --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,21 @@ +# Defines stages which are to be executed +stages: + - syntax + +# +### Stage syntax +# + +syntax:lint: + stage: syntax + image: bobey/docker-gitlab-ci-runner-php7 + allow_failure: false + only: + - schedules + - web + + script: + - composer require overtrue/phplint + - echo "Syntax checking PHP files" + - echo "For more information http://www.icosaedro.it/phplint/" + - vendor/bin/phplint diff --git a/.phplint.yml b/.phplint.yml new file mode 100644 index 0000000000000000000000000000000000000000..10fd2a25afd2045c793bba0fd59d188fbbb6edf6 --- /dev/null +++ b/.phplint.yml @@ -0,0 +1,9 @@ +path: ./ +jobs: 10 +cache: .phplint-cache +extensions: + - php + - lng +exclude: + - vendor + diff --git a/README.md b/README.md index 4676d2bd581fb5ed734d916914b4697b49f10c0e..5c251c0e28949a84a7b3f41ea500a28d74812358 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # ISPConfig - Hosting Control Panel +Nightly (master): [![pipeline status](https://git.ispconfig.org/ispconfig/ispconfig3/badges/master/pipeline.svg)](https://git.ispconfig.org/ispconfig/ispconfig3/commits/master) +Stable branch: [![pipeline status](https://git.ispconfig.org/ispconfig/ispconfig3/badges/stable-3.1/pipeline.svg)](https://git.ispconfig.org/ispconfig/ispconfig3/commits/stable-3.1) + + - Manage multiple servers from one control panel - Web server management (Apache2 and nginx) - Mail server management (with virtual mail users) diff --git a/helper_scripts/ubuntu-amavisd-new-2.11.patch b/helper_scripts/ubuntu-amavisd-new-2.11.patch new file mode 100644 index 0000000000000000000000000000000000000000..ac0ecb2dc0512b6fe91c2ba905bd0797fd2edc5b --- /dev/null +++ b/helper_scripts/ubuntu-amavisd-new-2.11.patch @@ -0,0 +1,18 @@ +--- amavisd-new.orig 2017-11-16 11:51:19.000000000 +0100 ++++ amavisd-new 2018-05-25 16:53:45.623398108 +0200 +@@ -22829,6 +22829,7 @@ + } + # load policy banks from the 'client_ipaddr_policy' lookup + Amavis::load_policy_bank($_,$msginfo) for @bank_names_cl; ++ $msginfo->originating(c('originating')); + + $msginfo->client_addr($cl_ip); # ADDR + $msginfo->client_port($cl_port); # PORT +@@ -34361,6 +34362,7 @@ + $sig_ind++; + } + Amavis::load_policy_bank($_,$msginfo) for @bank_names; ++ $msginfo->originating(c('originating')); + $msginfo->dkim_signatures_valid(\@signatures_valid) if @signatures_valid; + # if (ll(5) && $sig_ind > 0) { + # # show which header fields are covered by which signature diff --git a/helper_scripts/utils.sh b/helper_scripts/utils.sh index ff8c01d2e4b886e131a271e93b4b448dff5113e1..b42fd32dc2e9bcca2aebe84e77c5f03adc073d0f 100644 --- a/helper_scripts/utils.sh +++ b/helper_scripts/utils.sh @@ -1,4 +1,8 @@ #!/bin/bash + +# this is a bash script library to be called by other scripts, +# but not to be run directly + # Copyright (c) 2009, Scott Barr # All rights reserved. # diff --git a/install/apps/xmpp_libs/auth_prosody/authenticate_isp.sh b/install/apps/xmpp_libs/auth_prosody/authenticate_isp.sh new file mode 100644 index 0000000000000000000000000000000000000000..1992fae0b7f3ae54391ea9aa25a6582bd42aaa5c --- /dev/null +++ b/install/apps/xmpp_libs/auth_prosody/authenticate_isp.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +IFS=":" +AUTH_OK=1 +AUTH_FAILED=0 +LOGFILE="/var/log/prosody/auth.log" +USELOG=true + +while read ACTION USER HOST PASS ; do + + [ $USELOG == true ] && { echo "Date: $(date) Action: $ACTION User: $USER Host: $HOST" >> $LOGFILE; } + + case $ACTION in + "auth") + if [ `/usr/bin/php /usr/local/lib/prosody/auth/db_auth.php $USER $HOST $PASS 2>/dev/null` == 1 ] ; then + echo $AUTH_OK + [ $USELOG == true ] && { echo "AUTH OK" >> $LOGFILE; } + else + echo $AUTH_FAILED + [ $USELOG == true ] && { echo "AUTH FAILED" >> $LOGFILE; } + fi + ;; + "isuser") + if [ `/usr/bin/php /usr/local/lib/prosody/auth/db_isuser.php $USER $HOST 2>/dev/null` == 1 ] ; then + echo $AUTH_OK + [ $USELOG == true ] && { echo "ISUSER OK" >> $LOGFILE; } + else + echo $AUTH_FAILED + [ $USELOG == true ] && { echo "ISUSER FAILED" >> $LOGFILE; } + fi + ;; + *) + echo $AUTH_FAILED + [ $USELOG == true ] && { echo "UNKNOWN ACTION GIVEN: $ACTION" >> $LOGFILE; } + ;; + esac + +done diff --git a/install/apps/metronome_libs/mod_auth_external/db_auth.php b/install/apps/xmpp_libs/auth_prosody/db_auth.php similarity index 100% rename from install/apps/metronome_libs/mod_auth_external/db_auth.php rename to install/apps/xmpp_libs/auth_prosody/db_auth.php diff --git a/install/apps/metronome_libs/mod_auth_external/db_conf.inc.php b/install/apps/xmpp_libs/auth_prosody/db_conf.inc.php similarity index 100% rename from install/apps/metronome_libs/mod_auth_external/db_conf.inc.php rename to install/apps/xmpp_libs/auth_prosody/db_conf.inc.php diff --git a/install/apps/metronome_libs/mod_auth_external/db_isuser.php b/install/apps/xmpp_libs/auth_prosody/db_isuser.php similarity index 100% rename from install/apps/metronome_libs/mod_auth_external/db_isuser.php rename to install/apps/xmpp_libs/auth_prosody/db_isuser.php diff --git a/install/apps/xmpp_libs/auth_prosody/prosody-purge b/install/apps/xmpp_libs/auth_prosody/prosody-purge new file mode 100644 index 0000000000000000000000000000000000000000..df50105da01451d4577d6d5edb0c3ee7596c581e --- /dev/null +++ b/install/apps/xmpp_libs/auth_prosody/prosody-purge @@ -0,0 +1,62 @@ +#!/usr/bin/php + 4); + +$operation = $argv[1]; +$host = $argv[2]; + +$configFile = file_get_contents('/etc/prosody/storage.cfg.lua'); +preg_match_all('/(host|database|port|username|password) *= *"?([^"\n]*)"?;/', $configFile, $matches); +$config = array(); +foreach($matches[1] AS $ix => $key) { + $config[$key] = $matches[2][$ix]; +} + +try { + // Connect to database + $db = new mysqli($config['host'], $config['username'], $config['password'], $config['database']); + + switch($operation){ + case 'user': + usage(count($argv) != 4); + $user = $argv[3]; + do_query($db->prepare("DELETE FROM prosody WHERE user = ? AND host = ?"), $host, $user); + do_query($db->prepare("DELETE FROM prosodyarchive WHERE user = ? AND host = ?"), $host, $user); + break; + case 'domain': + do_query($db->prepare("DELETE FROM prosody WHERE host = ?"), $host); + do_query($db->prepare("DELETE FROM prosodyarchive WHERE host = ?"), $host); + do_query($db->prepare("DELETE FROM prosody WHERE host LIKE ?"), "%.$host"); + do_query($db->prepare("DELETE FROM prosodyarchive WHERE host LIKE ?"), "%.$host"); + break; + } + $db->close(); +} catch (Exception $ex) { + var_dump($ex); +} + + +function do_query($query, $host, $user = false){ + if($user !== false) + $query->bind_param('ss', $user, $host); + else + $query->bind_param('s', $host); + $query->execute(); + $entries = $query->affected_rows; + $query->close(); + if(DEBUG) echo "$entries deleted!\n"; + return $entries; +} + +function result_false($cond = true) { + if(!$cond) return; + exit(1); +} + +function usage($cond = false){ + if(!$cond) return; + echo "USAGE: \n prosody-purge domain my.domain.com \n prosody-purge user my.domain.com username \n"; + result_false(); +} diff --git a/install/apps/metronome_libs/mod_auth_external/authenticate_isp.sh b/install/apps/xmpp_libs/mod_auth_external/authenticate_isp.sh similarity index 100% rename from install/apps/metronome_libs/mod_auth_external/authenticate_isp.sh rename to install/apps/xmpp_libs/mod_auth_external/authenticate_isp.sh diff --git a/install/apps/xmpp_libs/mod_auth_external/db_auth.php b/install/apps/xmpp_libs/mod_auth_external/db_auth.php new file mode 100644 index 0000000000000000000000000000000000000000..2d3faa3379eb6765b20f9d12dff210cd47147f41 --- /dev/null +++ b/install/apps/xmpp_libs/mod_auth_external/db_auth.php @@ -0,0 +1,48 @@ +real_escape_string($arg_email); + $query = $db->prepare("SELECT jid, password FROM xmpp_user WHERE jid LIKE ? AND active='y' AND server_id=?"); + $query->bind_param('si', $arg_email, $isp_server_id); + $query->execute(); + $query->bind_result($jid, $password); + $query->fetch(); + $query->close(); + + result_false(is_null($jid)); + checkAuth($arg_password, $password); +}catch(Exception $ex){ + echo 0; + exit(); +} + +function result_false($cond = true){ + if(!$cond) return; + echo 0; + exit(); +} +function result_true(){ + echo 1; + exit(); +} +function checkAuth($pw_arg, $pw_db){ + if(crypt($pw_arg, $pw_db) == $pw_db) + result_true(); + result_false(); +} +?> \ No newline at end of file diff --git a/install/apps/xmpp_libs/mod_auth_external/db_conf.inc.php b/install/apps/xmpp_libs/mod_auth_external/db_conf.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..1aba63d6ea051ff4826312757b10af2a1c590525 --- /dev/null +++ b/install/apps/xmpp_libs/mod_auth_external/db_conf.inc.php @@ -0,0 +1,6 @@ +real_escape_string($arg_email); + $query = $db->prepare("SELECT count(*) AS usercount FROM xmpp_user WHERE jid LIKE ? AND active='y' AND server_id=?"); + $query->bind_param('si', $arg_email, $isp_server_id); + $query->execute(); + $query->bind_result($usercount); + $query->fetch(); + $query->close(); + + result_false($usercount != 1); + result_true(); + +}catch(Exception $ex){ + echo 0; + exit(); +} + +function result_false($cond = true){ + if(!$cond) return; + echo 0; + exit(); +} +function result_true(){ + echo 1; + exit(); +} + +?> diff --git a/install/apps/metronome_libs/mod_auth_external/mod_auth_external.lua b/install/apps/xmpp_libs/mod_auth_external/mod_auth_external.lua similarity index 100% rename from install/apps/metronome_libs/mod_auth_external/mod_auth_external.lua rename to install/apps/xmpp_libs/mod_auth_external/mod_auth_external.lua diff --git a/install/apps/metronome_libs/mod_discoitems.lua b/install/apps/xmpp_libs/mod_discoitems.lua similarity index 100% rename from install/apps/metronome_libs/mod_discoitems.lua rename to install/apps/xmpp_libs/mod_discoitems.lua diff --git a/install/apps/metronome_libs/mod_webpresence/icons/status_away.png b/install/apps/xmpp_libs/mod_webpresence/icons/status_away.png similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/icons/status_away.png rename to install/apps/xmpp_libs/mod_webpresence/icons/status_away.png diff --git a/install/apps/metronome_libs/mod_webpresence/icons/status_chat.png b/install/apps/xmpp_libs/mod_webpresence/icons/status_chat.png similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/icons/status_chat.png rename to install/apps/xmpp_libs/mod_webpresence/icons/status_chat.png diff --git a/install/apps/metronome_libs/mod_webpresence/icons/status_dnd.png b/install/apps/xmpp_libs/mod_webpresence/icons/status_dnd.png similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/icons/status_dnd.png rename to install/apps/xmpp_libs/mod_webpresence/icons/status_dnd.png diff --git a/install/apps/metronome_libs/mod_webpresence/icons/status_offline.png b/install/apps/xmpp_libs/mod_webpresence/icons/status_offline.png similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/icons/status_offline.png rename to install/apps/xmpp_libs/mod_webpresence/icons/status_offline.png diff --git a/install/apps/metronome_libs/mod_webpresence/icons/status_online.png b/install/apps/xmpp_libs/mod_webpresence/icons/status_online.png similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/icons/status_online.png rename to install/apps/xmpp_libs/mod_webpresence/icons/status_online.png diff --git a/install/apps/metronome_libs/mod_webpresence/icons/status_xa.png b/install/apps/xmpp_libs/mod_webpresence/icons/status_xa.png similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/icons/status_xa.png rename to install/apps/xmpp_libs/mod_webpresence/icons/status_xa.png diff --git a/install/apps/metronome_libs/mod_webpresence/mod_webpresence.lua b/install/apps/xmpp_libs/mod_webpresence/mod_webpresence.lua similarity index 100% rename from install/apps/metronome_libs/mod_webpresence/mod_webpresence.lua rename to install/apps/xmpp_libs/mod_webpresence/mod_webpresence.lua diff --git a/install/dist/conf/debian60.conf.php b/install/dist/conf/debian60.conf.php index a7ea1364563909c56a86fd3d305fd92a00667d98..01c275bd59d815681d34153f2bc3a2e1248c3072 100644 --- a/install/dist/conf/debian60.conf.php +++ b/install/dist/conf/debian60.conf.php @@ -227,8 +227,17 @@ $conf['cron']['crontab_dir'] = '/etc/cron.d'; $conf['cron']['wget'] = '/usr/bin/wget'; //* Metronome XMPP -$conf['xmpp']['installed'] = false; -$conf['xmpp']['init_script'] = 'metronome'; +$conf['metronome']['installed'] = false; +$conf['metronome']['init_script'] = 'metronome'; +$conf['metronome']['initial_modules'] = 'saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons'; + +//* Prosody XMPP +$conf['prosody']['installed'] = false; +$conf['prosody']['init_script'] = 'prosody'; +$conf['prosody']['storage_database'] = 'prosody'; +$conf['prosody']['storage_user'] = 'prosody'; +$conf['prosody']['storage_password'] = md5(uniqid(rand())); +$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access'; ?> diff --git a/install/dist/conf/debian90.conf.php b/install/dist/conf/debian90.conf.php index 7b3c2e365c01d756bdd0959118438e44b5d91116..58aeff24364427510b3e00151b8140b0e3872c4c 100644 --- a/install/dist/conf/debian90.conf.php +++ b/install/dist/conf/debian90.conf.php @@ -227,7 +227,16 @@ $conf['cron']['crontab_dir'] = '/etc/cron.d'; $conf['cron']['wget'] = '/usr/bin/wget'; //* Metronome XMPP -$conf['xmpp']['installed'] = false; -$conf['xmpp']['init_script'] = 'metronome'; +$conf['metronome']['installed'] = false; +$conf['metronome']['init_script'] = 'metronome'; +$conf['metronome']['initial_modules'] = 'saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons'; + +//* Prosody XMPP +$conf['prosody']['installed'] = false; +$conf['prosody']['init_script'] = 'prosody'; +$conf['prosody']['storage_database'] = 'prosody'; +$conf['prosody']['storage_user'] = 'prosody'; +$conf['prosody']['storage_password'] = md5(uniqid(rand())); +$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access'; ?> diff --git a/install/dist/conf/debiantesting.conf.php b/install/dist/conf/debiantesting.conf.php index fdf83109180774a634922c994a92938f60484f5d..4ad9b17325b5d002e29588dc6d38fd69b22782c0 100644 --- a/install/dist/conf/debiantesting.conf.php +++ b/install/dist/conf/debiantesting.conf.php @@ -227,8 +227,17 @@ $conf['cron']['crontab_dir'] = '/etc/cron.d'; $conf['cron']['wget'] = '/usr/bin/wget'; //* Metronome XMPP -$conf['xmpp']['installed'] = false; -$conf['xmpp']['init_script'] = 'metronome'; +$conf['metronome']['installed'] = false; +$conf['metronome']['init_script'] = 'metronome'; +$conf['metronome']['initial_modules'] = 'saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons'; + +//* Prosody XMPP +$conf['prosody']['installed'] = false; +$conf['prosody']['init_script'] = 'prosody'; +$conf['prosody']['storage_database'] = 'prosody'; +$conf['prosody']['storage_user'] = 'prosody'; +$conf['prosody']['storage_password'] = md5(uniqid(rand())); +$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access'; ?> diff --git a/install/dist/conf/ubuntu1604.conf.php b/install/dist/conf/ubuntu1604.conf.php index a903bacfc346a5ba151eec6f01d5529c3c255525..6159638d0f99f86276be590aa2fc6c3218d07de1 100644 --- a/install/dist/conf/ubuntu1604.conf.php +++ b/install/dist/conf/ubuntu1604.conf.php @@ -227,8 +227,17 @@ $conf['cron']['crontab_dir'] = '/etc/cron.d'; $conf['cron']['wget'] = '/usr/bin/wget'; //* Metronome XMPP -$conf['xmpp']['installed'] = false; -$conf['xmpp']['init_script'] = 'metronome'; +$conf['metronome']['installed'] = false; +$conf['metronome']['init_script'] = 'metronome'; +$conf['metronome']['initial_modules'] = 'saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons'; + +//* Prosody XMPP +$conf['prosody']['installed'] = false; +$conf['prosody']['init_script'] = 'prosody'; +$conf['prosody']['storage_database'] = 'prosody'; +$conf['prosody']['storage_user'] = 'prosody'; +$conf['prosody']['storage_password'] = md5(uniqid(rand())); +$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access'; ?> diff --git a/install/dist/conf/ubuntu1710.conf.php b/install/dist/conf/ubuntu1710.conf.php index 0c87005910a61f8625735be1a6a130eaaee0cd54..e04f4116ff21711167e67bb57b86fbf29ce9461a 100644 --- a/install/dist/conf/ubuntu1710.conf.php +++ b/install/dist/conf/ubuntu1710.conf.php @@ -223,8 +223,17 @@ $conf['cron']['crontab_dir'] = '/etc/cron.d'; $conf['cron']['wget'] = '/usr/bin/wget'; //* Metronome XMPP -$conf['xmpp']['installed'] = false; -$conf['xmpp']['init_script'] = 'metronome'; +$conf['metronome']['installed'] = false; +$conf['metronome']['init_script'] = 'metronome'; +$conf['metronome']['initial_modules'] = 'saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons'; + +//* Prosody XMPP +$conf['prosody']['installed'] = false; +$conf['prosody']['init_script'] = 'prosody'; +$conf['prosody']['storage_database'] = 'prosody'; +$conf['prosody']['storage_user'] = 'prosody'; +$conf['prosody']['storage_password'] = md5(uniqid(rand())); +$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access'; ?> diff --git a/install/dist/conf/ubuntu1804.conf.php b/install/dist/conf/ubuntu1804.conf.php new file mode 100644 index 0000000000000000000000000000000000000000..15cdb1c5ebbb74c45ab1f1df2f1c5caf8a008464 --- /dev/null +++ b/install/dist/conf/ubuntu1804.conf.php @@ -0,0 +1,230 @@ + \ No newline at end of file diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 57fb1934408364e2c2eef66eb757b4c099686d6d..730058f6e77d499dec6a23dcf7455ff1eba26bb7 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -61,7 +61,7 @@ class installer extends installer_base { } //* Configure master.cf and add a line for deliver $content = rf($conf["postfix"]["config_dir"].'/master.cf'); - $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n"; + $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${original_recipient}'."\n"; af($config_dir.'/master.cf', $deliver_content); unset($content); unset($deliver_content); @@ -111,7 +111,10 @@ class installer extends installer_base { } if(version_compare($dovecot_version,2.2) >= 0) { // Dovecot > 2.2 does not recognize !SSLv2 anymore on Debian 9 - replaceLine($config_dir.'/'.$configfile, 'ssl_protocols = !SSLv2 !SSLv3', 'ssl_protocols = !SSLv3', 1, 0); + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('!SSLv2','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); } } else { if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian6_dovecot.conf.master')) { diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index f1c8d672042ac415e92b295dfac6a988bcc81a9d..f8ca1eb6abe8c233847e25ed153038f922309813 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -394,7 +394,7 @@ class installer_dist extends installer_base { } //* Configure master.cf and add a line for deliver $content = rf($conf["postfix"]["config_dir"].'/master.cf'); - $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n"; + $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${original_recipient}'."\n"; af($conf["postfix"]["config_dir"].'/master.cf', $deliver_content); unset($content); unset($deliver_content); @@ -443,6 +443,13 @@ class installer_dist extends installer_base { if(version_compare($dovecot_version,2.1) < 0) { removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); } + if(version_compare($dovecot_version,2.2) >= 0) { + // Dovecot > 2.2 does not recognize !SSLv2 anymore on Debian 9 + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('!SSLv2','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + } 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 { @@ -715,6 +722,12 @@ class installer_dist extends installer_base { $tpl = new tpl('apache_ispconfig.conf.master'); $tpl->setVar('apache_version',getapacheversion()); + if($this->is_update == true) { + $tpl->setVar('logging',get_logging_state()); + } else { + $tpl->setVar('logging','yes'); + } + $records = $this->db->queryAllRecords("SELECT * FROM ?? WHERE server_id = ? AND virtualhost = 'y'", $conf['mysql']['master_database'] . '.server_ip', $conf['server_id']); $ip_addresses = array(); @@ -799,6 +812,17 @@ class installer_dist extends installer_base { //* add a sshusers group $command = 'groupadd sshusers'; if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + // add anonymized log option to nginxx.conf file + $nginx_conf_file = $conf['nginx']['config_dir'].'/nginx.conf'; + if(is_file($nginx_conf_file)) { + $tmp = file_get_contents($nginx_conf_file); + if(!stristr($tmp, 'log_format anonymized')) { + copy($nginx_conf_file,$nginx_conf_file.'~'); + replaceLine($nginx_conf_file, 'http {', "http {\n\n".file_get_contents('tpl/nginx_anonlog.master'), 0, 0); + } + } + } public function configure_bastille_firewall() @@ -1076,6 +1100,8 @@ class installer_dist extends installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/nginx_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); @@ -1149,6 +1175,11 @@ class installer_dist extends installer_base { $command = "chmod +x $install_dir/server/scripts/*.sh"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + if ($this->install_ispconfig_interface == true && isset($conf['interface_password']) && $conf['interface_password']!='admin') { + $sql = "UPDATE sys_user SET passwort = md5(?) WHERE username = 'admin';"; + $this->db->query($sql, $conf['interface_password']); + } + if($conf['apache']['installed'] == true && $this->install_ispconfig_interface == true){ //* Copy the ISPConfig vhost for the controlpanel // TODO: These are missing! should they be "vhost_dist_*_dir" ? diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index b3cfc207194f18f4dbddc039942fb06ddeb411af..f0c28a61c27d24f17162e12811cff88d2dab6b62 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -303,7 +303,7 @@ class installer extends installer_base } //* Configure master.cf and add a line for deliver $content = rf($conf["postfix"]["config_dir"].'/master.cf'); - $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DROhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n"; + $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DROhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${original_recipient}'."\n"; af($config_dir.'/master.cf', $deliver_content); unset($content); unset($deliver_content); @@ -345,6 +345,7 @@ class installer extends installer_base if(version_compare($dovecot_version,2, '>=')) { $content = str_replace('# iterate_query', 'iterate_query', $content); } + $content = str_replace('{server_id}', $conf['server_id'], $content); $this->write_config_file($configfile, $content); } @@ -602,6 +603,12 @@ class installer extends installer_base $tpl = new tpl('apache_ispconfig.conf.master'); $tpl->setVar('apache_version',getapacheversion()); + if($this->is_update == true) { + $tpl->setVar('logging',get_logging_state()); + } else { + $tpl->setVar('logging','yes'); + } + $records = $this->db->queryAllRecords("SELECT * FROM ?? WHERE server_id = ? AND virtualhost = 'y'", $conf['mysql']['master_database'] . '.server_ip', $conf['server_id']); $ip_addresses = array(); @@ -996,7 +1003,9 @@ class installer extends installer_base caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + $command = 'chown root:ispconfig '.$install_dir.'/security/nginx_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); @@ -1076,6 +1085,11 @@ class installer extends installer_base $command = "chmod +x $install_dir/server/scripts/*.sh"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + if ($this->install_ispconfig_interface == true && isset($conf['interface_password']) && $conf['interface_password']!='admin') { + $sql = "UPDATE sys_user SET passwort = md5(?) WHERE username = 'admin';"; + $this->db->query($sql, $conf['interface_password']); + } + if($conf['apache']['installed'] == true && $this->install_ispconfig_interface == true){ //* Copy the ISPConfig vhost for the controlpanel $content = $this->get_template_file("apache_ispconfig.vhost", true); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index f991c77d2be66295c1a3756c543e174114f39f5c..32d74a6d1798d593c9a3f8b3c49c014a42beda58 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -404,7 +404,7 @@ class installer_dist extends installer_base { } //* Configure master.cf and add a line for deliver $content = rf($conf["postfix"]["config_dir"].'/master.cf'); - $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n"; + $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${original_recipient}'."\n"; af($conf["postfix"]["config_dir"].'/master.cf', $deliver_content); unset($content); unset($deliver_content); @@ -507,7 +507,7 @@ class installer_dist extends installer_base { $content = str_replace('{mysql_server_port}', $conf["mysql"]["port"], $content); $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); $content = str_replace('{hostname}', $conf['hostname'], $content); - $content = str_replace('{amavis_config_dir}', $conf['amavis']['config_dir']); + $content = str_replace('{amavis_config_dir}', $conf['amavis']['config_dir'], $content); wf($conf["amavis"]["config_dir"].'/amavisd.conf', $content); chmod($conf['amavis']['config_dir'].'/amavisd.conf', 0640); @@ -691,6 +691,12 @@ class installer_dist extends installer_base { $tpl = new tpl('apache_ispconfig.conf.master'); $tpl->setVar('apache_version',getapacheversion()); + if($this->is_update == true) { + $tpl->setVar('logging',get_logging_state()); + } else { + $tpl->setVar('logging','yes'); + } + $records = $this->db->queryAllRecords("SELECT * FROM ?? WHERE server_id = ? AND virtualhost = 'y'", $conf['mysql']['master_database'] . '.server_ip', $conf['server_id']); $ip_addresses = array(); @@ -817,6 +823,16 @@ class installer_dist extends installer_base { //* add a sshusers group $command = 'groupadd sshusers'; if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + // add anonymized log option to nginxx.conf file + $nginx_conf_file = $conf['nginx']['config_dir'].'/nginx.conf'; + if(is_file($nginx_conf_file)) { + $tmp = file_get_contents($nginx_conf_file); + if(!stristr($tmp, 'log_format anonymized')) { + copy($nginx_conf_file,$nginx_conf_file.'~'); + replaceLine($nginx_conf_file, 'http {', "http {\n\n".file_get_contents('tpl/nginx_anonlog.master'), 0, 0); + } + } } public function configure_bastille_firewall() @@ -1094,7 +1110,9 @@ class installer_dist extends installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + $command = 'chown root:ispconfig '.$install_dir.'/security/nginx_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); @@ -1170,6 +1188,11 @@ class installer_dist extends installer_base { $command = "chmod +x $install_dir/server/scripts/*.sh"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + if ($this->install_ispconfig_interface == true && isset($conf['interface_password']) && $conf['interface_password']!='admin') { + $sql = "UPDATE sys_user SET passwort = md5(?) WHERE username = 'admin';"; + $this->db->query($sql, $conf['interface_password']); + } + if($conf['apache']['installed'] == true && $this->install_ispconfig_interface == true){ //* Copy the ISPConfig vhost for the controlpanel // TODO: These are missing! should they be "vhost_dist_*_dir" ? diff --git a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master index 88a32b463604ec93700a594e05cc2816c7c03715..5e1c8ebba6fe2616b76196ffa8a5155dd374c014 100644 --- a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master +++ b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master @@ -55,7 +55,7 @@ $sql_select_policy = $sql_select_white_black_list = 'SELECT wb FROM spamfilter_wblist'. - ' WHERE (spamfilter_wblist.rid=?) AND (spamfilter_wblist.email IN (%k))' . + ' WHERE (spamfilter_wblist.rid=?) AND (spamfilter_wblist.email IN (%k)) AND (spamfilter_wblist.active="y")' . ' ORDER BY spamfilter_wblist.priority DESC'; # @@ -112,9 +112,10 @@ $policy_bank{'ORIGINATING'} = { # Allow SMTP access from IPs in @inet_acl to amvisd SMTP Port @inet_acl = qw( 127.0.0.1 [::1] 192.168.0.0/16 ); -$signed_header_fields{'received'} = 0; # turn off signing of Received +# DKIM $enable_dkim_verification = 1; -$enable_dkim_signing = 1; +$enable_dkim_signing = 1; # load DKIM signing code +$signed_header_fields{'received'} = 0; # turn off signing of Received @dkim_signature_options_bysender_maps = ( { '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } ); diff --git a/install/install.php b/install/install.php index 7e0bf50519ccdeecfd3ac4126c4903ee2a3ff4b3..524918454839238b73d4fe41a2ffdbc774dd8cd3 100644 --- a/install/install.php +++ b/install/install.php @@ -99,6 +99,9 @@ require_once 'lib/classes/tpl.inc.php'; die('We will stop here. There is already a ISPConfig installation, use the update script to update this installation.'); }*/ +// Patch is required to reapir latest amavis versions +if(is_installed('amavisd-new') && !is_installed('patch')) die('The patch command is missing. Install patch command and start installation again.'); + //** Get distribution identifier $dist = get_distname(); @@ -517,12 +520,20 @@ if($install_mode == 'standard' || strtolower($inst->simple_query('Configure Fire } } -//* Configure XMPP -$force = @($conf['xmpp']['installed']) ? true : $inst->force_configure_app('Metronome XMPP Server', ($install_mode == 'expert')); -if($force) { - swriteln('Configuring Metronome XMPP Server'); - $inst->configure_xmpp(); - $conf['services']['xmpp'] = true; +if($install_mode == 'standard' || strtolower($inst->simple_query('Configure XMPP Server', array('y', 'n') , 'y','configure_xmpp') ) == 'y') { +//* Configure XMPP Metronome + if ($conf['metronome']['installed']) { + swriteln('Configuring Metronome XMPP Server'); + $inst->configure_metronome(); + $conf['services']['xmpp'] = true; + } + +//* Configure XMPP Prosody + if ($conf['prosody']['installed']) { + swriteln('Configuring Prosody XMPP Server'); + $inst->configure_prosody(); + $conf['services']['xmpp'] = true; + } } //* Configure Fail2ban @@ -630,7 +641,7 @@ if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') sys //if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['squid']['init_script'])) system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null'); if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null'); if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '') system($inst->getinitcommand($conf['ufw']['init_script'], 'restart').' &> /dev/null'); -if($conf['xmpp']['installed'] == true && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null'); +if($conf['metronome']['installed'] == true && $conf['metronome']['init_script'] != '') system($inst->getinitcommand($conf['metronome']['init_script'], 'restart').' &> /dev/null'); //* test tRNG if($conf['tRNG']) tRNG(); diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index b7fad60e75600b17afb7bedeb8c9897a82f42e49..b2d9e66f76deec5cc3697c77e7f1c20ac04b2769 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -97,6 +97,10 @@ function get_distname() { $mainver = current($mainver).'.'.next($mainver); } switch ($mainver){ + case "18.04": + $relname = "(Bionic Beaver)"; + $distconfid = 'ubuntu1804'; + break; case "17.10": $relname = "(Artful Aardvark)"; $distconfid = 'ubuntu1710'; @@ -874,6 +878,28 @@ function is_ispconfig_ssl_enabled() { } } +/* +* Is anonymization enabled in ispconfig.conf file +*/ + +function get_logging_state() { + global $conf; + $ispconfig_conf_file = $conf['apache']['vhost_conf_dir'].'/ispconfig.conf'; + + if(is_file($ispconfig_conf_file)) { + $tmp = file_get_contents($ispconfig_conf_file); + if(stristr($tmp, '/usr/local/ispconfig/server/scripts/vlogger -p -s access.log')) { + return 'anon'; + } elseif(stristr($tmp, '/usr/local/ispconfig/server/scripts/vlogger -s access.log')) { + return 'yes'; + } else { + return 'no'; + } + } else { + return 'yes'; + } +} + /** Function to find the hash file for timezone detection (c) 2012 Marius Cramer, pixcept KG, m.cramer@pixcept.de diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 95e0d9f5a50124a14d0ee18e9372c8497a9f7309..36b0ed022e9af4e9de757af54a7aeb9daf479a5c 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -179,7 +179,8 @@ class installer_base { } if(is_installed('fail2ban-server')) $conf['fail2ban']['installed'] = true; if(is_installed('vzctl')) $conf['openvz']['installed'] = true; - if(is_installed('metronome') && is_installed('metronomectl')) $conf['xmpp']['installed'] = true; + if(is_installed('metronome') && is_installed('metronomectl')) $conf['metronome']['installed'] = true; + if(is_installed('prosody') && is_installed('prosodyctl')) $conf['prosody']['installed'] = true; if(is_installed('spamassassin')) $conf['spamassassin']['installed'] = true; // if(is_installed('vlogger')) $conf['vlogger']['installed'] = true; // ISPConfig ships with vlogger, so it is always installed. @@ -189,7 +190,7 @@ class installer_base { if (($conf['apache']['installed'] && is_file($conf['apache']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost")) || ($conf['nginx']['installed'] && is_file($conf['nginx']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost"))) $this->ispconfig_interface_installed = true; } - public function force_configure_app($service, $enable_force=true) { + public function force_configure_app($service, $enable_force=true) { $force = false; if(AUTOINSTALL == true) return false; if($enable_force == true) { @@ -198,12 +199,12 @@ class installer_base { swriteln("[INFO] service $service not detected"); } if($enable_force) { - if(strtolower($this->simple_query("Force configure $service", array('y', 'n'), 'n') ) == 'y') { - $force = true; + if(strtolower($this->simple_query("Force configure $service", array('y', 'n'), 'n') ) == 'y') { + $force = true; } else swriteln("Skipping $service\n"); } return $force; - } + } public function reconfigure_app($service, $reconfigure_services_answer) { $reconfigure = false; @@ -225,10 +226,17 @@ class installer_base { public function configure_database() { global $conf; - //* ensure no modes with errors for ENGINE=MyISAM - $this->db->query("SET sql_mode = ''"); + //* check sql-mode + /*$check_sql_mode = $this->db->queryOneRecord("SELECT @@sql_mode"); + + if ($check_sql_mode['@@sql_mode'] != '' && $check_sql_mode['@@sql_mode'] != 'NO_ENGINE_SUBSTITUTION') { + echo "Wrong SQL-mode. You should use NO_ENGINE_SUBSTITUTION. Add\n\n"; + echo " sql-mode=\"NO_ENGINE_SUBSTITUTION\"\n\n"; + echo"to the mysqld-section in your mysql-config on this server and restart mysqld afterwards\n"; + die(); + }*/ - $unwanted_sql_plugins = array('validate_password'); + $unwanted_sql_plugins = array('validate_password'); $sql_plugins = $this->db->queryAllRecords("SELECT plugin_name FROM information_schema.plugins WHERE plugin_status='ACTIVE' AND plugin_name IN ?", $unwanted_sql_plugins); if(is_array($sql_plugins) && !empty($sql_plugins)) { foreach ($sql_plugins as $plugin) echo "Login in to MySQL and disable $plugin[plugin_name] with:\n\n UNINSTALL PLUGIN $plugin[plugin_name];"; @@ -249,10 +257,10 @@ class installer_base { $this->error('Stopped: Database already contains some tables.'); } else { if($conf['mysql']['admin_password'] == '') { - caselog("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." ".escapeshellarg($conf['mysql']['database'])." < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null", + caselog("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -P ".escapeshellarg($conf['mysql']['port'])." ".escapeshellarg($conf['mysql']['database'])." < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null", __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql'); } else { - caselog("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." ".escapeshellarg($conf['mysql']['database'])." < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null", + caselog("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." ".escapeshellarg($conf['mysql']['database'])." < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null", __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql'); } $db_tables = $this->db->getTables(); @@ -333,6 +341,9 @@ class installer_base { $tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port']; $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir']; + $tpl_ini_array['xmpp']['xmpp_daemon'] = ($conf['metronome']['installed'] == true)?'metronome':'prosody'; + $tpl_ini_array['xmpp']['xmpp_modules_enabled'] = $conf[$tpl_ini_array['xmpp']['xmpp_daemon']]['initial_modules']; + if ($conf['nginx']['installed'] == true) { $tpl_ini_array['web']['server_type'] = 'nginx'; $tpl_ini_array['global']['webserver'] = 'nginx'; @@ -345,7 +356,7 @@ class installer_base { } $server_ini_content = array_to_ini($tpl_ini_array); - + $mail_server_enabled = ($conf['services']['mail'])?1:0; $web_server_enabled = ($conf['services']['web'])?1:0; $dns_server_enabled = ($conf['services']['dns'])?1:0; @@ -397,12 +408,12 @@ class installer_base { } - + public function detect_ips(){ global $conf; exec("ip addr show | awk '/global/ { print $2 }' | cut -d '/' -f 1", $output, $retval); - + if($retval == 0){ if(is_array($output) && !empty($output)){ foreach($output as $line){ @@ -506,13 +517,13 @@ class installer_base { $ip_rec=dns_get_record($conf['hostname'], DNS_A + DNS_AAAA); if(!empty($ip_rec)) foreach($ip_rec as $rec => $ip) $ip_list[]=@(isset($ip['ip']))?$ip['ip']:$ip['ipv6']; - if(!empty($ip_list)) { - foreach($ip_list as $ip) { - $hosts[$ip]['user'] = $conf['mysql']['master_ispconfig_user']; - $hosts[$ip]['db'] = $conf['mysql']['master_database']; - $hosts[$ip]['pwd'] = $conf['mysql']['master_ispconfig_password']; + if(!empty($ip_list)) { + foreach($ip_list as $ip) { + $hosts[$ip]['user'] = $conf['mysql']['master_ispconfig_user']; + $hosts[$ip]['db'] = $conf['mysql']['master_database']; + $hosts[$ip]['pwd'] = $conf['mysql']['master_ispconfig_password']; + } } - } } else{ /* * it is NOT a master-slave - Setup so we have to find out all clients and their @@ -650,7 +661,7 @@ class installer_base { if(!$this->dbmaster->query($query, $value['db'] . '.aps_instances', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - + $query = "GRANT SELECT, DELETE ON ?? TO ?@?"; if ($verbose){ echo $query ."\n"; @@ -674,7 +685,7 @@ class installer_base { if(!$this->dbmaster->query($query, $value['db'] . '.mail_backup', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - + $query = "GRANT SELECT, UPDATE(`dnssec_initialized`, `dnssec_info`, `dnssec_last_signed`) ON ?? TO ?@?"; if ($verbose){ echo $query ."\n"; @@ -682,7 +693,7 @@ class installer_base { if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - + $query = "GRANT SELECT, INSERT, UPDATE ON ?? TO ?@?"; if ($verbose){ echo $query ."\n"; @@ -918,14 +929,14 @@ class installer_base { if ($ret === 0) { //* with postfix >= 2.9 we can detect configured services with postconf unset($out); - exec ("postconf -M $service/$type 2> /dev/null", $out, $ret); //* Postfix >= 2.11 + exec("postconf -M $service/$type 2> /dev/null", $out, $ret); //* Postfix >= 2.11 if (!isset($out[0])) { //* try Postfix 2.9 - exec ("postconf -M $service.$type 2> /dev/null", $out, $ret); + exec("postconf -M $service.$type 2> /dev/null", $out, $ret); } $postfix_service = @($out[0]=='')?false:true; - } else { //* fallback - Postfix < 2.9 + } else { //* fallback - Postfix < 2.9 $content = rf($conf['postfix']['config_dir'].'/master.cf'); - $regex = "/^((?!#)".$service.".*".$type.".*)$/m"; + $regex = "/^((?!#)".$service.".*".$type.".*)$/m"; $postfix_service = @(preg_match($regex, $content))?true:false; } @@ -973,7 +984,7 @@ class installer_base { //* mysql-virtual_relayrecipientmaps.cf $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf'); - + //* mysql-virtual_outgoing_bcc.cf $this->process_postfix_config('mysql-virtual_outgoing_bcc.cf'); @@ -1032,13 +1043,13 @@ class installer_base { if($conf['postgrey']['installed'] == true) { $greylisting = ', check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf'; } - + $reject_sender_login_mismatch = ''; if(isset($server_ini_array['mail']['reject_sender_login_mismatch']) && ($server_ini_array['mail']['reject_sender_login_mismatch'] == 'y')) { $reject_sender_login_mismatch = ', reject_authenticated_sender_login_mismatch'; } unset($server_ini_array); - + $tmp = str_replace('.','\.',$conf['hostname']); $postconf_placeholders = array('{config_dir}' => $config_dir, @@ -1132,7 +1143,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 &> /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; @@ -1144,12 +1155,12 @@ class installer_base { } if(is_file($config_dir.'/master.cf~')) { chmod($config_dir.'/master.cf~', 0400); - } + } $configfile = $config_dir.'/master.cf'; $content = rf($configfile); - $content = str_replace('flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}', - 'flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d '.$cf['vmail_username'].' ${extension} ${recipient} ${user} ${nexthop} ${sender}', - $content); + $content = str_replace('flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}', + 'flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d '.$cf['vmail_username'].' ${extension} ${recipient} ${user} ${nexthop} ${sender}', + $content); wf($configfile, $content); } @@ -1176,7 +1187,7 @@ class installer_base { caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); } - + public function configure_saslauthd() { global $conf; @@ -1292,17 +1303,17 @@ class installer_base { public function configure_dovecot() { global $conf; - + $virtual_transport = 'dovecot'; $configure_lmtp = false; - + // check if virtual_transport must be changed if ($this->is_update) { $tmp = $this->db->queryOneRecord("SELECT * FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . ".server", $conf['server_id']); $ini_array = ini_to_array(stripslashes($tmp['config'])); // ini_array needs not to be checked, because already done in update.php -> updateDbAndIni() - + if(isset($ini_array['mail']['mailbox_virtual_uidgid_maps']) && $ini_array['mail']['mailbox_virtual_uidgid_maps'] == 'y') { $virtual_transport = 'lmtp:unix:private/dovecot-lmtp'; $configure_lmtp = true; @@ -1313,7 +1324,7 @@ class installer_base { //* Configure master.cf and add a line for deliver if(!$this->get_postfix_service('dovecot', 'unix')) { - //* backup + //* backup if(is_file($config_dir.'/master.cf')){ copy($config_dir.'/master.cf', $config_dir.'/master.cf~2'); } @@ -1322,7 +1333,7 @@ class installer_base { } //* Configure master.cf and add a line for deliver $content = rf($conf["postfix"]["config_dir"].'/master.cf'); - $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n"; + $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${original_recipient}'."\n"; af($config_dir.'/master.cf', $deliver_content); unset($content); unset($deliver_content); @@ -1359,13 +1370,13 @@ class installer_base { unset($tmp); //* Copy dovecot configuration file - if(version_compare($dovecot_version,1, '<=')) { //* Dovecot 1.x + if(version_compare($dovecot_version,1, '<=')) { //* Dovecot 1.x if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_dovecot.conf.master')) { copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_dovecot.conf.master', $config_dir.'/'.$configfile); } else { copy('tpl/debian_dovecot.conf.master', $config_dir.'/'.$configfile); } - } else { //* Dovecot 2.x + } else { //* Dovecot 2.x if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_dovecot2.conf.master')) { copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_dovecot2.conf.master', $config_dir.'/'.$configfile); } else { @@ -1378,7 +1389,10 @@ class installer_base { } if(version_compare($dovecot_version,2.2) >= 0) { // Dovecot > 2.2 does not recognize !SSLv2 anymore on Debian 9 - replaceLine($config_dir.'/'.$configfile, 'ssl_protocols = !SSLv2 !SSLv3', 'ssl_protocols = !SSLv3', 1, 0); + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('!SSLv2','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); } } @@ -1409,7 +1423,7 @@ class installer_base { chmod($config_dir.'/'.$configfile, 0600); chown($config_dir.'/'.$configfile, 'root'); chgrp($config_dir.'/'.$configfile, 'root'); - + // Dovecot shall ignore mounts in website directory if(is_installed('doveadm')) exec("doveadm mount add '/var/www/*' ignore > /dev/null 2> /dev/null"); @@ -1479,7 +1493,7 @@ class installer_base { $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis10027.master', 'tpl/master_cf_amavis10027.master'); af($config_dir.'/master.cf', $content); unset($content); - } + } } // Add the clamav user to the amavis group @@ -1664,14 +1678,14 @@ class installer_base { } - + //** writes bind configuration files public function process_bind_file($configfile, $target='/', $absolute=false) { global $conf; if ($absolute) $full_file_name = $target.$configfile; else $full_file_name = $conf['ispconfig_install_dir'].$target.$configfile; - + //* Backup exiting file if(is_file($full_file_name)) { copy($full_file_name, $config_dir.$configfile.'~'); @@ -1703,45 +1717,165 @@ class installer_base { chown($content, $conf['bind']['bind_user']); chgrp($content, $conf['bind']['bind_group']); chmod($content, 02770); - + //* Install scripts for dnssec implementation $this->process_bind_file('named.conf.options', '/etc/bind/', true); //TODO replace hardcoded path } - public function configure_xmpp($options = '') { + public function configure_metronome($options = '') { + global $conf; + + if($conf['metronome']['installed'] == false) return; + //* Create the logging directory for xmpp server + if(!@is_dir('/var/log/metronome')) mkdir('/var/log/metronome', 0755, true); + chown('/var/log/metronome', 'metronome'); + if(!@is_dir('/var/run/metronome')) mkdir('/var/run/metronome', 0755, true); + chown('/var/run/metronome', 'metronome'); + if(!@is_dir('/var/lib/metronome')) mkdir('/var/lib/metronome', 0755, true); + chown('/var/lib/metronome', 'metronome'); + if(!@is_dir('/etc/metronome/hosts')) mkdir('/etc/metronome/hosts', 0755, true); + if(!@is_dir('/etc/metronome/status')) mkdir('/etc/metronome/status', 0755, true); + unlink('/etc/metronome/metronome.cfg.lua'); + + $row = $this->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $conf["server_id"]); + $server_name = $row["server_name"]; + + $tpl = new tpl('xmpp_metronome_conf_main.master'); + wf('/etc/metronome/metronome.cfg.lua', $tpl->grab()); + unset($tpl); + + $tpl = new tpl('xmpp_metronome_conf_global.master'); + $tpl->setVar('xmpp_admins',''); + wf('/etc/metronome/global.cfg.lua', $tpl->grab()); + unset($tpl); + + // Copy isp libs + if(!@is_dir('/usr/lib/metronome/isp-modules')) mkdir('/usr/lib/metronome/isp-modules', 0755, true); + caselog('cp -rf apps/xmpp_libs/* /usr/lib/metronome/isp-modules/', __FILE__, __LINE__); + caselog('chmod 755 /usr/lib/metronome/isp-modules/mod_auth_external/authenticate_isp.sh', __FILE__, __LINE__); + // Process db config + $full_file_name = '/usr/lib/metronome/isp-modules/mod_auth_external/db_conf.inc.php'; + $content = rf($full_file_name); + $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content); + $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); + $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); + $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); + wf($full_file_name, $content); + + if(!stristr($options, 'dont-create-certs')){ + // Create SSL Certificate for localhost + // Ensure no line is left blank + echo "writing new private key to 'localhost.key'\n-----\n"; + $ssl_country = $this->free_query('Country Name (2 letter code)', 'AU','ssl_cert_country'); + $ssl_locality = $this->free_query('Locality Name (eg, city)', 'City Name','ssl_cert_locality'); + $ssl_organisation = $this->free_query('Organization Name (eg, company)', 'Internet Widgits Pty Ltd','ssl_cert_organisation'); + $ssl_organisation_unit = $this->free_query('Organizational Unit Name (eg, section)', 'Infrastructure','ssl_cert_organisation_unit'); + $ssl_domain = $this->free_query('Common Name (e.g. server FQDN or YOUR name)', $conf['hostname'],'ssl_cert_common_name'); + $ssl_email = $this->free_query('Email Address', 'hostmaster@'.$conf['hostname'],'ssl_cert_email'); + + $tpl = new tpl('xmpp_conf_ssl.master'); + $tpl->setVar('ssl_country',$ssl_country); + $tpl->setVar('ssl_locality',$ssl_locality); + $tpl->setVar('ssl_organisation',$ssl_organisation); + $tpl->setVar('ssl_organisation_unit',$ssl_organisation_unit); + $tpl->setVar('domain',$ssl_domain); + $tpl->setVar('ssl_email',$ssl_email); + wf('/etc/metronome/certs/localhost.cnf', $tpl->grab()); + unset($tpl); + // Generate new key, csr and cert + exec("(cd /etc/metronome/certs && make localhost.key)"); + exec("(cd /etc/metronome/certs && make localhost.csr)"); + exec("(cd /etc/metronome/certs && make localhost.cert)"); + exec('chmod 0400 /etc/metronome/certs/localhost.key'); + exec('chown metronome /etc/metronome/certs/localhost.key'); + + echo "IMPORTANT:\n"; + echo "Localhost Key, Csr and a self-signed Cert have been saved to /etc/metronome/certs\n"; + echo "In order to work with all clients, the server must have a trusted certificate, so use the Csr\n"; + echo "to get a trusted certificate from your CA or replace Key and Cert with already signed files for\n"; + echo "your domain. Clients like Pidgin dont allow to use untrusted self-signed certificates.\n"; + echo "\n"; + + }else{ + /* + echo "-----\n"; + echo "Metronome XMPP SSL server certificate is not renewed. Run the following command manual as root to recreate it:\n"; + echo "# (cd /etc/metronome/certs && make localhost.key && make localhost.csr && make localhost.cert && chmod 0400 localhost.key && chown metronome localhost.key)\n"; + echo "-----\n"; + */ + } + + // Copy init script + caselog('cp -f apps/metronome-init /etc/init.d/metronome', __FILE__, __LINE__); + caselog('chmod u+x /etc/init.d/metronome', __FILE__, __LINE__); + caselog('update-rc.d metronome defaults', __FILE__, __LINE__); + + exec($this->getinitcommand($conf['metronome']['init_script'], 'restart')); + } + + public function configure_prosody($options = '') { global $conf; - if($conf['xmpp']['installed'] == false) return; + if($conf['prosody']['installed'] == false) return; //* Create the logging directory for xmpp server - if(!@is_dir('/var/log/metronome')) mkdir('/var/log/metronome', 0755, true); - chown('/var/log/metronome', 'metronome'); - if(!@is_dir('/var/run/metronome')) mkdir('/var/run/metronome', 0755, true); - chown('/var/run/metronome', 'metronome'); - if(!@is_dir('/var/lib/metronome')) mkdir('/var/lib/metronome', 0755, true); - chown('/var/lib/metronome', 'metronome'); - if(!@is_dir('/etc/metronome/hosts')) mkdir('/etc/metronome/hosts', 0755, true); - if(!@is_dir('/etc/metronome/status')) mkdir('/etc/metronome/status', 0755, true); - unlink('/etc/metronome/metronome.cfg.lua'); - - $row = $this->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $conf["server_id"]); - $server_name = $row["server_name"]; - - $tpl = new tpl('metronome_conf_main.master'); - wf('/etc/metronome/metronome.cfg.lua', $tpl->grab()); + if(!@is_dir('/var/log/prosody')) mkdir('/var/log/prosody', 0755, true); + chown('/var/log/prosody', 'prosody'); + if(!@is_dir('/var/run/prosody')) mkdir('/var/run/prosody', 0755, true); + chown('/var/run/prosody', 'prosody'); + if(!@is_dir('/var/lib/prosody')) mkdir('/var/lib/prosody', 0755, true); + chown('/var/lib/prosody', 'prosody'); + if(!@is_dir('/etc/prosody/hosts')) mkdir('/etc/prosody/hosts', 0755, true); + if(!@is_dir('/etc/prosody/status')) mkdir('/etc/prosody/status', 0755, true); + unlink('/etc/prosody/prosody.cfg.lua'); + + $tpl = new tpl('xmpp_prosody_conf_main.master'); + wf('/etc/prosody/prosody.cfg.lua', $tpl->grab()); unset($tpl); - $tpl = new tpl('metronome_conf_global.master'); + $tpl = new tpl('xmpp_prosody_conf_global.master'); + $tpl->setVar('main_host', $conf['hostname']); $tpl->setVar('xmpp_admins',''); - wf('/etc/metronome/global.cfg.lua', $tpl->grab()); + wf('/etc/prosody/global.cfg.lua', $tpl->grab()); unset($tpl); + //** Create the database + if(!$this->db->query('CREATE DATABASE IF NOT EXISTS ?? DEFAULT CHARACTER SET ?', $conf['prosody']['storage_database'], $conf['mysql']['charset'])) { + $this->error('Unable to create MySQL database: '.$conf['prosody']['storage_database'].'.'); + } + if($conf['mysql']['host'] == 'localhost') { + $from_host = 'localhost'; + } else { + $from_host = $conf['hostname']; + } + $this->dbmaster->query("CREATE USER ?@? IDENTIFIED BY ?", $conf['prosody']['storage_user'], $from_host, $conf['prosody']['storage_password']); // ignore the error + $query = 'GRANT ALL PRIVILEGES ON ?? TO ?@? IDENTIFIED BY ?'; + if(!$this->db->query($query, $conf['prosody']['storage_database'] . ".*", $conf['prosody']['storage_user'], $from_host, $conf['prosody']['storage_password'])) { + $this->error('Unable to create database user: '.$conf['prosody']['storage_user'].' Error: '.$this->db->errorMessage); + } + + + + $tpl = new tpl('xmpp_prosody_conf_storage.master'); + $tpl->setVar('db_name', $conf['prosody']['storage_database']); + $tpl->setVar('db_host', $conf['mysql']['host']); + $tpl->setVar('db_port', $conf['mysql']['port']); + $tpl->setVar('db_username', $conf['prosody']['storage_user']); + $tpl->setVar('db_password', $conf['prosody']['storage_password']); + wf('/etc/prosody/storage.cfg.lua', $tpl->grab()); + unset($tpl); + + // Copy isp libs - if(!@is_dir('/usr/lib/metronome/isp-modules')) mkdir('/usr/lib/metronome/isp-modules', 0755, true); - caselog('cp -rf apps/metronome_libs/* /usr/lib/metronome/isp-modules/', __FILE__, __LINE__); - caselog('chmod 755 /usr/lib/metronome/isp-modules/mod_auth_external/authenticate_isp.sh', __FILE__, __LINE__); + if(!@is_dir('/usr/local/lib/prosody/auth')) mkdir('/usr/local/lib/prosody/auth', 0755, true); + caselog('cp -rf apps/xmpp_libs/auth_prosody/* /usr/local/lib/prosody/auth/', __FILE__, __LINE__); + caselog('chmod 755 /usr/local/lib/prosody/auth/authenticate_isp.sh', __FILE__, __LINE__); + caselog('chown root:ispconfig /usr/local/lib/prosody/auth/prosody-purge', __FILE__, __LINE__); + caselog('chmod 750 /usr/local/lib/prosody/auth/prosody-purge', __FILE__, __LINE__); + // Process db config - $full_file_name = '/usr/lib/metronome/isp-modules/mod_auth_external/db_conf.inc.php'; + $full_file_name = '/usr/local/lib/prosody/auth/db_conf.inc.php'; $content = rf($full_file_name); $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content); $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); @@ -1753,52 +1887,47 @@ class installer_base { if(!stristr($options, 'dont-create-certs')){ // Create SSL Certificate for localhost // Ensure no line is left blank - echo "writing new private key to 'localhost.key'\n-----\n"; - $ssl_country = $this->free_query('Country Name (2 letter code)', 'AU','ssl_cert_country'); + echo "writing new private key to 'localhost.key'\n-----\n"; + $ssl_country = $this->free_query('Country Name (2 letter code)', 'AU','ssl_cert_country'); $ssl_locality = $this->free_query('Locality Name (eg, city)', 'City Name','ssl_cert_locality'); $ssl_organisation = $this->free_query('Organization Name (eg, company)', 'Internet Widgits Pty Ltd','ssl_cert_organisation'); $ssl_organisation_unit = $this->free_query('Organizational Unit Name (eg, section)', 'Infrastructure','ssl_cert_organisation_unit'); $ssl_domain = $this->free_query('Common Name (e.g. server FQDN or YOUR name)', $conf['hostname'],'ssl_cert_common_name'); $ssl_email = $this->free_query('Email Address', 'hostmaster@'.$conf['hostname'],'ssl_cert_email'); - $tpl = new tpl('metronome_conf_ssl.master'); + $tpl = new tpl('xmpp_prosody_conf_ssl.master'); $tpl->setVar('ssl_country',$ssl_country); $tpl->setVar('ssl_locality',$ssl_locality); $tpl->setVar('ssl_organisation',$ssl_organisation); $tpl->setVar('ssl_organisation_unit',$ssl_organisation_unit); $tpl->setVar('domain',$ssl_domain); $tpl->setVar('ssl_email',$ssl_email); - wf('/etc/metronome/certs/localhost.cnf', $tpl->grab()); + wf('/etc/prosody/certs/localhost.cnf', $tpl->grab()); unset($tpl); // Generate new key, csr and cert - exec("(cd /etc/metronome/certs && make localhost.key)"); - exec("(cd /etc/metronome/certs && make localhost.csr)"); - exec("(cd /etc/metronome/certs && make localhost.cert)"); - exec('chmod 0400 /etc/metronome/certs/localhost.key'); - exec('chown metronome /etc/metronome/certs/localhost.key'); - - echo "IMPORTANT:\n"; - echo "Localhost Key, Csr and a self-signed Cert have been saved to /etc/metronome/certs\n"; - echo "In order to work with all clients, the server must have a trusted certificate, so use the Csr\n"; - echo "to get a trusted certificate from your CA or replace Key and Cert with already signed files for\n"; - echo "your domain. Clients like Pidgin dont allow to use untrusted self-signed certificates.\n"; - echo "\n"; + exec("(cd /etc/prosody/certs && make localhost.key)"); + exec("(cd /etc/prosody/certs && make localhost.csr)"); + exec("(cd /etc/prosody/certs && make localhost.crt)"); + exec('chmod 0400 /etc/prosody/certs/localhost.key'); + exec('chown prosody /etc/prosody/certs/localhost.key'); + + echo "IMPORTANT:\n"; + echo "Localhost Key, Csr and a self-signed Cert have been saved to /etc/prosody/certs\n"; + echo "In order to work with all clients, the server must have a trusted certificate, so use the Csr\n"; + echo "to get a trusted certificate from your CA or replace Key and Cert with already signed files for\n"; + echo "your domain. Clients like Pidgin dont allow to use untrusted self-signed certificates.\n"; + echo "\n"; }else{ /* - echo "-----\n"; - echo "Metronome XMPP SSL server certificate is not renewed. Run the following command manual as root to recreate it:\n"; - echo "# (cd /etc/metronome/certs && make localhost.key && make localhost.csr && make localhost.cert && chmod 0400 localhost.key && chown metronome localhost.key)\n"; echo "-----\n"; - */ + echo "Prosody XMPP SSL server certificate is not renewed. Run the following command manual as root to recreate it:\n"; + echo "# (cd /etc/prosody/certs && make localhost.key && make localhost.csr && make localhost.cert && chmod 0400 localhost.key && chown prosody localhost.key)\n"; + echo "-----\n"; + */ } - // Copy init script - caselog('cp -f apps/metronome-init /etc/init.d/metronome', __FILE__, __LINE__); - caselog('chmod u+x /etc/init.d/metronome', __FILE__, __LINE__); - caselog('update-rc.d metronome defaults', __FILE__, __LINE__); - - exec($this->getinitcommand($conf['xmpp']['init_script'], 'restart')); + exec($this->getinitcommand($conf['prosody']['init_script'], 'restart')); } @@ -1823,12 +1952,12 @@ class installer_base { if(is_file('/etc/apache2/ports.conf')) { // add a line "Listen 443" to ports conf if line does not exist replaceLine('/etc/apache2/ports.conf', 'Listen 443', 'Listen 443', 1); - + // Comment out the namevirtualhost lines, as they were added by ispconfig in ispconfig.conf file again replaceLine('/etc/apache2/ports.conf', 'NameVirtualHost *:80', '# NameVirtualHost *:80', 1); replaceLine('/etc/apache2/ports.conf', 'NameVirtualHost *:443', '# NameVirtualHost *:443', 1); } - + if(is_file('/etc/apache2/mods-available/fcgid.conf')) { // add or modify the parameters for fcgid.conf replaceLine('/etc/apache2/mods-available/fcgid.conf','MaxRequestLen','MaxRequestLen 15728640',1); @@ -1843,7 +1972,7 @@ class installer_base { } } } - + if(is_file('/etc/apache2/apache2.conf')) { if(hasLine('/etc/apache2/apache2.conf', 'Include sites-enabled/', 1) == false && hasLine('/etc/apache2/apache2.conf', 'IncludeOptional sites-enabled/', 1) == false) { if(hasLine('/etc/apache2/apache2.conf', 'Include sites-enabled/*.conf', 1) == true) { @@ -1859,11 +1988,17 @@ class installer_base { $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; $tpl = new tpl('apache_ispconfig.conf.master'); - $tpl->setVar('apache_version',getapacheversion()); + $tpl->setVar('apache_version',getapacheversion(true)); + + if($this->is_update == true) { + $tpl->setVar('logging',get_logging_state()); + } else { + $tpl->setVar('logging','yes'); + } $records = $this->db->queryAllRecords("SELECT * FROM ?? WHERE server_id = ? AND virtualhost = 'y'", $conf['mysql']['master_database'] . '.server_ip', $conf['server_id']); $ip_addresses = array(); - + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -1882,9 +2017,9 @@ class installer_base { } } } - + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); - + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); unset($tpl); @@ -1944,6 +2079,17 @@ class installer_base { //* add a sshusers group $command = 'groupadd sshusers'; if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + // add anonymized log option to nginxx.conf file + $nginx_conf_file = $conf['nginx']['config_dir'].'/nginx.conf'; + if(is_file($nginx_conf_file)) { + $tmp = file_get_contents($nginx_conf_file); + if(!stristr($tmp, 'log_format anonymized')) { + copy($nginx_conf_file,$nginx_conf_file.'~'); + replaceLine($nginx_conf_file, 'http {', "http {\n\n".file_get_contents('tpl/nginx_anonlog.master'), 0, 0); + } + } + } public function configure_fail2ban() { @@ -2103,7 +2249,7 @@ class installer_base { $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; $apps_vhost_servername = ($conf['web']['apps_vhost_servername'] == '')?'':'ServerName '.$conf['web']['apps_vhost_servername']; - + //* Get the apps vhost port if($this->is_update == true) { $conf['web']['apps_vhost_port'] = get_apps_vhost_port_number(); @@ -2117,6 +2263,11 @@ class installer_base { $tpl->setVar('apps_vhost_basedir',$conf['web']['website_basedir']); $tpl->setVar('apps_vhost_servername',$apps_vhost_servername); $tpl->setVar('apache_version',getapacheversion()); + if($this->is_update == true) { + $tpl->setVar('logging',get_logging_state()); + } else { + $tpl->setVar('logging','yes'); + } // comment out the listen directive if port is 80 or 443 @@ -2200,7 +2351,12 @@ class installer_base { $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{cgi_socket}', $cgi_socket, $content); - if(file_exists('/var/run/php5-fpm.sock') || file_exists('/var/run/php/php7.0-fpm.sock')){ + if( file_exists('/var/run/php5-fpm.sock') + || file_exists('/var/run/php/php7.0-fpm.sock') + || 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') + ){ $use_tcp = '#'; $use_socket = ''; } else { @@ -2209,15 +2365,15 @@ class installer_base { } $content = str_replace('{use_tcp}', $use_tcp, $content); $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_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.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); wf($vhost_conf_dir.'/apps.vhost', $content); @@ -2263,7 +2419,7 @@ class installer_base { exec("openssl rsa -passin pass:$ssl_pw -in $ssl_key_file -out $ssl_key_file.insecure"); rename($ssl_key_file, $ssl_key_file.'.secure'); rename($ssl_key_file.'.insecure', $ssl_key_file); - + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); } @@ -2293,14 +2449,14 @@ class installer_base { //* copy the ISPConfig server part $command = 'cp -rf ../server '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + //* Make a backup of the security settings if(is_file('/usr/local/ispconfig/security/security_settings.ini')) copy('/usr/local/ispconfig/security/security_settings.ini','/usr/local/ispconfig/security/security_settings.ini~'); - + //* copy the ISPConfig security part $command = 'cp -rf ../security '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + //* Apply changed security_settings.ini values to new security_settings.ini file if(is_file('/usr/local/ispconfig/security/security_settings.ini~')) { $security_settings_old = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini~')); @@ -2479,15 +2635,15 @@ class installer_base { //* Chmod the files and directories in the acme dir $command = 'chmod -R 755 '.$install_dir.'/interface/acme'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + //* chown the server files to the root user and group $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + //* chown the security files to the root user and group $command = 'chown -R root:root '.$install_dir.'/security'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + //* chown the security directory and security_settings.ini to root:ispconfig $command = 'chown root:ispconfig '.$install_dir.'/security/security_settings.ini'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); @@ -2499,6 +2655,8 @@ class installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/nginx_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); @@ -2550,7 +2708,7 @@ class installer_base { exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices')); exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); } - + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing @@ -2589,6 +2747,8 @@ class installer_base { // Dont just copy over the virtualhost template but add some custom settings $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('apache_version',getapacheversion()); + $tpl->setVar(array_fill_keys(getapachemodules(), true)); // set all apache modules as template variables $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); // comment out the listen directive if port is 80 or 443 @@ -2608,7 +2768,7 @@ class installer_base { } else { $tpl->setVar('ssl_bundle_comment','#'); } - + $tpl->setVar('apache_version',getapacheversion()); wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); @@ -2687,8 +2847,8 @@ class installer_base { if(is_file('/usr/local/bin/ispconfig_update_from_dev.sh')) unlink('/usr/local/bin/ispconfig_update_from_dev.sh'); chown($install_dir.'/server/scripts/update_from_dev.sh', 'root'); chmod($install_dir.'/server/scripts/update_from_dev.sh', 0700); -// chown($install_dir.'/server/scripts/update_from_tgz.sh', 'root'); -// chmod($install_dir.'/server/scripts/update_from_tgz.sh', 0700); + // chown($install_dir.'/server/scripts/update_from_tgz.sh', 'root'); + // chmod($install_dir.'/server/scripts/update_from_tgz.sh', 0700); chown($install_dir.'/server/scripts/ispconfig_update.sh', 'root'); chmod($install_dir.'/server/scripts/ispconfig_update.sh', 0700); if(!is_link('/usr/local/bin/ispconfig_update_from_dev.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh', '/usr/local/bin/ispconfig_update_from_dev.sh'); @@ -2747,16 +2907,16 @@ class installer_base { //* Remove Domain module as its functions are available in the client module now if(@is_dir('/usr/local/ispconfig/interface/web/domain')) exec('rm -rf /usr/local/ispconfig/interface/web/domain'); - + //* Disable rkhunter run and update in debian cronjob as ispconfig is running and updating rkhunter if(is_file('/etc/default/rkhunter')) { replaceLine('/etc/default/rkhunter', 'CRON_DAILY_RUN="yes"', 'CRON_DAILY_RUN="no"', 1, 0); replaceLine('/etc/default/rkhunter', 'CRON_DB_UPDATE="yes"', 'CRON_DB_UPDATE="no"', 1, 0); } - + // Add symlink for patch tool if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch'); - + // Change mode of a few files from amavisd if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) chmod($conf['amavis']['config_dir'].'/conf.d/50-user', 0640); if(is_file($conf['amavis']['config_dir'].'/50-user~')) chmod($conf['amavis']['config_dir'].'/50-user~', 0400); @@ -2850,12 +3010,12 @@ class installer_base { chmod($conf['ispconfig_log_dir'].'/cron.log', 0660); } - + public function create_mount_script(){ global $app, $conf; $mount_script = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh'; $mount_command = ''; - + if(is_file($mount_script)) return; if(is_file('/etc/rc.local')){ $rc_local = file('/etc/rc.local'); @@ -2876,25 +3036,25 @@ class installer_base { } } } - + // This function is called at the end of the update process and contains code to clean up parts of old ISPCONfig releases public function cleanup_ispconfig() { global $app,$conf; - + // Remove directories recursively if(is_dir('/usr/local/ispconfig/interface/web/designer')) exec('rm -rf /usr/local/ispconfig/interface/web/designer'); if(is_dir('/usr/local/ispconfig/interface/web/themes/default-304')) exec('rm -rf /usr/local/ispconfig/interface/web/themes/default-304'); - + // Remove files if(is_file('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php'); if(is_file('/usr/local/ispconfig/interface/lib/classes/form.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/form.inc.php'); - + // Change mode of a few files from amavisd if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) chmod($conf['amavis']['config_dir'].'/conf.d/50-user', 0640); if(is_file($conf['amavis']['config_dir'].'/50-user~')) chmod($conf['amavis']['config_dir'].'/50-user~', 0400); if(is_file($conf['amavis']['config_dir'].'/amavisd.conf')) chmod($conf['amavis']['config_dir'].'/amavisd.conf', 0640); if(is_file($conf['amavis']['config_dir'].'/amavisd.conf~')) chmod($conf['amavis']['config_dir'].'/amavisd.conf~', 0400); - + } public function getinitcommand($servicename, $action, $init_script_directory = ''){ diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index 4611c7bf32e97a96e58e83487fe944c9d2d91bf0..f410722c4e3bf1873f946afe53ee2dda6d2918b3 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -82,9 +82,9 @@ function prepareDBDump() { if ($conf['powerdns']['installed']) { //** export the current PowerDNS database data if( !empty($conf["mysql"]["admin_password"]) ) { - system("mysqldump -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -c -t --add-drop-table --create-options --quick --result-file=existing_powerdns_db.sql ".$conf['powerdns']['database']); + system("mysqldump -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." -c -t --add-drop-table --create-options --quick --result-file=existing_powerdns_db.sql ".$conf['powerdns']['database']); } else { - system("mysqldump -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -c -t --add-drop-table --create-options --quick --result-file=existing_powerdns_db.sql ".$conf['powerdns']['database']); + system("mysqldump -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -P ".escapeshellarg($conf['mysql']['port'])." -c -t --add-drop-table --create-options --quick --result-file=existing_powerdns_db.sql ".$conf['powerdns']['database']); } // create a backup copy of the PowerDNS database in the root folder @@ -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'])." -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'])." -r ".escapeshellarg($conf["mysql"]["database"]), $result); for( $i=0; $idb->query("SET sql_mode = ''"); + //* check sql-mode + /* + $check_sql_mode = $inst->db->queryOneRecord("SELECT @@sql_mode"); + if ($check_sql_mode['@@sql_mode'] != '' && $check_sql_mode['@@sql_mode'] != 'NO_ENGINE_SUBSTITUTION') { + echo "Wrong SQL-mode. You should use NO_ENGINE_SUBSTITUTION. Add\n\n"; + echo " sql-mode=\"NO_ENGINE_SUBSTITUTION\"\n\n"; + echo"to the mysqld-section in your mysql-config on this server and restart mysqld afterwards\n"; + die(); + }*/ $unwanted_sql_plugins = array('validate_password'); $sql_plugins = $inst->db->queryAllRecords("SELECT plugin_name FROM information_schema.plugins WHERE plugin_status='ACTIVE' AND plugin_name IN ?", $unwanted_sql_plugins); @@ -203,9 +210,9 @@ function updateDbAndIni() { //* Load patch file into database 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'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename; + $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'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename; } else { - $cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename; + $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'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename; } if(in_array($next_db_version,explode(',',$silent_update_versions))) { @@ -345,6 +352,8 @@ function updateDbAndIni() { $tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port']; $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir']; + $tpl_ini_array['xmpp']['xmpp_daemon'] = ($conf['metronome']['installed'] == true)?'metronome':'prosody'; + if ($conf['nginx']['installed'] == true) { $tpl_ini_array['web']['server_type'] = 'nginx'; $tpl_ini_array['global']['webserver'] = 'nginx'; diff --git a/install/patches/upd_0086.php b/install/patches/upd_0086.php new file mode 100644 index 0000000000000000000000000000000000000000..045c48b2f3e0acf40606118094b3d75a911fb183 --- /dev/null +++ b/install/patches/upd_0086.php @@ -0,0 +1,46 @@ +simple_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_0086.sql b/install/sql/incremental/upd_0086.sql new file mode 100644 index 0000000000000000000000000000000000000000..563b2153cf669c3630797c842ef1978da96e0f25 --- /dev/null +++ b/install/sql/incremental/upd_0086.sql @@ -0,0 +1,5 @@ +ALTER TABLE `web_domain` ADD COLUMN `ssl_letsencrypt_exclude` enum('n','y') NOT NULL DEFAULT 'n' AFTER `ssl_letsencrypt`; +ALTER TABLE `remote_user` ADD `remote_access` ENUM('y','n') NOT NULL DEFAULT 'y' AFTER `remote_password`; +ALTER TABLE `remote_user` ADD `remote_ips` TEXT AFTER `remote_access`; +ALTER TABLE `server_php` ADD `active` enum('y','n') NOT NULL DEFAULT 'y' AFTER `php_fpm_pool_dir`; +ALTER TABLE `web_domain` CHANGE `log_retention` `log_retention` INT(11) NOT NULL DEFAULT '10'; \ 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 6a8550c3492c64be2fce02d708bc943f7a638b47..5789829a2da17bbe73df58a3c1ea577309e9df0c 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,4 +1,3 @@ -<<<<<<< HEAD ALTER TABLE `mail_mailinglist` ADD `list_type` enum('open','closed') NOT NULL DEFAULT 'open'; ALTER TABLE `mail_mailinglist` ADD `subject_prefix` varchar(50) NOT NULL DEFAULT ''; ALTER TABLE `mail_mailinglist` ADD `admins` mediumtext; @@ -91,3 +90,17 @@ ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CAA','CNAME', ALTER TABLE `web_domain` ADD COLUMN `ssl_letsencrypt_exclude` enum('n','y') NOT NULL DEFAULT 'n' AFTER `ssl_letsencrypt`; ALTER TABLE `remote_user` ADD `remote_access` ENUM('y','n') NOT NULL DEFAULT 'y' AFTER `remote_password`; ALTER TABLE `remote_user` ADD `remote_ips` TEXT AFTER `remote_access`; +ALTER TABLE `web_domain` ADD `php_fpm_chroot` enum('n','y') NOT NULL DEFAULT 'n' AFTER `php_fpm_use_socket`; + + +ALTER TABLE `client_template` + ADD COLUMN `limit_xmpp_webpresence` ENUM( 'n', 'y' ) NOT NULL default 'y', + ADD COLUMN `limit_xmpp_http_upload` ENUM( 'n', 'y' ) NOT NULL default 'n'; + +ALTER TABLE `client` + ADD COLUMN `limit_xmpp_webpresence` ENUM( 'n', 'y' ) NOT NULL default 'y', + ADD COLUMN `limit_xmpp_http_upload` ENUM( 'n', 'y' ) NOT NULL default 'n'; + +ALTER TABLE `xmpp_domain` + ADD COLUMN `use_webpresence` enum('n','y') NOT NULL DEFAULT 'y', + ADD COLUMN `use_http_upload` enum('n','y') NOT NULL DEFAULT 'n'; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index eedf8237688dffcf7b45cf115909f77b4d2c5329..a689cd9bf4102af6924f27ff19c8b498ce13f31d 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1430,6 +1430,7 @@ CREATE TABLE `server_php` ( `php_fpm_init_script` varchar(255) DEFAULT NULL, `php_fpm_ini_dir` varchar(255) DEFAULT NULL, `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 ; @@ -2049,6 +2050,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', @@ -2075,7 +2077,7 @@ CREATE TABLE `web_domain` ( `http_port` int(11) unsigned NOT NULL DEFAULT '80', `https_port` int(11) unsigned NOT NULL DEFAULT '443', `folder_directive_snippets` text, - `log_retention` int(11) NOT NULL DEFAULT '30', + `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 ; diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index 4930e253f98fddd7ebf6b1d34cc6cad147c7b008..ee1b693097a200505f42c7a7da3313b134d016b9 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -34,6 +34,21 @@ + + DocumentRoot {tmpl_var name='apps_vhost_dir'} + AddType application/x-httpd-php .php + + Options FollowSymLinks + AllowOverride None + + Require all granted + + Order allow,deny + Allow from all + + + + DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index 91bf98cb7f18dbf6d4a43c66cd13ab8929fd9e63..333450726ba8f407b76d1e214bae6e80f99c78fa 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -18,8 +18,12 @@ SSLStaplingCache shmcb:/var/run/ocsp(128000) LogFormat '%v %h %l %u %t "%r" %>s %S "%{Referer}i" "%{User-Agent}i"' combined_ispconfig LogFormat "%v %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig + +CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -p -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig env=!dontlog + + +CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig env=!dontlog -CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig AllowOverride None diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index ffbb7c03deaf616f99a769e04b635b459ac954be..eab55f3226f6fb2b16f019f40db2cf2608de4f30 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -8,6 +8,9 @@ > ServerAdmin webmaster@localhost + + Protocols h2 h2c http/1.1 + @@ -78,7 +81,7 @@ SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key SSLCertificateChainFile /usr/local/ispconfig/interface/ssl/ispserver.bundle - SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS + SSLCipherSuite TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder On SSLCompression Off @@ -88,8 +91,19 @@ - Header always add Strict-Transport-Security "max-age=15768000" - RequestHeader unset Proxy early + # 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 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" + = 2.4.7> + Header setifempty Strict-Transport-Security "max-age=15768000" + + + Header set Strict-Transport-Security "max-age=15768000" + + RequestHeader unset Proxy early diff --git a/install/tpl/debian6_dovecot-sql.conf.master b/install/tpl/debian6_dovecot-sql.conf.master index 496e9965dfbd41d8b67946a55adcd74fd2ba61cf..e05330dc26a4216d28e5d85f2918d005558232f4 100644 --- a/install/tpl/debian6_dovecot-sql.conf.master +++ b/install/tpl/debian6_dovecot-sql.conf.master @@ -19,4 +19,4 @@ user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers. # Do not enable it on Dovecot 1.x servers -# iterate_query = SELECT email as user FROM mail_user WHERE `disable%Ls` = 'n' AND server_id = '{server_id}' +# iterate_query = SELECT email as user FROM mail_user WHERE server_id = '{server_id}' diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index db6e0bfbe2ea115d12cb8760095e7da73ed937c6..155453bd355abbfb5c3f49f173eed73d28d5aae0 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -66,3 +66,20 @@ protocol lmtp { postmaster_address = webmaster@localhost mail_plugins = quota sieve } +mail_plugins = $mail_plugins quota +imap_capability=+SEPCIAL-USE XLIST +namespace inbox { + inbox = yes + mailbox Drafts { + special_use = \Drafts + } + mailbox Junk { + special_use = \Junk + } + mailbox Sent { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 8fdaf44eeb7bc156eb27c43dc113dd182bb21616..f125aafaf7b430f6f648852d7fccd3d536bb8fcc 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -65,3 +65,19 @@ protocol lmtp { mail_plugins = quota sieve } mail_plugins = $mail_plugins quota +imap_capability=+SEPCIAL-USE XLIST +namespace inbox { + inbox = yes + mailbox Drafts { + special_use = \Drafts + } + mailbox Junk { + special_use = \Junk + } + mailbox Sent { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index b7dbea6300a8cc251c64e2b2a2b4e25748f737b1..22a9484b13304b02279e35454179b00100bad882 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -14,7 +14,7 @@ smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting -greylisting = check_policy_service inet:127.0.0.1:10023 +greylisting = check_policy_service inet:127.0.0.1:10023 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting} smtpd_use_tls = yes smtpd_tls_security_level = may diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index c14af1d44d505dbcdf15a00d2e2b471c80a6f3d6..ac321469a22a1faf2ef4c6bb59148c890cd58d0b 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -62,3 +62,19 @@ protocol lmtp { mail_plugins = quota sieve } mail_plugins = $mail_plugins quota +imap_capability=+SEPCIAL-USE XLIST +namespace inbox { + inbox = yes + mailbox Drafts { + special_use = \Drafts + } + mailbox Junk { + special_use = \Junk + } + mailbox Sent { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} diff --git a/install/tpl/master_cf_amavis10027.master b/install/tpl/master_cf_amavis10027.master index f9fdf1cf6045faca63eab27d6f8774a689bac44a..30d8543a4891570daa62d3dd96893a89cd15d7ba 100644 --- a/install/tpl/master_cf_amavis10027.master +++ b/install/tpl/master_cf_amavis10027.master @@ -12,7 +12,7 @@ -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtp_send_xforward_command=yes - -o milter_default_action=accept - -o milter_macro_daemon_name=ORIGINATING + -o milter_default_action=accept + -o milter_macro_daemon_name=ORIGINATING -o disable_dns_lookups=yes diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf b/install/tpl/mysql-virtual_outgoing_bcc.cf deleted file mode 100644 index dfeb04b553ccb54b108c69db1fb652bea93b05af..0000000000000000000000000000000000000000 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf +++ /dev/null @@ -1,8 +0,0 @@ -user = {mysql_server_ispconfig_user} -password = {mysql_server_ispconfig_password} -dbname = {mysql_server_database} -table = mail_user -select_field = sender_cc -where_field = email -additional_conditions = and postfix = 'y' and disabledeliver = 'n' and disables$ -hosts = 127.0.0.1 \ No newline at end of file diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master index af062f66b2d3a900a2f74270b30555fd3bb41d7d..bf3ddbff01f10031183309f773d3fa6ef8f467a1 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -5,4 +5,4 @@ table = mail_user select_field = sender_cc where_field = email additional_conditions = and postfix = 'y' and disabledeliver = 'n' and disablesmtp = 'n' and sender_cc != '' -hosts = 127.0.0.1 \ No newline at end of file +hosts = {mysql_server_ip} diff --git a/install/tpl/named.conf.options.master b/install/tpl/named.conf.options.master index 37182dfba98e2a137508c174eeff1aa47270d62b..7f89fa4ee5b902574edeaa0d3a8cb7acdddccdbe 100644 --- a/install/tpl/named.conf.options.master +++ b/install/tpl/named.conf.options.master @@ -22,8 +22,7 @@ options { dnssec-validation yes; dnssec-lookaside auto; - version "DNS managed by ISPConfig"; - + version "DNS-Server"; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; diff --git a/install/tpl/nginx_anonlog.master b/install/tpl/nginx_anonlog.master new file mode 100644 index 0000000000000000000000000000000000000000..77b1dbbcc6655c2744057775498267efebd05d11 --- /dev/null +++ b/install/tpl/nginx_anonlog.master @@ -0,0 +1,20 @@ +map $remote_addr $ip_anonym1 { +default 0.0.0; +"~(?P(\d+)\.(\d+)\.(\d+))\.\d+" $ip; +"~(?P[^:]+:[^:]+):" $ip; +} + +map $remote_addr $ip_anonym2 { +default .0; +"~(?P(\d+)\.(\d+)\.(\d+))\.\d+" .0; +"~(?P[^:]+:[^:]+):" ::; +} + +map $ip_anonym1$ip_anonym2 $ip_anonymized { +default 0.0.0.0; +"~(?P.*)" $ip; +} + +log_format anonymized '$ip_anonymized - $remote_user [$time_local] ' +'"$request" $status $body_bytes_sent ' +'"$http_referer" "$http_user_agent"'; diff --git a/install/tpl/nginx_ispconfig.vhost.master b/install/tpl/nginx_ispconfig.vhost.master index 3c8bf5dbaf749f4fca8ba08a44fa8ebe4404a8d3..1a59c1576940be81bc78850eccbfc04a986c6cdc 100644 --- a/install/tpl/nginx_ispconfig.vhost.master +++ b/install/tpl/nginx_ispconfig.vhost.master @@ -2,10 +2,10 @@ server { listen {vhost_port}; listen [::]:{vhost_port} ipv6only=on; ssl {ssl_on}; - {ssl_comment}ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + {ssl_comment}ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; {ssl_comment}ssl_certificate /usr/local/ispconfig/interface/ssl/ispserver.crt; {ssl_comment}ssl_certificate_key /usr/local/ispconfig/interface/ssl/ispserver.key; - {ssl_comment}ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; + {ssl_comment}ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; {ssl_comment}ssl_prefer_server_ciphers on; # redirect to https if accessed with http diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index f28c1095d2792989b09e64e3fa3f403c2adca09c..49ba52e5f58ba4d3ff913702932e8778ab29f1fa 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -61,3 +61,19 @@ protocol lmtp { mail_plugins = quota sieve } mail_plugins = $mail_plugins quota +imap_capability=+SEPCIAL-USE XLIST +namespace inbox { + inbox = yes + mailbox Drafts { + special_use = \Drafts + } + mailbox Junk { + special_use = \Junk + } + mailbox Sent { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index cfbdfa3a06c93c755bfbc479976f10cdb76ab948..b6a8b8b42cfdee1f02047708f9cc7dc90d256d92 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -16,6 +16,7 @@ firewall=bastille loglevel=2 admin_notify_events=1 backup_dir=/var/backup +backup_tmp=/tmp backup_dir_is_mount=n backup_mode=rootgz backup_time=0:00 @@ -28,6 +29,7 @@ munin_user= munin_password= monitor_system_updates=y migration_mode=n +log_retention=10 [mail] module=postfix_mysql @@ -101,6 +103,7 @@ php_fpm_ini_path=/etc/php5/fpm/php.ini php_fpm_pool_dir=/etc/php5/fpm/pool.d php_fpm_start_port=9010 php_fpm_socket_dir=/var/lib/php5-fpm +php_default_name=Default set_folder_permissions_on_update=n add_web_users_to_sshusers_group=y connect_userid_to_webid=n @@ -113,6 +116,7 @@ overquota_notify_freq=7 overquota_db_notify_admin=y overquota_db_notify_client=y overquota_notify_onok=n +logging=yes [dns] bind_user=root @@ -153,10 +157,11 @@ do_not_try_rescue_mysql=n do_not_try_rescue_mail=n [xmpp] +xmpp_daemon=prosody xmpp_use_ispv6=n xmpp_bosh_max_inactivity=30 -xmpp_server_admins=admin@service.com, superuser@service.com -xmpp_modules_enabled=saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons +xmpp_server_admins= +xmpp_modules_enabled=roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access xmpp_port_http=5290 xmpp_port_https=5291 xmpp_port_pastebin=5292 diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 1988762c6c6b974e0252560f9ec38420ecd70419..5cd9b0873724da0be26870df8e3ffac163fe1a1c 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -15,6 +15,8 @@ mailbox_show_backup_tab=y mailboxlist_webmail_link=y webmail_url=/webmail dkim_path=/var/lib/amavis/dkim +smtp_enabled=y +smtp_host=localhost [monitor] @@ -53,6 +55,8 @@ tab_change_discard=n tab_change_warning=n use_loadindicator=y use_combobox=y +use_ipsuggestions=y +ipsuggestions_max=50 maintenance_mode=n admin_dashlets_left= admin_dashlets_right= diff --git a/install/tpl/metronome_conf_global.master b/install/tpl/xmpp_metronome_conf_global.master similarity index 100% rename from install/tpl/metronome_conf_global.master rename to install/tpl/xmpp_metronome_conf_global.master diff --git a/install/tpl/metronome_conf_main.master b/install/tpl/xmpp_metronome_conf_main.master similarity index 100% rename from install/tpl/metronome_conf_main.master rename to install/tpl/xmpp_metronome_conf_main.master diff --git a/install/tpl/metronome_conf_ssl.master b/install/tpl/xmpp_metronome_conf_ssl.master similarity index 100% rename from install/tpl/metronome_conf_ssl.master rename to install/tpl/xmpp_metronome_conf_ssl.master diff --git a/install/tpl/xmpp_prosody_conf_global.master b/install/tpl/xmpp_prosody_conf_global.master new file mode 100644 index 0000000000000000000000000000000000000000..14a0ae970295b4c5bb25993bce2f3ecd6dc7f3d6 --- /dev/null +++ b/install/tpl/xmpp_prosody_conf_global.master @@ -0,0 +1,94 @@ +plugin_paths = { + "/usr/local/lib/prosody/modules", +}; +use_libevent = true; +log = { + -- optional: uncomment debug log here + -- debug = "/var/log/prosody/prosody.dbg", + info = "/var/log/prosody/prosody.log", + error = "/var/log/prosody/prosody.err", + "syslog", +}; +use_ipv6 = true; +http_ports = { + 5290, +}; +https_ports = { + 5291, +}; +pastebin_ports = { + 5292, +}; +bosh_ports = { + 5280, +}; +admins = { + {tmpl_var xmpp_admins} +}; +modules_enabled = { + "roster", + "saslauth", + "tls", + "dialback", + "disco", + "carbons", + "pep", + "private", + "blocklist", + "vcard", + "version", + "uptime", + "time", + "ping", + "admin_adhoc", + "mam", + "bosh", + "websocket", + "http_files", + "announce", + "proxy65", + "offline", + "posix", + "websocket", + -- community modules + "webpresence", + "smacks", + "csi_battery_saver", + "pep_vcard_avatar", + "omemo_all_access", +}; +modules_disabled = { +}; + +allow_registration = false; +c2s_require_encryption = false; +s2s_require_encryption = true; +s2s_secure_auth = false; +s2s_insecure_domains = { + "gmail.com", +}; + +pidfile = "/var/run/prosody/prosody.pid"; + +authentication = "external"; + +archive_expires_after = "2w"; + +statistics = "internal"; + +certificates = "certs"; +bosh_max_inactivity = 60; +consider_bosh_secure = true; +cross_domain_bosh = true; +consider_websocket_secure = true; + +ssl = { + key = "/etc/prosody/certs/localhost.key", + certificate = "/etc/prosody/certs/localhost.crt", +}; + +Component "{tmpl_var main_host}" "http_upload" + ud_disco_name = "HTTP File Upload"; + http_upload_file_size_limit = 1024 * 1024 * 10; + http_upload_quota = 1024 * 1024 * 10; + http_upload_expire_after = 60 * 60 * 24 * 2; \ No newline at end of file diff --git a/install/tpl/xmpp_prosody_conf_main.master b/install/tpl/xmpp_prosody_conf_main.master new file mode 100644 index 0000000000000000000000000000000000000000..9c57f3292e292645bd4f1bd9b6184ddbc80e08c0 --- /dev/null +++ b/install/tpl/xmpp_prosody_conf_main.master @@ -0,0 +1,3 @@ +Include "/etc/prosody/storage.cfg.lua" +Include "/etc/prosody/global.cfg.lua" +Include "/etc/prosody/hosts/*.lua" diff --git a/install/tpl/xmpp_prosody_conf_ssl.master b/install/tpl/xmpp_prosody_conf_ssl.master new file mode 100644 index 0000000000000000000000000000000000000000..97b088a6adf0886203020a9d23a4f32266d46b59 --- /dev/null +++ b/install/tpl/xmpp_prosody_conf_ssl.master @@ -0,0 +1,48 @@ +oid_section = new_oids + +[ new_oids ] + +# RFC 3920 section 5.1.1 defines this OID +xmppAddr = 1.3.6.1.5.5.7.8.5 + +# RFC 4985 defines this OID +SRVName = 1.3.6.1.5.5.7.8.7 + +[ req ] + +default_bits = 4096 +default_keyfile = {tmpl_var name='domain'}.key +distinguished_name = distinguished_name +req_extensions = v3_extensions +x509_extensions = v3_extensions + +# ask about the DN? +prompt = no + +[ distinguished_name ] + +commonName = {tmpl_var name='domain'} +countryName = {tmpl_var name='ssl_country'} +localityName = {tmpl_var name='ssl_locality'} +organizationName = {tmpl_var name='ssl_organisation'} +organizationalUnitName = {tmpl_var name='ssl_organisation_unit'} +emailAddress = {tmpl_var name='ssl_email'} + +[ v3_extensions ] + +# for certificate requests (req_extensions) +# and self-signed certificates (x509_extensions) + +basicConstraints = CA:TRUE +keyUsage = digitalSignature,keyEncipherment +extendedKeyUsage = serverAuth,clientAuth +subjectAltName = @subject_alternative_name + +[ subject_alternative_name ] + +# See http://tools.ietf.org/html/draft-ietf-xmpp-3920bis#section-13.7.1.2 for more info. + +DNS.0 = {tmpl_var name='domain'} +otherName.0 = xmppAddr;FORMAT:UTF8,UTF8:{tmpl_var name='domain'} +otherName.1 = SRVName;IA5STRING:_xmpp-client.{tmpl_var name='domain'} +otherName.2 = SRVName;IA5STRING:_xmpp-server.{tmpl_var name='domain'} \ No newline at end of file diff --git a/install/tpl/xmpp_prosody_conf_storage.master b/install/tpl/xmpp_prosody_conf_storage.master new file mode 100644 index 0000000000000000000000000000000000000000..217e5163b79ea5754f23afb12da36a0ef1b1041e --- /dev/null +++ b/install/tpl/xmpp_prosody_conf_storage.master @@ -0,0 +1,9 @@ +storage = "sql" +sql = { + driver = "MySQL"; + database = "{tmpl_var db_name}"; + host = "{tmpl_var db_host}"; + port = {tmpl_var db_port}; + username = "{tmpl_var db_username}"; + password = "{tmpl_var db_password}"; +} \ No newline at end of file diff --git a/install/update.php b/install/update.php index add1bb4a4a78c7957aed7b34b81e9c41180745bf..3361c3c1918c6bb8803bc67d44473bcbe0488016 100644 --- a/install/update.php +++ b/install/update.php @@ -98,6 +98,9 @@ if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) { die('This software cannot be installed on a server wich runs ISPConfig 2.x.'); } +// Patch is required to reapir latest amavis versions +if(is_installed('amavisd-new') && !is_installed('patch')) die('The patch command is missing. Install patch command and start update again.'); + //** Get distribution identifier $dist = get_distname(); @@ -157,6 +160,8 @@ $conf["mysql"]["database"] = $conf_old["db_database"]; $conf['mysql']['charset'] = 'utf8'; $conf["mysql"]["ispconfig_user"] = $conf_old["db_user"]; $conf["mysql"]["ispconfig_password"] = $conf_old["db_password"]; +$conf['mysql']['port'] = $conf_old["db_port"]; +if($conf['mysql']['port'] == 0 || $conf['mysql']['port'] == '') $conf['mysql']['port'] = 3306; $conf['language'] = $conf_old['language']; $conf['theme'] = $conf_old['theme']; if($conf['language'] == '{language}') $conf['language'] = 'en'; @@ -201,7 +206,7 @@ if($do_backup == 'yes') { //* Do the backup swriteln('Creating backup of "/usr/local/ispconfig" directory...'); - exec("tar pcfz $backup_path/ispconfig_software.tar.gz /usr/local/ispconfig 2> /dev/null", $out, $returnvar); + exec("tar pcfz $backup_path/ispconfig_software.tar.gz /usr/local/ispconfig --exclude=/usr/local/ispconfig/server/aps_packages 2> /dev/null", $out, $returnvar); if($returnvar != 0) die("Backup failed. We stop here...\n"); swriteln('Creating backup of "/etc" directory...'); @@ -323,7 +328,7 @@ else $current_svc_config = $inst->db->queryOneRecord("SELECT mail_server,web_ser $conf['services']['mail'] = check_service_config_state('mail_server', $conf['postfix']['installed']); $conf['services']['dns'] = check_service_config_state('dns_server', ($conf['powerdns']['installed'] || $conf['bind']['installed'] || $conf['mydns']['installed'])); $conf['services']['web'] = check_service_config_state('web_server', ($conf['apache']['installed'] || $conf['nginx']['installed'])); -$conf['services']['xmpp'] = check_service_config_state('xmpp_server', $conf['xmpp']['installed']); +$conf['services']['xmpp'] = check_service_config_state('xmpp_server', $conf['metronome']['installed']); $conf['services']['firewall'] = check_service_config_state('firewall_server', ($conf['ufw']['installed'] || $conf['firewall']['installed'])); $conf['services']['vserver'] = check_service_config_state('vserver_server', $conf['services']['vserver']); $conf['services']['db'] = check_service_config_state('db_server', true); /* Will always offer as MySQL is of course installed on this host as it's a requirement for ISPC to work... */ @@ -462,7 +467,13 @@ if($reconfigure_services_answer == 'yes' || $reconfigure_services_answer == 'sel if($conf['services']['xmpp'] && $inst->reconfigure_app('XMPP', $reconfigure_services_answer)) { //** Configure Metronome XMPP - $inst->configure_xmpp('dont-create-certs'); + if($conf['prosody']['installed'] == true) { + swriteln('Configuring Prosody XMPP'); + $inst->configure_prosody('dont-create-certs'); + } elseif ($conf['metronome']['installed'] == true) { + swriteln('Configuring Metronome XMPP'); + $inst->configure_metronome('dont-create-certs'); + } } if($conf['services']['firewall'] && $inst->reconfigure_app('Firewall', $reconfigure_services_answer)) { @@ -560,7 +571,7 @@ if($reconfigure_services_answer == 'yes') { } if($conf['services']['xmpp']) { - if($conf['xmpp']['installed'] == true && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null'); + if($conf['metronome']['installed'] == true && $conf['metronome']['init_script'] != '') system($inst->getinitcommand($conf['metronome']['init_script'], 'restart').' &> /dev/null'); } if($conf['services']['proxy']) { diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 48349aec0f81a0639f82e394857dedf169118fbf..89595f5aaf350791fa81b82e0fec1f086ebd8a18 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -62,7 +62,11 @@ class app { $this->_conf = $conf; if($this->_conf['start_db'] == true) { $this->load('db_'.$this->_conf['db_type']); - $this->db = new db; + try { + $this->db = new db; + } catch (Exception $e) { + $this->db = false; + } } //* Start the session @@ -299,14 +303,14 @@ class app { $this->tpl->setVar('phpsessid', session_id()); - $this->tpl->setVar('theme', $_SESSION['s']['theme']); + $this->tpl->setVar('theme', $_SESSION['s']['theme'], true); $this->tpl->setVar('html_content_encoding', $this->_conf['html_content_encoding']); $this->tpl->setVar('delete_confirmation', $this->lng('delete_confirmation')); //print_r($_SESSION); if(isset($_SESSION['s']['module']['name'])) { - $this->tpl->setVar('app_module', $_SESSION['s']['module']['name']); - $this->tpl->setVar('session_module', $_SESSION['s']['module']['name']); + $this->tpl->setVar('app_module', $_SESSION['s']['module']['name'], true); + $this->tpl->setVar('session_module', $_SESSION['s']['module']['name'], true); } if(isset($_SESSION['s']['user']) && $_SESSION['s']['user']['typ'] == 'admin') { $this->tpl->setVar('is_admin', 1); @@ -316,7 +320,7 @@ class app { } /* Show username */ if(isset($_SESSION['s']['user'])) { - $this->tpl->setVar('cpuser', $_SESSION['s']['user']['username']); + $this->tpl->setVar('cpuser', $_SESSION['s']['user']['username'], true); $this->tpl->setVar('logout_txt', $this->lng('logout_txt')); /* Show search field only for normal users, not mail users */ if(stristr($_SESSION['s']['user']['username'], '@')){ @@ -343,7 +347,7 @@ $app = new app(); // load and enable PHP Intrusion Detection System (PHPIDS) $ids_security_config = $app->getconf->get_security_config('ids'); -if(is_dir(ISPC_CLASS_PATH.'/IDS') && $ids_security_config['ids_enabled'] == 'yes') { +if(is_dir(ISPC_CLASS_PATH.'/IDS') && !defined('REMOTE_API_CALL') && ($ids_security_config['ids_anon_enabled'] == 'yes' || $ids_security_config['ids_user_enabled'] == 'yes' || $ids_security_config['ids_admin_enabled'] == 'yes')) { $app->uses('ids'); $app->ids->start(); } diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index 16dd9e82f1666d03ac59f163ee8fe813498f5840..ee80c2c33201e9797c65621a042d8b68029cc01b 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -250,29 +250,20 @@ class ApsGUIController extends ApsBase $mysql_db_remote_access = 'n'; $mysql_db_remote_ips = ''; } 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']); - if(is_array($client) && $client['default_dbserver'] > 0 && $client['default_dbserver'] != $websrv['server_id']) { - $mysql_db_server_id = $app->functions->intval($client['default_dbserver']); - $dbserver_config = $web_config = $app->getconf->get_server_config($app->functions->intval($mysql_db_server_id), 'server'); - $settings['main_database_host'] = $dbserver_config['ip_address']; - $mysql_db_remote_access = 'y'; - $webserver_config = $app->getconf->get_server_config($app->functions->intval($websrv['server_id']), 'server'); - $mysql_db_remote_ips = $webserver_config['ip_address']; - } else { - /* I left this in place for a fallback that should NEVER! happen. - * if we reach this point it means that there is NO default db server for the client - * AND the webserver has NO db service enabled. - * We have to abort the aps installation here... so I added a return false - * although this does not present any error message to the user. - */ - return false; - - /*$mysql_db_server_id = $websrv['server_id']; - $settings['main_database_host'] = 'localhost'; - $mysql_db_remote_access = 'n'; - $mysql_db_remote_ips = '';*/ - } + //* If db server is not a web server, get the primary ( first ) database server from the client db_servers + $client = $app->db->queryOneRecord("SELECT db_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $websrv['sys_groupid']); + $dbservers = explode(",", $client['db_servers']); // Explode all db servers to array + $primary_dbserver = $dbservers[0]; // first db server from list of servers + if(is_array($client) && $primary_dbserver > 0 && $primary_dbserver != $websrv['server_id']) { + $mysql_db_server_id = $app->functions->intval($primary_dbserver); + $dbserver_config = $web_config = $app->getconf->get_server_config($app->functions->intval($mysql_db_server_id), 'server'); + $settings['main_database_host'] = $dbserver_config['ip_address']; + $mysql_db_remote_access = 'y'; + $webserver_config = $app->getconf->get_server_config($app->functions->intval($websrv['server_id']), 'server'); + $mysql_db_remote_ips = $webserver_config['ip_address']; + } else { // Error choosing database server, nothing to do + return false; + } } if (empty($settings['main_database_name'])) { @@ -417,6 +408,8 @@ class ApsGUIController extends ApsBase //* Set package status to install afetr we inserted the settings $app->db->datalogUpdate('aps_instances', array("instance_status" => INSTANCE_INSTALL), 'id', $InstanceID); + + return $InstanceID; } /** diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index 9a0934f6904085de2635726f928475f552e582a4..cb4426a2e183a0ff2963e4b074b45028347641f3 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -47,6 +47,7 @@ class custom_datasource { if($_SESSION["s"]["user"]["typ"] == 'user') { // Get the limits of the client $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $client = $app->db->queryOneRecord("SELECT default_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 { @@ -167,9 +168,10 @@ class custom_datasource { $sql = "SELECT $server_type as server_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?"; $client = $app->db->queryOneRecord($sql, $client_group_id); if($client['server_id'] > 0) { - //* Select the default server for the client - $sql = "SELECT server_id,server_name FROM server WHERE server_id = ?"; - $records = $app->db->queryAllRecords($sql, $client['server_id']); + //* Select the available servers for the client + $clientservers = $client['server_id']; + $sql = "SELECT server_id,server_name FROM server WHERE server_id IN ($clientservers) ORDER BY server_name"; + $records = $app->db->queryAllRecords($sql); } else { //* Not able to find the clients defaults, use this as fallback and add a warning message to the log $app->log('Unable to find default server for client in custom_datasource.inc.php', 1); @@ -182,7 +184,7 @@ class custom_datasource { $records = $app->db->queryAllRecords($sql, $field); } - + $records_new = array(); if(is_array($records)) { foreach($records as $rec) { @@ -197,4 +199,4 @@ class custom_datasource { } -?> +?> \ No newline at end of file diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 7433104607d19a8085c67cf900ba837ba1298f25..b03ad55676ddb3c30cf01c4e12eed534865d8585 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -1,4 +1,12 @@ dbHost = $conf[$prefix.'db_host']; - $this->dbPort = $conf[$prefix.'db_port']; - $this->dbName = $conf[$prefix.'db_database']; - $this->dbUser = $conf[$prefix.'db_user']; - $this->dbPass = $conf[$prefix.'db_password']; - $this->dbCharset = $conf[$prefix.'db_charset']; - $this->dbNewLink = $conf[$prefix.'db_new_link']; - $this->dbClientFlags = $conf[$prefix.'db_client_flags']; + public function __construct($host = NULL , $user = NULL, $pass = NULL, $database = NULL, $port = NULL, $flags = NULL) { + global $app, $conf; + + $this->dbHost = $host ? $host : $conf['db_host']; + $this->dbPort = $port ? $port : $conf['db_port']; + $this->dbName = $database ? $database : $conf['db_database']; + $this->dbUser = $user ? $user : $conf['db_user']; + $this->dbPass = $pass ? $pass : $conf['db_password']; + $this->dbCharset = $conf['db_charset']; + $this->dbClientFlags = ($flags !== NULL) ? $flags : $conf['db_client_flags']; $this->_iConnId = mysqli_init(); mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags); - for($try=0;(!is_object($this->_iConnId) || mysqli_connect_error()) && $try < 5;++$try) { + for($try=0;(!is_object($this->_iConnId) || mysqli_connect_errno()) && $try < 5;++$try) { sleep($try); - mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags); + if(!is_object($this->_iConnId)) { + $this->_iConnId = mysqli_init(); + } + if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags)) { + $this->_sqlerror('Database connection failed'); + } } - if(!is_object($this->_iConnId) || mysqli_connect_error()) { + if(!is_object($this->_iConnId) || mysqli_connect_errno()) { $this->_iConnId = null; - $this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!'); - return false; + $this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!', '', true); // sets errorMessage + throw new Exception($this->errorMessage); } if(!((bool)mysqli_query( $this->_iConnId, 'USE `' . $this->dbName . '`'))) { $this->close(); - $this->_sqlerror('Datenbank nicht gefunden / Database not found'); - return false; + $this->_sqlerror('Datenbank nicht gefunden / Database not found', '', true); // sets errorMessage + throw new Exception($this->errorMessage); } $this->_setCharset(); @@ -105,6 +116,23 @@ class db { $this->_iConnId = null; } + /* + * Test mysql connection. + * + * @return boolean returns true if db connection is good. + */ + public function testConnection() { + if(mysqli_connect_errno()) { + return false; + } + return (boolean)(is_object($this->_iConnId) && mysqli_ping($this->_iConnId)); + } + + /* This allows our private variables to be "read" out side of the class */ + public function __get($var) { + return isset($this->$var) ? $this->$var : NULL; + } + public function _build_query_string($sQuery = '') { $iArgs = func_num_args(); if($iArgs > 1) { @@ -127,7 +155,7 @@ class db { if($iPos2 !== false && ($iPos === false || $iPos2 <= $iPos)) { $sTxt = $this->escape($sValue); - + $sTxt = str_replace('`', '', $sTxt); if(strpos($sTxt, '.') !== false) { $sTxt = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $sTxt); @@ -169,33 +197,33 @@ class db { /**#@+ - * @access private - */ + * @access private + */ private function _setCharset() { - mysqli_query($this->_iConnId, 'SET NAMES '.$this->dbCharset); - mysqli_query($this->_iConnId, "SET character_set_results = '".$this->dbCharset."', character_set_client = '".$this->dbCharset."', character_set_connection = '".$this->dbCharset."', character_set_database = '".$this->dbCharset."', character_set_server = '".$this->dbCharset."'"); + $this->query('SET NAMES '.$this->dbCharset); + $this->query("SET character_set_results = '".$this->dbCharset."', character_set_client = '".$this->dbCharset."', character_set_connection = '".$this->dbCharset."', character_set_database = '".$this->dbCharset."', character_set_server = '".$this->dbCharset."'"); } - + private function securityScan($string) { global $app, $conf; - + // get security config if(isset($app)) { $app->uses('getconf'); $ids_config = $app->getconf->get_security_config('ids'); - + if($ids_config['sql_scan_enabled'] == 'yes') { - + // Remove whitespace $string = trim($string); if(substr($string,-1) == ';') $string = substr($string,0,-1); - + // Save original string $string_orig = $string; - + //echo $string; $chars = array(';', '#', '/*', '*/', '--', '\\\'', '\\"'); - + $string = str_replace('\\\\', '', $string); $string = preg_replace('/(^|[^\\\])([\'"])\\2/is', '$1', $string); $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\])\\2/is', '$1', $string); @@ -239,14 +267,28 @@ class db { $try = 0; do { $try++; - $ok = mysqli_ping($this->_iConnId); + $ok = (is_object($this->_iConnId)) ? mysqli_ping($this->_iConnId) : false; if(!$ok) { - if(!mysqli_real_connect(mysqli_init(), $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { - if($try > 4) { - $this->_sqlerror('DB::query -> reconnect'); + 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_connect_errno() == '111') { + // server is not available + if($try > 9) { + if(isset($app) && isset($app->forceErrorExit)) { + $app->forceErrorExit('Database connection failure!'); + } + // if we reach this, the app object is missing or has no exit method, so we continue as normal + } + sleep(30); // additional seconds, please! + } + + if($try > 9) { + $this->_sqlerror('db::_query -> reconnect', '', true); return false; } else { - sleep(1); + sleep(($try > 7 ? 5 : 1)); } } else { $this->_setCharset(); @@ -258,7 +300,7 @@ class db { $aArgs = func_get_args(); $sQuery = call_user_func_array(array(&$this, '_build_query_string'), $aArgs); $this->securityScan($sQuery); - $this->_iQueryId = @mysqli_query($this->_iConnId, $sQuery); + $this->_iQueryId = mysqli_query($this->_iConnId, $sQuery); if (!$this->_iQueryId) { $this->_sqlerror('Falsche Anfrage / Wrong Query', 'SQL-Query = ' . $sQuery); return false; @@ -390,7 +432,7 @@ class db { } public function query_all_array($sQuery = '') { - return $this->queryAllArray($sQuery); + return call_user_func_array(array(&$this, 'queryAllArray'), func_get_args()); } @@ -404,13 +446,14 @@ class db { * @return int id of last inserted row or 0 if none */ public function insert_id() { - $iRes = mysqli_query($this->_iConnId, 'SELECT LAST_INSERT_ID() as `newid`'); - if(!is_object($iRes)) return false; - - $aReturn = mysqli_fetch_assoc($iRes); - mysqli_free_result($iRes); - - return $aReturn['newid']; + $oResult = $this->query('SELECT LAST_INSERT_ID() as `newid`'); + if(!$oResult) { + $this->_sqlerror('Unable to select last_insert_id()'); + return false; + } + $aReturn = $oResult->get(); + $oResult->free(); + return isset($aReturn['newid']) ? $aReturn['newid'] : 0; } @@ -431,6 +474,7 @@ class db { } + /** * check if a utf8 string is valid * @@ -496,20 +540,27 @@ class db { * * @access private */ - private function _sqlerror($sErrormsg = 'Unbekannter Fehler', $sAddMsg = '') { + private function _sqlerror($sErrormsg = 'Unbekannter Fehler', $sAddMsg = '', $bNoLog = false) { global $app, $conf; - $mysql_error = (is_object($this->_iConnId) ? mysqli_error($this->_iConnId) : mysqli_connect_error()); - $mysql_errno = (is_object($this->_iConnId) ? mysqli_errno($this->_iConnId) : mysqli_connect_errno()); + $mysql_errno = mysqli_connect_errno(); + $mysql_error = mysqli_connect_error(); + if ($mysql_errno === 0 && is_object($this->_iConnId)) { + $mysql_errno = mysqli_errno($this->_iConnId); + $mysql_error = mysqli_error($this->_iConnId); + } + $this->errorNumber = $mysql_error; $this->errorMessage = $mysql_error; //$sAddMsg .= getDebugBacktrace(); if($this->show_error_messages && $conf['demo_mode'] === false) { echo $sErrormsg . $sAddMsg; - } else if(is_object($app) && method_exists($app, 'log')) { - $app->log($sErrormsg . $sAddMsg . ' -> ' . $mysql_errno . ' (' . $mysql_error . ')', LOGLEVEL_WARN); - } + } elseif(is_object($app) && method_exists($app, 'log') && $bNoLog == false) { + $app->log($sErrormsg . $sAddMsg . ' -> ' . $mysql_errno . ' (' . $mysql_error . ')', LOGLEVEL_WARN, false); + } elseif(php_sapi_name() == 'cli') { + echo $sErrormsg . $sAddMsg; + } } public function affectedRows() { @@ -541,27 +592,27 @@ class db { } return $out; } - + public function insertFromArray($tablename, $data) { if(!is_array($data)) return false; - + $k_query = ''; $v_query = ''; - + $params = array($tablename); $v_params = array(); - + foreach($data as $key => $value) { $k_query .= ($k_query != '' ? ', ' : '') . '??'; $v_query .= ($v_query != '' ? ', ' : '') . '?'; $params[] = $key; $v_params[] = $value; } - + $query = 'INSERT INTO ?? (' . $k_query . ') VALUES (' . $v_query . ')'; return $this->query($query, true, array_merge($params, $v_params)); } - + public function diffrec($record_old, $record_new) { $diffrec_full = array(); $diff_num = 0; @@ -597,15 +648,47 @@ class db { } + /** + * Function to get the database-size + * @param string $database_name + * @return int - database-size in bytes + */ + public function getDatabaseSize($database_name) { + global $app, $conf; + static $db=null; + + if ( ! $db ) { + $clientdb_host = ($conf['db_host']) ? $conf['db_host'] : NULL; + $clientdb_user = ($conf['db_user']) ? $conf['db_user'] : NULL; + $clientdb_password = ($conf['db_password']) ? $conf['db_password'] : NULL; + $clientdb_port = ((int)$conf['db_port']) ? (int)$conf['db_port'] : NULL; + $clientdb_flags = ($conf['db_flags'] !== NULL) ? $conf['db_flags'] : NULL; + + require_once 'lib/mysql_clientdb.conf'; + + $db = new db($clientdb_host, $clientdb_user, $clientdb_password, NULL, $clientdb_port, $clientdb_flags); + } + + $result = $db->_query("SELECT SUM(data_length+index_length) FROM information_schema.TABLES WHERE table_schema='".$db->escape($database_name)."'"); + if(!$result) { + $db->_sqlerror('Unable to determine the size of database ' . $database_name); + return; + } + $database_size = $result->getAsRow(); + $result->free(); + return $database_size[0] ? $database_size[0] : 0; + } + //** Function to fill the datalog with a full differential record. public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new, $force_update = false) { - global $app, $conf; + global $app; - // Check fields - if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$db_table)) $app->error('Invalid table name '.$db_table); - if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$primary_field)) $app->error('Invalid primary field '.$primary_field.' in table '.$db_table); - - $primary_id = intval($primary_id); + // Insert backticks only for incomplete table names. + if(stristr($db_table, '.')) { + $escape = ''; + } else { + $escape = '`'; + } if($force_update == true) { //* We force a update even if no record has changed @@ -625,12 +708,13 @@ class db { if($diff_num > 0) { - //print_r($diff_num); - //print_r($diffrec_full); $diffstr = serialize($diffrec_full); - $username = $_SESSION['s']['user']['username']; + if(isset($_SESSION)) { + $username = $_SESSION['s']['user']['username']; + } else { + $username = 'admin'; + } $dbidx = $primary_field.':'.$primary_id; - if(trim($username) == '') $username = 'none'; if($action == 'INSERT') $action = 'i'; if($action == 'UPDATE') $action = 'u'; @@ -645,11 +729,11 @@ class db { //** Inserts a record and saves the changes into the datalog public function datalogInsert($tablename, $insert_data, $index_field) { global $app; - + // Check fields if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); - + if(is_array($insert_data)) { $key_str = ''; $val_str = ''; @@ -688,7 +772,7 @@ class db { // Check fields if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); - + $old_rec = $this->queryOneRecord("SELECT * FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); if(is_array($update_data)) { @@ -723,7 +807,7 @@ class db { // Check fields if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); - + $old_rec = $this->queryOneRecord("SELECT * FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); $this->query("DELETE FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); $new_rec = array(); @@ -732,13 +816,20 @@ class db { return true; } + //** Deletes a record and saves the changes into the datalog + public function datalogError($errormsg) { + global $app; + + if(isset($app->modules->current_datalog_id) && $app->modules->current_datalog_id > 0) $this->query("UPDATE sys_datalog set error = ? WHERE datalog_id = ?", $errormsg, $app->modules->current_datalog_id); + + return true; + } + //* get the current datalog status for the specified login (or currently logged in user) public function datalogStatus($login = '') { global $app; $return = array('count' => 0, 'entries' => array()); - //if($_SESSION['s']['user']['typ'] == 'admin') return $return; // these information should not be displayed to admin users - // removed in favor of new non intrusive datalogstatus notification header if($login == '' && isset($_SESSION['s']['user'])) { $login = $_SESSION['s']['user']['username']; @@ -747,14 +838,24 @@ class db { $result = $this->queryAllRecords("SELECT COUNT( * ) AS cnt, sys_datalog.action, sys_datalog.dbtable FROM sys_datalog, server WHERE server.server_id = sys_datalog.server_id AND sys_datalog.user = ? AND sys_datalog.datalog_id > server.updated GROUP BY sys_datalog.dbtable, sys_datalog.action", $login); foreach($result as $row) { if(!$row['dbtable'] || in_array($row['dbtable'], array('aps_instances', 'aps_instances_settings', 'mail_access', 'mail_content_filter'))) continue; // ignore some entries, maybe more to come - $return['entries'][] = array('table' => $row['dbtable'], 'action' => $row['action'], 'count' => $row['cnt'], 'text' => $app->lng('datalog_status_' . $row['action'] . '_' . $row['dbtable'])); - $return['count'] += $row['cnt']; + $return['entries'][] = array('table' => $row['dbtable'], 'action' => $row['action'], 'count' => $row['cnt'], 'text' => $app->lng('datalog_status_' . $row['action'] . '_' . $row['dbtable'])); $return['count'] += $row['cnt']; } unset($result); return $return; } + + public function freeResult($query) + { + if(is_object($query) && (get_class($query) == "mysqli_result")) { + $query->free(); + return true; + } else { + return false; + } + } + /* $columns = array(action => add | alter | drop name => Spaltenname @@ -879,15 +980,6 @@ class db { if($rows = $app->db->queryAllRecords('SHOW FIELDS FROM ??', $table_name)){ foreach($rows as $row) { - /* - $name = $row[0]; - $default = $row[4]; - $key = $row[3]; - $extra = $row[5]; - $isnull = $row[2]; - $type = $row[1]; - */ - $name = $row['Field']; $default = $row['Default']; $key = $row['Key']; @@ -988,7 +1080,7 @@ class db { return 'char'; break; case 'varchar': - if($typeValue < 1) die('Database failure: Lenght required for these data types.'); + if($typeValue < 1) die('Database failure: Length required for these data types.'); return 'varchar('.$typeValue.')'; break; case 'text': diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 136448eefd30029c00a9a6df95066816fc724eab..a1cda41e861e78b243ca37415a7e01fcd693383b 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -58,6 +58,10 @@ class functions { if($cc != '') $app->ispcmail->setHeader('Cc', $cc); if($bcc != '') $app->ispcmail->setHeader('Bcc', $bcc); + if(is_string($to) && strpos($to, ',') !== false) { + $to = preg_split('/\s*,\s*/', $to); + } + $app->ispcmail->send($to); $app->ispcmail->finish(); @@ -182,11 +186,25 @@ class functions { } } + + /** + * Function to suggest IP addresses in selectbox with hints, limited to the client logged in. + * + * @access public + * @param string $type (default: 'IPv4') + * @return void + */ public function suggest_ips($type = 'IPv4'){ global $app; + $use_suggestions = $app->getconf->get_global_config('misc')['use_ipsuggestions'] == 'y' ? true : false;; + if(!$use_suggestions) {return array('cheader' => array(), 'cdata' => array());} + + $suggestions_max = $app->getconf->get_global_config('misc')['ipsuggestions_max']; + $groupid = intval($_SESSION["s"]["user"]["default_group"]); + if($type == 'IPv4'){ -// $regex = "/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/"; + // $regex = "/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/"; $regex = "/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"; } else { // IPv6 @@ -198,58 +216,75 @@ class functions { $servers = $app->db->queryAllRecords("SELECT * FROM server"); if(is_array($servers) && !empty($servers)){ foreach($servers as $server){ - $server_by_id[$server['server_id']] = $server['server_name']; + $server_by_id[$server['server_id']] = 'server: ' . $server['server_name'] . ''; } } + $localips = array(); $ips = array(); $results = $app->db->queryAllRecords("SELECT ip_address AS ip, server_id FROM server_ip WHERE ip_type = ?", $type); if(!empty($results) && is_array($results)){ foreach($results as $result){ if(preg_match($regex, $result['ip'])){ - $ips[] = $result['ip']; + $localips[] = $result['ip']; $server_by_ip[$result['ip']] = $server_by_id[$result['server_id']]; } } } + $results = $app->db->queryAllRecords("SELECT ip_address AS ip FROM openvz_ip"); if(!empty($results) && is_array($results)){ foreach($results as $result){ if(preg_match($regex, $result['ip'])) $ips[] = $result['ip']; } } - $results = $app->db->queryAllRecords("SELECT data AS ip FROM dns_rr WHERE type = 'A' OR type = 'AAAA'"); + $results = $groupid != 1 ? $app->db->queryAllRecords("SELECT rr.data AS server_ip, rr.name as server_name, soa.origin as domain FROM dns_rr as rr, dns_soa as soa WHERE (rr.type = 'A' OR rr.type = 'AAAA') AND soa.id = rr.zone AND rr.sys_groupid = ?", $groupid) : $results = $app->db->queryAllRecords("SELECT rr.data AS server_ip, rr.name as server_name, soa.origin as domain FROM dns_rr as rr, dns_soa as soa WHERE (rr.type = 'A' OR rr.type = 'AAAA') AND soa.id = rr.zone"); + if(!empty($results) && is_array($results)){ foreach($results as $result){ - if(preg_match($regex, $result['ip'])) $ips[] = $result['ip']; + $result['server_name'] = substr($result['server_name'], -1) == '.' ? $result['server_name'] : $result['server_name'] . '.' . $result['domain']; + if (!array_key_exists($result['server_ip'],$server_by_ip)) { + $server_by_ip[$result['server_ip']] = 'dns: ' . $result['server_name']; + if(preg_match($regex, $result['server_ip'])) $ips[] = $result['server_ip']; + } } } - $results = $app->db->queryAllRecords("SELECT ns AS ip FROM dns_slave"); + + $results = $groupid != 1 ? $app->db->queryAllRecords("SELECT ns AS ip FROM dns_slave WHERE sys_groupid = ?", $groupid) : $results = $app->db->queryAllRecords("SELECT ns AS ip FROM dns_slave"); + if(!empty($results) && is_array($results)){ foreach($results as $result){ - if(preg_match($regex, $result['ip'])) $ips[] = $result['ip']; + if (!array_key_exists($result['ip'],$server_by_ip)) { + if(preg_match($regex, $result['ip'])) $ips[] = $result['ip']; + } } } - - $results = $app->db->queryAllRecords("SELECT remote_ips FROM web_database WHERE remote_ips != ''"); + + $results = $groupid != 1 ? $app->db->queryAllRecords("SELECT database_name as name,remote_ips as ip FROM web_database WHERE remote_ips != '' AND sys_groupid = ?", $groupid) : $results = $app->db->queryAllRecords("SELECT database_name as name,remote_ips as ip FROM web_database WHERE remote_ips != ''"); + if(!empty($results) && is_array($results)){ foreach($results as $result){ - $tmp_ips = explode(',', $result['remote_ips']); + $tmp_ips = explode(',', $result['ip']); foreach($tmp_ips as $tmp_ip){ $tmp_ip = trim($tmp_ip); - if(preg_match($regex, $tmp_ip)) $ips[] = $tmp_ip; + if (!array_key_exists($tmp_ip,$server_by_ip)) { + $server_by_ip[$tmp_ip] = 'database: ' . $result['name']; + if(preg_match($regex, $tmp_ip)) $ips[] = $tmp_ip; + } } } } $ips = array_unique($ips); + sort($localips, SORT_NUMERIC); sort($ips, SORT_NUMERIC); - + $ips = array_merge($localips,$ips); + $ips = array_slice($ips, 0, $suggestions_max); $result_array = array('cheader' => array(), 'cdata' => array()); if(!empty($ips)){ $result_array['cheader'] = array('title' => 'IPs', 'total' => count($ips), - 'limit' => count($ips) + 'limit' => count($ips), ); foreach($ips as $ip){ @@ -281,9 +316,14 @@ class functions { * @return string - formated bytes */ public function formatBytes($size, $precision = 2) { - $base=log($size)/log(1024); $suffixes=array('', ' kB', ' MB', ' GB', ' TB'); - return round(pow(1024, $base-floor($base)), $precision).$suffixes[floor($base)]; + if($size != 0 && !is_nan($size)) { + $base=log($size)/log(1024); + $tmpoutput = round(pow(1024, $base-floor($base)), $precision).$suffixes[floor($base)]; + } else { + $tmpoutput = "0 " . $suffixes[1]; + } + return $tmpoutput; } /** IDN converter wrapper. @@ -366,42 +406,42 @@ class functions { public function is_allowed_user($username, $restrict_names = false) { global $app; - + $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($username,$name_blacklist)) return false; - + if(preg_match('/^[a-zA-Z0-9\.\-_]{1,32}$/', $username) == false) return false; - + if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; - + return true; } - + public function is_allowed_group($groupname, $restrict_names = false) { global $app; - + $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($groupname,$name_blacklist)) return false; - + if(preg_match('/^[a-zA-Z0-9\.\-_]{1,32}$/', $groupname) == false) return false; - + if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; - + return true; } - + public function getimagesizefromstring($string){ if (!function_exists('getimagesizefromstring')) { $uri = 'data://application/octet-stream;base64,' . base64_encode($string); return getimagesize($uri); } else { return getimagesizefromstring($string); - } + } } - + public function password($minLength = 10, $special = false){ global $app; - + $iteration = 0; $password = ""; $maxLength = $minLength + 5; @@ -426,7 +466,7 @@ class functions { public function getRandomInt($min, $max){ return floor((mt_rand() / mt_getrandmax()) * ($max - $min + 1)) + $min; } - + public function generate_customer_no(){ global $app; // generate customer no. @@ -434,13 +474,13 @@ class functions { while($app->db->queryOneRecord("SELECT client_id FROM client WHERE customer_no = ?", $customer_no)) { $customer_no = mt_rand(100000, 999999); } - + return $customer_no; } - + public function generate_ssh_key($client_id, $username = ''){ global $app; - + // generate the SSH key pair for the client $id_rsa_file = '/tmp/'.uniqid('',true); $id_rsa_pub_file = $id_rsa_file.'.pub'; @@ -454,13 +494,13 @@ class functions { $app->log("Failed to create SSH keypair for ".$username, LOGLEVEL_WARN); } } - + public function htmlentities($value) { global $conf; if(is_array($value)) { $out = array(); - foreach($values as $key => $val) { + foreach($value as $key => $val) { if(is_array($val)) { $out[$key] = $this->htmlentities($val); } else { @@ -470,9 +510,33 @@ class functions { } else { $out = htmlentities($value, ENT_QUOTES, $conf["html_content_encoding"]); } - + return $out; } + + // Function to check paths before we use it as include. Use with absolute paths only. + public function check_include_path($path) { + if(strpos($path,'//') !== false) die('Include path seems to be an URL: '.$this->htmlentities($path)); + if(strpos($path,'..') !== false) die('Two dots are not allowed in include path: '.$this->htmlentities($path)); + if(!preg_match("/^[a-zA-Z0-9_\/\.\-]+$/", $path)) die('Wrong chars in include path: '.$this->htmlentities($path)); + $path = realpath($path); + if($path == '') die('Include path does not exist.'); + if(substr($path,0,strlen(ISPC_ROOT_PATH)) != ISPC_ROOT_PATH) die('Path '.$this->htmlentities($path).' is outside of ISPConfig installation directory.'); + return $path; + } + + // Function to check language strings + public function check_language($language) { + global $app; + if(preg_match('/^[a-z]{2}$/',$language)) { + return $language; + } else { + $app->log('Wrong language string: '.$this->htmlentities($language),1); + return 'en'; + } + } + +>>>>>>> ispconfig3.official/master } ?> diff --git a/interface/lib/classes/ids.inc.php b/interface/lib/classes/ids.inc.php index ac5cb1912897f0eb0355715c24985092bc4d386a..abdf32b30251543045b0302158378748eba17d8b 100644 --- a/interface/lib/classes/ids.inc.php +++ b/interface/lib/classes/ids.inc.php @@ -118,7 +118,25 @@ class ids { $impact = $ids_result->getImpact(); - if($impact >= $security_config['ids_log_level']) { + // Choose level from security config + if($app->auth->is_admin()) { + // User is admin + $ids_log_level = $security_config['ids_admin_log_level']; + $ids_warn_level = $security_config['ids_admin_warn_level']; + $ids_block_level = $security_config['ids_admin_block_level']; + } elseif(is_array($_SESSION['s']['user']) && $_SESSION['s']['user']['userid'] > 0) { + // User is Client or Reseller + $ids_log_level = $security_config['ids_user_log_level']; + $ids_warn_level = $security_config['ids_user_warn_level']; + $ids_block_level = $security_config['ids_user_block_level']; + } else { + // Not logged in + $ids_log_level = $security_config['ids_anon_log_level']; + $ids_warn_level = $security_config['ids_anon_warn_level']; + $ids_block_level = $security_config['ids_anon_block_level']; + } + + if($impact >= $ids_log_level) { $ids_log = ISPC_ROOT_PATH.'/temp/ids.log'; if(!is_file($ids_log)) touch($ids_log); @@ -132,11 +150,11 @@ class ids { } - if($impact >= $security_config['ids_warn_level']) { + if($impact >= $ids_warn_level) { $app->log("PHP IDS Alert.".$ids_result, 2); } - if($impact >= $security_config['ids_block_level']) { + if($impact >= $ids_block_level) { $app->error("Possible attack detected. This action has been logged.",'', true, 2); } diff --git a/interface/lib/classes/ini_parser.inc.php b/interface/lib/classes/ini_parser.inc.php index b8dffbafa5cd57b316c3d16241ae867abc798fa3..9b41a38f07e996f8c5ff953d90047e3a1ac5dbb7 100644 --- a/interface/lib/classes/ini_parser.inc.php +++ b/interface/lib/classes/ini_parser.inc.php @@ -34,6 +34,7 @@ class ini_parser{ //* Converts a ini string to array public function parse_ini_string($ini) { + $this->config = array(); $ini = str_replace("\r\n", "\n", $ini); $lines = explode("\n", $ini); foreach($lines as $line) { diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index 15a1a53add169892e4aaba3e1b7d4dcb775d398c..4b92daa73c2cba5cc8b7ec01ee170a452e20a3c8 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -60,7 +60,7 @@ class listform { } //* Set local Language File - $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_'.$this->listDef['name'].'_list.lng'; + $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_'.$this->listDef['name'].'_list.lng'; if(!file_exists($lng_file)) $lng_file = 'lib/lang/en_'.$this->listDef['name'].'_list.lng'; include $lng_file; diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index 1bf615e857bc00e229553e4a3e765e04d784fbf9..a13c3fdb739691b6f49f494a1d0de15f1aa406a6 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -180,7 +180,7 @@ class listform_actions { $rec['_'.$key.'_'] = (strtolower($rec[$key]) == 'y')?'x16/tick_circle.png':'x16/cross_circle.png'; } //* substitute value for select field - $rec[$key] = @$field['value'][$rec[$key]]; + $rec[$key] = $app->functions->htmlentities(@$field['value'][$rec[$key]]); } } } @@ -249,7 +249,7 @@ class listform_actions { global $app; //* Set global Language File - $lng_file = ISPC_LIB_PATH.'/lang/'.$_SESSION['s']['language'].'.lng'; + $lng_file = ISPC_LIB_PATH.'/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; if(!file_exists($lng_file)) $lng_file = ISPC_LIB_PATH.'/lang/en.lng'; include $lng_file; diff --git a/interface/lib/classes/listform_tpl_generator.inc.php b/interface/lib/classes/listform_tpl_generator.inc.php index 0cb158bb39ee6666738b9c28d9bee673030ecd80..031f7a1e564516f037d4f81a4ca6180ba351f673 100644 --- a/interface/lib/classes/listform_tpl_generator.inc.php +++ b/interface/lib/classes/listform_tpl_generator.inc.php @@ -153,10 +153,10 @@ class listform_tpl_generator { } function lng_add($lang, $listDef, $module = '') { - global $go_api, $go_info, $conf; + global $app, $conf; if($module == '') { - $lng_file = "lib/lang/".$conf["language"]."_".$listDef['name']."_list.lng"; + $lng_file = "lib/lang/".$app->functions->check_language($conf["language"])."_".$listDef['name']."_list.lng"; } else { $lng_file = '../'.$module."/lib/lang/en_".$listDef['name']."_list.lng"; } diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php index 8e62589f76e5de1c3dcfe01cbb4dddb6bae9ec6f..e96be012e3d6847d43ba990cd9b79c82c3f247f3 100644 --- a/interface/lib/classes/plugin_backuplist.inc.php +++ b/interface/lib/classes/plugin_backuplist.inc.php @@ -45,7 +45,7 @@ class plugin_backuplist extends plugin_base { $listTpl->newTemplate('templates/web_backup_list.htm'); //* Loading language file - $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_web_backup_list.lng"; + $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_web_backup_list.lng"; include $lng_file; $listTpl->setVar($wb); diff --git a/interface/lib/classes/plugin_backuplist_mail.inc.php b/interface/lib/classes/plugin_backuplist_mail.inc.php index 512fb8c9f05a6de50e0b54a1745cbce031d8f483..af133556097d4d329132a31199900eec004f2e70 100644 --- a/interface/lib/classes/plugin_backuplist_mail.inc.php +++ b/interface/lib/classes/plugin_backuplist_mail.inc.php @@ -46,7 +46,7 @@ class plugin_backuplist_mail extends plugin_base { $listTpl->newTemplate('templates/mail_user_backup_list.htm'); //* Loading language file - $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_mail_backup_list.lng"; + $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_mail_backup_list.lng"; include($lng_file); $listTpl->setVar($wb); diff --git a/interface/lib/classes/plugin_directive_snippets.inc.php b/interface/lib/classes/plugin_directive_snippets.inc.php index 41138bca1e5891723289a548b9edb9c4ccf19789..555526444692816837a52bfbd393da77edefce57 100644 --- a/interface/lib/classes/plugin_directive_snippets.inc.php +++ b/interface/lib/classes/plugin_directive_snippets.inc.php @@ -18,7 +18,7 @@ class plugin_directive_snippets extends plugin_base $listTpl->newTemplate('templates/web_directive_snippets.htm'); //* Loading language file - $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_web_directive_snippets.lng"; + $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_web_directive_snippets.lng"; include $lng_file; $listTpl->setVar($wb); diff --git a/interface/lib/classes/plugin_listview.inc.php b/interface/lib/classes/plugin_listview.inc.php index bc764caefe0dbb144b53d6c87826bad5edb0a637..bd0aa0e160105701a956f69780c95daa6b18dc2a 100644 --- a/interface/lib/classes/plugin_listview.inc.php +++ b/interface/lib/classes/plugin_listview.inc.php @@ -56,7 +56,7 @@ class plugin_listview extends plugin_base { // $app->listform->listDef["page_params"] = "&id=".$app->tform_actions->id."&next_tab=".$_SESSION["s"]["form"]["tab"]; $app->listform->listDef["page_params"] = "&id=".$this->form->id."&next_tab=".$_SESSION["s"]["form"]["tab"]; $listTpl->setVar('parent_id', $this->form->id); - $listTpl->setVar('theme', $_SESSION['s']['theme']); + $listTpl->setVar('theme', $_SESSION['s']['theme'], true); // Generate the SQL for searching $sql_where = ""; @@ -120,7 +120,7 @@ class plugin_listview extends plugin_base { } // Loading language field - $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_".$app->listform->listDef['name']."_list.lng"; + $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_".$app->listform->listDef['name']."_list.lng"; include $lng_file; $listTpl->setVar($wb); @@ -193,13 +193,13 @@ class plugin_listview extends plugin_base { $listTpl->setVar('phpsessid', session_id()); - $listTpl->setVar('theme', $_SESSION['s']['theme']); + $listTpl->setVar('theme', $_SESSION['s']['theme'], true); $listTpl->setVar('html_content_encoding', $app->_conf['html_content_encoding']); $listTpl->setVar('delete_confirmation', $app->lng('delete_confirmation')); //print_r($_SESSION); if(isset($_SESSION['s']['module']['name'])) { - $listTpl->setVar('app_module', $_SESSION['s']['module']['name']); + $listTpl->setVar('app_module', $_SESSION['s']['module']['name'], true); } if(isset($_SESSION['s']['user']) && $_SESSION['s']['user']['typ'] == 'admin') { $listTpl->setVar('is_admin', 1); @@ -209,7 +209,7 @@ class plugin_listview extends plugin_base { } /* Show username */ if(isset($_SESSION['s']['user'])) { - $listTpl->setVar('cpuser', $_SESSION['s']['user']['username']); + $listTpl->setVar('cpuser', $_SESSION['s']['user']['username'], true); $listTpl->setVar('logout_txt', $app->lng('logout_txt')); /* Show search field only for normal users, not mail users */ if(stristr($_SESSION['s']['user']['username'], '@')){ diff --git a/interface/lib/classes/remote.d/admin.inc.php b/interface/lib/classes/remote.d/admin.inc.php index 099216f20b6a66790b87abf1ab9a8e2e8d5e35a5..8b0c4730e80a0d4e0587baacc6772a227198a750 100644 --- a/interface/lib/classes/remote.d/admin.inc.php +++ b/interface/lib/classes/remote.d/admin.inc.php @@ -48,7 +48,7 @@ class remoting_admin extends remoting { * @param array permissions * @author "ispcomm", improved by M. Cramer */ - public function update_record_permissions($tablename, $index_field, $index_value, $permissions) { + public function update_record_permissions($session_id, $tablename, $index_field, $index_value, $permissions) { global $app; if(!$this->checkPerm($session_id, 'admin_record_permissions')) { @@ -156,6 +156,122 @@ class remoting_admin extends remoting { return false; } } + + // config_value_* functions --------------------------------------------------------------------------------------- + + //* Get config_value details + public function config_value_get($session_id, $group, $name) + { + global $app; + + if(!$this->checkPerm($session_id, 'config_value_get')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + // validate fields + if($group == '' || $name == '') { + throw new SoapFault('field_empty_error', 'Group and name parameter may not be empty.'); + return false; + } + + return $app->db->queryOneRecord('SELECT * FROM sys_config WHERE `group` = ? AND `name` = ?', $group, $name); + } + + //* Add a config_value record + public function config_value_add($session_id, $group, $name, $value) + { + global $app; + + if(!$this->checkPerm($session_id, 'config_value_add')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + // validate fields + if($group == '' || $name == '' || $value == '') { + throw new SoapFault('field_empty_error', 'Group, name, and value parameter may not be empty.'); + return false; + } + + if(is_array($app->db->queryOneRecord('SELECT * FROM sys_config WHERE `group` = ? AND `name` = ?', $group, $name))) { + throw new SoapFault('record_unique_error', 'Group plus name field combination is not unique.'); + return false; + } + + return $app->db->query('INSERT INTO sys_config (`group`,`name`,`value`) VALUES (?,?,?)',$group,$name,$value); + } + + //* Update config_value record + public function config_value_update($session_id, $group, $name, $value) + { + global $app; + + if(!$this->checkPerm($session_id, 'config_value_update')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + // validate fields + if($group == '' || $name == '' || $value == '') { + throw new SoapFault('field_empty_error', 'Group, name, and value parameter may not be empty.'); + return false; + } + + if(!is_array($app->db->queryOneRecord('SELECT * FROM sys_config WHERE `group` = ? AND `name` = ?', $group, $name))) { + throw new SoapFault('record_nonexist_error', 'There is no record with this group plus name field combination.'); + return false; + } + + return $app->db->query('UPDATE sys_config SET `value` = ? WHERE `group` = ? AND `name` = ?',$value,$group,$name); + } + + //* Replace config_value record + public function config_value_replace($session_id, $group, $name, $value) + { + global $app; + + if(!$this->checkPerm($session_id, 'config_value_replace')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + // validate fields + if($group == '' || $name == '' || $value == '') { + throw new SoapFault('field_empty_error', 'Group, name, and value parameter may not be empty.'); + return false; + } + + if(is_array($app->db->queryOneRecord('SELECT * FROM sys_config WHERE `group` = ? AND `name` = ?', $group, $name))) { + return $app->db->query('UPDATE sys_config SET `value` = ? WHERE `group` = ? AND `name` = ?',$value,$group,$name); + } else { + return $app->db->query('INSERT INTO sys_config (`group`,`name`,`value`) VALUES (?,?,?)',$group,$name,$value); + } + } + + //* Delete config_value record + public function config_value_delete($session_id, $group, $name) + { + global $app; + + if(!$this->checkPerm($session_id, 'config_value_delete')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + // validate fields + if($group == '' || $name == '') { + throw new SoapFault('field_empty_error', 'Group and name parameter may not be empty.'); + return false; + } + + if(!is_array($app->db->queryOneRecord('SELECT * FROM sys_config WHERE `group` = ? AND `name` = ?', $group, $name))) { + throw new SoapFault('record_nonexist_error', 'There is no record with this group plus name field combination.'); + return false; + } + + return $app->db->query('DELETE FROM sys_config WHERE `group` = ? AND `name` = ?',$group,$name); + } } diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index a4e9fca013315294ad2275fea3b5bb853ce70498..f7b0d139747eb4217056a417e3f1e98e72cf4d82 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -240,7 +240,7 @@ class remoting_dns extends remoting { return false; } - if(!preg_match('/^[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/i', $origin)){ + if(!preg_match('/^([a-z0-9][a-z0-9\-]+[a-z0-9]|[a-z0-9]{2})(\.[a-z]{2,63})+$/i', $origin)){ throw new SoapFault('no_domain_found', 'Invalid domain name.'); return false; } @@ -303,34 +303,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_aaaa_add($session_id, $client_id, $params) + public function dns_aaaa_add($session_id, $client_id, $params, $update_serial=false) { if(!$this->checkPerm($session_id, 'dns_aaaa_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); } //* Update a record - public function dns_aaaa_update($session_id, $client_id, $primary_id, $params) + public function dns_aaaa_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { if(!$this->checkPerm($session_id, 'dns_aaaa_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); return $affected_rows; } //* Delete a record - public function dns_aaaa_delete($session_id, $primary_id) + public function dns_aaaa_delete($session_id, $primary_id, $update_serial=false) { if(!$this->checkPerm($session_id, 'dns_aaaa_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)); return $affected_rows; } @@ -351,34 +354,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_a_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_a_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_a_delete($session_id, $primary_id) + 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; } @@ -399,34 +405,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_alias_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_alias_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_alias_delete($session_id, $primary_id) + 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; } @@ -447,34 +456,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_cname_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_cname_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_cname_delete($session_id, $primary_id) + 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; } @@ -495,34 +507,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_hinfo_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_hinfo_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_hinfo_delete($session_id, $primary_id) + 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; } @@ -543,34 +558,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_mx_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_mx_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_mx_delete($session_id, $primary_id) + 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; } @@ -591,34 +609,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_ns_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_ns_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_ns_delete($session_id, $primary_id) + 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; } @@ -639,34 +660,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_ptr_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_ptr_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_ptr_delete($session_id, $primary_id) + 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; } @@ -687,34 +711,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_rp_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_rp_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_rp_delete($session_id, $primary_id) + 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; } @@ -735,34 +762,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_srv_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_srv_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_srv_delete($session_id, $primary_id) + 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; } @@ -783,34 +813,37 @@ class remoting_dns extends remoting { } //* Add a record - public function dns_txt_add($session_id, $client_id, $params) + 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); } //* Update a record - public function dns_txt_update($session_id, $client_id, $primary_id, $params) + 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; } //* Delete a record - public function dns_txt_delete($session_id, $primary_id) + 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; } @@ -884,6 +917,32 @@ class remoting_dns extends remoting { } } + private function increase_serial($session_id, $client_id, $params) { + global $app; + if(!isset($params['zone']) && isset($params['dns_rr_id'])) { + $tmp = $app->db->queryOneRecord('SELECT zone FROM dns_rr WHERE id = ?',$params['dns_rr_id']); + $params['zone'] = $tmp['zone']; + unset($tmp); + } + $soa = $this->dns_zone_get($session_id, $params['zone']); + $serial=$soa['serial']; + $serial_date = intval(substr($serial, 0, 8)); + $count = intval(substr($serial, 8, 2)); + $current_date = date("Ymd"); + if($serial_date >= $current_date){ + $count += 1; + if ($count > 99) { + $serial_date += 1; + $count = 0; + } + $count = str_pad($count, 2, "0", STR_PAD_LEFT); + $new_serial = $serial_date.$count; + } else { + $new_serial = $current_date.'01'; + } + $soa['serial'] = $new_serial; + $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 25bc1e8f3f64441f9700f14497fab5137a39d3d9..0a1f890b968742df8dd3874a66bc3393c79d59c9 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -219,8 +219,8 @@ class remoting_mail extends remoting { if (!isset($params['gid'])) $params['gid'] = -1; if (!isset($params['maildir_format'])) $params['maildir_format'] = 'maildir'; - $affected_rows = $this->insertQuery('../mail/form/mail_user.tform.php', $client_id, $params); - return $affected_rows; + $mailuser_id = $this->insertQuery('../mail/form/mail_user.tform.php', $client_id, $params); + return $mailuser_id; } //* Update mail user diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index a5dfd52b19926828b736124a1a4e7fb3c55f9a36..8522ebc6fd802cd07ebd32936b5359de22d27ad8 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -142,11 +142,13 @@ class remoting { // get the ip for a hostname unset($allowed_ips[$i]); $temp=dns_get_record($allowed, DNS_A+DNS_AAAA); - foreach($temp as $t) { - if(isset($t['ip'])) $allowed_ips[] = $t['ip']; - if(isset($t['ipv6'])) $allowed_ips[] = $t['ipv6']; + if(is_array($temp) && !empty($temp)) { + foreach($temp as $t) { + if(isset($t['ip'])) $allowed_ips[] = $t['ip']; + if(isset($t['ipv6'])) $allowed_ips[] = $t['ipv6']; + } + unset($temp); } - unset($temp); } } $allowed_ips[] = '127.0.0.1'; diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php index 0f313de6bded35da1314350a971861a9609f276c..a5a5d0c31c49c647f33d5a0eca3310133820e05c 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -308,7 +308,9 @@ class remoting_lib extends tform_base { global $app; $username = $params["username"]; $clear_password = $params["password"]; + $language = $params['language']; $client_id = $app->functions->intval($client_id); + if(!isset($params['_ispconfig_pw_crypted']) || $params['_ispconfig_pw_crypted'] != 1) $password = $app->auth->crypt_password(stripslashes($clear_password)); else $password = $clear_password; $params = array($username); @@ -318,8 +320,15 @@ class remoting_lib extends tform_base { } else { $pwstring ="" ; } + + $langstring = ''; + if (!empty($language)) { + $langstring = ', language = ?'; + $params[] = $language; + } + $params[] = $client_id; - $sql = "UPDATE sys_user set username = ? $pwstring WHERE client_id = ?"; + $sql = "UPDATE sys_user set username = ? $pwstring $langstring WHERE client_id = ?"; $app->db->query($sql, true, $params); } diff --git a/interface/lib/classes/searchform_actions.inc.php b/interface/lib/classes/searchform_actions.inc.php index e48eb8544de5bfbfe2c5efd2fd419ba1eb184e08..c4372982c0ae5fbd0a7d94683b57d9dd1e96a538 100644 --- a/interface/lib/classes/searchform_actions.inc.php +++ b/interface/lib/classes/searchform_actions.inc.php @@ -151,10 +151,10 @@ class searchform_actions { global $app; // Language File setzen - $lng_file = ISPC_WEB_PATH.'/lang/lib/lang/'.$_SESSION['s']['language'].'_list.lng'; + $lng_file = ISPC_WEB_PATH.'/lang/lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_list.lng'; if(!file_exists($lng_file)) $lng_file = ISPC_WEB_PATH.'/lang/lib/lang/en_'.'_list.lng'; include $lng_file; - $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_".$app->searchform->listDef['name']."_search.lng"; + $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_".$app->searchform->listDef['name']."_search.lng"; if(!file_exists($lng_file)) $lng_file = 'lib/lang/en_'.$app->searchform->listDef['name']."_search.lng"; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/lib/classes/session.inc.php b/interface/lib/classes/session.inc.php index f4a90beda9ae46276598d9381e0206dcf0e3ac4c..3e93cd4314faded0b1f32e7a0e0b094a183de693 100644 --- a/interface/lib/classes/session.inc.php +++ b/interface/lib/classes/session.inc.php @@ -36,7 +36,11 @@ class session { private $permanent = false; function __construct($session_timeout = 0) { - $this->db = new db; + try { + $this->db = new db; + } catch (Exception $e) { + $this->db = false; + } $this->timeout = $session_timeout; } diff --git a/interface/lib/classes/simplepie.inc.php b/interface/lib/classes/simplepie.inc.php index 5d36c09d34b62c7bf2fb1b235099b5344ac6de99..00106ee2114e9edd3feaa497ba8923923fe3f9a6 100644 --- a/interface/lib/classes/simplepie.inc.php +++ b/interface/lib/classes/simplepie.inc.php @@ -13338,7 +13338,7 @@ class SimplePie_Parse_Date } // Convert the number of seconds to an integer, taking decimals into account - $second = round($match[6] + $match[7] / pow(10, strlen($match[7]))); + $second = @round($match[6] + (float)$match[7] / @pow(10, (int)strlen($match[7]))); return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone; } diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index 503bd24eb83db64554010944519b9c79898b6bb1..920541cacc9cc9eb71c8051c1660467de43d1094 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -115,30 +115,42 @@ class tform extends tform_base { // Show the same tab again in case of an error $active_tab = $_SESSION["s"]["form"]["tab"]; } + + if(!preg_match('/^[a-zA-Z0-9_]{0,50}$/',$active_tab)) { + die('Invalid next tab name.'); + } return $active_tab; } function getCurrentTab() { + if(!preg_match('/^[a-zA-Z0-9_]{0,50}$/',$_SESSION["s"]["form"]["tab"])) { + die('Invalid current tab name.'); + } return $_SESSION["s"]["form"]["tab"]; } function isReadonlyTab($tab, $primary_id) { global $app, $conf; + + if(isset($this->formDef['tabs'][$tab]['readonly']) && $this->formDef['tabs'][$tab]['readonly'] == true) { - // Add backticks for incomplete table names. - if(stristr($this->formDef['db_table'], '.')) { - $escape = ''; - } else { - $escape = '`'; - } + // Add backticks for incomplete table names. + if(stristr($this->formDef['db_table'], '.')) { + $escape = ''; + } else { + $escape = '`'; + } - $sql = "SELECT sys_userid FROM ?? WHERE ?? = ?"; - $record = $app->db->queryOneRecord($sql, $this->formDef['db_table'], $this->formDef['db_table_idx'], $primary_id); + $sql = "SELECT sys_userid FROM ?? WHERE ?? = ?"; + $record = $app->db->queryOneRecord($sql, $this->formDef['db_table'], $this->formDef['db_table_idx'], $primary_id); - // return true if the readonly flag of the form is set and the current loggedin user is not the owner of the record. - if(isset($this->formDef['tabs'][$tab]['readonly']) && $this->formDef['tabs'][$tab]['readonly'] == true && $record['sys_userid'] != $_SESSION["s"]["user"]["userid"]) { - return true; + // return true if the readonly flag of the form is set and the current loggedin user is not the owner of the record. + if($record['sys_userid'] != $_SESSION["s"]["user"]["userid"]) { + return true; + } else { + return false; + } } else { return false; } diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index e0ff25145575407e09e062b40f57e462e99c5c2d..f277c51274f3e8e4f9c5f03814f07367c7a8fcf2 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -287,7 +287,7 @@ class tform_actions { global $app, $conf; $app->tpl->setVar("error", "
  • ".$app->tform->errorMessage."
  • "); - $app->tpl->setVar($this->dataRecord); + $app->tpl->setVar($this->dataRecord, null, true); $this->onShow(); } diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index 06c016f25c3c568ac00f958e3f920a71e2255a19..3b82b48376a9f111e767633b63fae0874290431c 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -134,7 +134,7 @@ class tform_base { $this->module = $module; $wb = array(); - include_once ISPC_ROOT_PATH.'/lib/lang/'.$_SESSION['s']['language'].'.lng'; + include_once ISPC_ROOT_PATH.'/lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; if(is_array($wb)) $wb_global = $wb; @@ -143,7 +143,7 @@ class tform_base { if(!file_exists($lng_file)) $lng_file = "lib/lang/en_".$this->formDef["name"].".lng"; include $lng_file; } else { - $lng_file = "../$module/lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng"; + $lng_file = "../$module/lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_".$this->formDef["name"].".lng"; if(!file_exists($lng_file)) $lng_file = "../$module/lib/lang/en_".$this->formDef["name"].".lng"; include $lng_file; } @@ -245,7 +245,7 @@ class tform_base { */ function decode($record, $tab) { global $conf, $app; - if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab does not exist or the tab is empty (TAB: $tab)."); + if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab does not exist or the tab is empty (TAB: ".$app->functions->htmlentities($tab).")."); return $this->_decode($record, $tab, false); } @@ -416,7 +416,7 @@ class tform_base { $this->action = $action; if(!is_array($this->formDef)) $app->error("No form definition found."); - if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: $tab)."); + if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: ".$app->functions->htmlentities($tab).")."); /* CSRF PROTECTION */ // generate csrf protection id and key @@ -473,9 +473,8 @@ class tform_base { if(is_array($field['value'])) { foreach($field['value'] as $k => $v) { $selected = ($k == $val)?' SELECTED':''; - if(isset($this->wordbook[$v])) - $v = $this->wordbook[$v]; - $v = $app->functions->htmlentities($v); + if(isset($this->wordbook[$v])) $v = $this->wordbook[$v]; + else $v = $app->functions->htmlentities($v); $out .= "\r\n"; } } @@ -869,7 +868,7 @@ class tform_base { function encode($record, $tab, $dbencode = true) { global $app; - if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab is empty or does not exist (TAB: $tab)."); + if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab is empty or does not exist (TAB: ".$app->functions->htmlentities($tab).")."); return $this->_encode($record, $tab, $dbencode, false); } @@ -914,7 +913,7 @@ class tform_base { $returnval = preg_replace('/\s+/', '', $returnval); break; case 'STRIPTAGS': - $returnval = strip_tags(preg_replace('/]*>/is', '', $returnval)); + $returnval = strip_tags(preg_replace('/]*?>.*?<\/script>/is', '', $returnval)); break; case 'STRIPNL': $returnval = str_replace(array("\n","\r"),'', $returnval); @@ -1447,7 +1446,7 @@ class tform_base { } if(!is_array($this->formDef)) $app->error("Form definition not found."); - if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: $tab)."); + if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: ".$app->functions->htmlentities($tab).")."); return $this->_getSQL($record, $tab, $action, $primary_id, $sql_ext_where, false); } diff --git a/interface/lib/classes/tform_tpl_generator.inc.php b/interface/lib/classes/tform_tpl_generator.inc.php index f841a09a69f2a08e0c6e46dbdb6dc3cf59642b1d..f0d9649b9c8aed746d46177bf02ddc1e6d483038 100644 --- a/interface/lib/classes/tform_tpl_generator.inc.php +++ b/interface/lib/classes/tform_tpl_generator.inc.php @@ -298,7 +298,7 @@ class tform_tpl_generator { function lng_add($lang, $formDef) { global $go_api, $go_info, $conf; - $lng_file = "lib/lang/".$conf["language"]."_".$formDef['name'].".lng"; + $lng_file = "lib/lang/".$app->functions->check_language($conf["language"])."_".$formDef['name'].".lng"; if(is_file($lng_file)) { include $lng_file; } else { diff --git a/interface/lib/classes/tpl.inc.php b/interface/lib/classes/tpl.inc.php index 2104cf61a5f50ea4dbd3e2bd52eb19c496158496..efaf4c072a8ceac226b9fb5d243fdadb4fa0d9f7 100644 --- a/interface/lib/classes/tpl.inc.php +++ b/interface/lib/classes/tpl.inc.php @@ -226,21 +226,26 @@ if (!defined('vlibTemplateClassLoaded')) { * using the keys as variable names and the values as variable values. * @param mixed $k key to define variable name * @param mixed $v variable to assign to $k + * @param bool $encode if set to true use htmlentities on values * @return boolean true/false * @access public */ - public function setVar($k, $v = null) + public function setVar($k, $v = null, $encode = false) { + global $app; + if (is_array($k)) { foreach($k as $key => $value){ $key = ($this->OPTIONS['CASELESS']) ? strtolower(trim($key)) : trim($key); if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $key) && $value !== null ) { + if($encode == true) $value = $app->functions->htmlentities($value); $this->_vars[$key] = $value; } } } else { if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k) && $v !== null) { if ($this->OPTIONS['CASELESS']) $k = strtolower($k); + if($encode == true) $v = $app->functions->htmlentities($v); $this->_vars[trim($k)] = $v; } else { return false; diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php index 256b483c4f377a470b2175096024ebee1b26eeaf..4652e2a07b1ddc65f5776a4538ec34d4ab382db4 100644 --- a/interface/lib/classes/validate_client.inc.php +++ b/interface/lib/classes/validate_client.inc.php @@ -174,10 +174,8 @@ class validate_client { } } } - - $client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"); - - if($client){ + try { + $client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"); $params = array('countryCode' => $cc, 'vatNumber' => $vn); try{ $r = $client->checkVat($params); @@ -191,12 +189,12 @@ class validate_client { } } - // This foreach shows every single line of the returned information - /* - foreach($r as $k=>$prop){ - echo $k . ': ' . $prop; - } - */ + // This foreach shows every single line of the returned information + /* + foreach($r as $k=>$prop){ + echo $k . ': ' . $prop; + } + */ } catch(SoapFault $e) { //echo 'Error, see message: '.$e->faultstring; @@ -217,7 +215,7 @@ class validate_client { break; } } - } else { + } catch(SoapFault $e){ // Connection to host not possible, europe.eu down? // this shouldn't be the user's fault, so we return no error } diff --git a/interface/lib/classes/validate_cron.inc.php b/interface/lib/classes/validate_cron.inc.php index e59cd4e30b6ac671c6694e33e63c766067c29f0c..9a2af803663f84f1b93734890b1da9edf2ee1cb2 100644 --- a/interface/lib/classes/validate_cron.inc.php +++ b/interface/lib/classes/validate_cron.inc.php @@ -52,7 +52,7 @@ class validate_cron { if($parsed["scheme"] != "http" && $parsed["scheme"] != "https") return $this->get_error($validator['errmsg']); - if(preg_match("'^([a-z0-9][a-z0-9\-]{0,62}\.)+([A-Za-z0-9\-]{2,30})$'i", $parsed["host"]) == false) return $this->get_error($validator['errmsg']); + if(preg_match("'^([a-z0-9][a-z0-9_\-]{0,62}\.)+([A-Za-z0-9\-]{2,30})$'i", $parsed["host"]) == false) return $this->get_error($validator['errmsg']); } if(strpos($field_value, "\n") !== false || strpos($field_value, "\r") !== false || strpos($field_value, chr(0)) !== false) { return $this->get_error($validator['errmsg']); diff --git a/interface/lib/classes/validate_domain.inc.php b/interface/lib/classes/validate_domain.inc.php index b572467fe08fbdeeb434a3b9ae81241f932f0991..57187805cf926289f450b31088cf3540b36a7fb8 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -51,6 +51,9 @@ class validate_domain { $result = $this->_check_unique($field_value); if(!$result) return $this->get_error('domain_error_unique'); + + $pattern = '/\.acme\.invalid$/'; + if(preg_match($pattern, $field_value)) return $this->get_error('domain_error_acme_invalid'); } /* Validator function for sub domain */ @@ -65,6 +68,9 @@ class validate_domain { $result = $this->_check_unique($field_value); if(!$result) return $this->get_error('domain_error_unique'); + + $pattern = '/\.acme\.invalid$/'; + if(preg_match($pattern, $field_value)) return $this->get_error('domain_error_acme_invalid'); } /* Validator function for alias domain */ @@ -77,6 +83,9 @@ class validate_domain { $result = $this->_check_unique($field_value); if(!$result) return $this->get_error('domain_error_unique'); + + $pattern = '/\.acme\.invalid$/'; + if(preg_match($pattern, $field_value)) return $this->get_error('domain_error_acme_invalid'); } /* Validator function for checking the auto subdomain of a web/aliasdomain */ @@ -141,10 +150,48 @@ class validate_domain { } } + /* Check nginx directives */ + function web_nginx_directives($field_name, $field_value, $validator) { + global $app; + + if(trim($field_value) != '') { + $security_config = $app->getconf->get_security_config('ids'); + + if($security_config['nginx_directives_scan_enabled'] == 'yes') { + + // Get blacklist + $blacklist_path = '/usr/local/ispconfig/security/nginx_directives.blacklist'; + if(is_file('/usr/local/ispconfig/security/nginx_directives.blacklist.custom')) $blacklist_path = '/usr/local/ispconfig/security/nginx_directives.blacklist.custom'; + if(!is_file($blacklist_path)) $blacklist_path = realpath(ISPC_ROOT_PATH.'/../security/nginx_directives.blacklist'); + + $directives = explode("\n",$field_value); + $regex = explode("\n",file_get_contents($blacklist_path)); + $blocked = false; + $blocked_line = ''; + + if(is_array($directives) && is_array($regex)) { + foreach($directives as $directive) { + $directive = trim($directive); + foreach($regex as $r) { + if(preg_match(trim($r),$directive)) { + $blocked = true; + $blocked_line .= $directive.'
    '; + }; + } + } + } + } + } + + if($blocked === true) { + return $this->get_error('nginx_directive_blocked_error').' '.$blocked_line; + } + } + /* internal validator function to match regexp */ function _regex_validate($domain_name, $allow_wildcard = false) { - $pattern = '/^' . ($allow_wildcard == true ? '(\*\.)?' : '') . '[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/'; + $pattern = '/^' . ($allow_wildcard == true ? '(\*\.)?' : '') . '[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,30}$/'; return preg_match($pattern, $domain_name); } diff --git a/interface/lib/classes/validate_password.inc.php b/interface/lib/classes/validate_password.inc.php index f36f16220cfca1ae3f76cd600a4bd864639300b5..a0f6de2e969f3d21fec6546f41f01d5790d07a47 100644 --- a/interface/lib/classes/validate_password.inc.php +++ b/interface/lib/classes/validate_password.inc.php @@ -71,7 +71,7 @@ class validate_password { } else if ($points == 1) { if ($length >= 5 && $length <= 6) { return 2; - } else if (length >= 7 && length <=10) { + } else if ($length >= 7 && $length <=10) { return 3; } else { return 4; diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index b1518d96bbb88130625606c151a35b88c9377041..edd7a720a6315780ad82f41ff24793a60e3e765f 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -1,5 +1,6 @@ diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index 0605e02a125722a6dfa41b6f8831c0e99a2e2cc3..5a95eff4ea4e3757fd6fcf4737efbfddada0dabe 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -140,11 +140,11 @@ $wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'This client has $wb['yes_txt'] = 'Ja'; $wb['no_txt'] = 'Nee'; $wb['None'] = 'Geen'; -$wb['strength_1'] = 'Weak'; +$wb['strength_1'] = 'Zwak'; $wb['strength_2'] = 'Fair'; -$wb['strength_3'] = 'Good'; -$wb['strength_4'] = 'Strong'; -$wb['strength_5'] = 'Very Strong'; +$wb['strength_3'] = 'Goed'; +$wb['strength_4'] = 'Sterk'; +$wb['strength_5'] = 'Zeer sterk'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; @@ -158,5 +158,8 @@ $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['datalog_changes_close_txt'] = 'Close'; +$wb['datalog_changes_close_txt'] = 'Sluiten'; +$wb['datalog_status_i_mail_ml_membership'] = 'Create mailing list member'; +$wb['datalog_status_u_mail_ml_membership'] = 'Update mailing list member'; +$wb['datalog_status_d_mail_ml_membership'] = 'Delete mailing list member'; ?> diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index a1503b2677cd52858cb1b70349ca4201f5ed5a7e..bcf71df1a66bf23d487782db3a48acde3d70ca17 100644 --- a/interface/lib/lang/ru.lng +++ b/interface/lib/lang/ru.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Средний'; $wb['strength_3'] = 'Хороший'; $wb['strength_4'] = 'Стойкий'; $wb['strength_5'] = 'Очень стойкий'; -$wb['weak_password_txt'] = 'Выбранный пароль не соответствует требованиям безопасности. Он должен быть как минимум {chars} символов в длину и стойкость \"{strength}\".'; +$wb['weak_password_txt'] = 'Выбранный пароль не соответствует требованиям безопасности. Он должен быть как минимум {chars} символов в длину и стойкость \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'Выбранный пароль не соответствует требованиям безопасности. Он должен быть как минимум {chars} символов в длину.'; $wb['security_check1_txt'] = 'Проверка разрешений безопасности:'; $wb['security_check2_txt'] = 'не удалось.'; diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php index 5b898f84c667eaf5f298f87a29983b7f7a26053d..a4e973973e66629deca2949698168b4acf559801 100644 --- a/interface/lib/plugins/mail_user_filter_plugin.inc.php +++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php @@ -148,17 +148,20 @@ class mail_user_filter_plugin { } $content .= 'if size :over '.intval($page_form->dataRecord["searchterm"]).$unit.' {'."\n"; } else { - - if($page_form->dataRecord["source"] == 'Header') { - $parts = explode(':',trim($page_form->dataRecord["searchterm"])); - $page_form->dataRecord["source"] = trim($parts[0]); - unset($parts[0]); - $page_form->dataRecord["searchterm"] = trim(implode(':',$parts)); - unset($parts); + if($page_form->dataRecord["source"] == 'Detail') { + $content .= 'if envelope :detail :regex "to" ["'; + } else { + if($page_form->dataRecord["source"] == 'Header') { + $parts = explode(':',trim($page_form->dataRecord["searchterm"])); + $page_form->dataRecord["source"] = trim($parts[0]); + unset($parts[0]); + $page_form->dataRecord["searchterm"] = trim(implode(':',$parts)); + unset($parts); + } + + $content .= 'if header :regex ["'.strtolower($page_form->dataRecord["source"]).'"] ["'; } - $content .= 'if header :regex ["'.strtolower($page_form->dataRecord["source"]).'"] ["'; - $searchterm = preg_quote($page_form->dataRecord["searchterm"]); $searchterm = str_replace( array( diff --git a/interface/web/admin/directive_snippets_edit.php b/interface/web/admin/directive_snippets_edit.php index de803581e07d373a23bfce05e490772d041788b4..b12da0a79bf28f000b0c11103db13482557608ad 100644 --- a/interface/web/admin/directive_snippets_edit.php +++ b/interface/web/admin/directive_snippets_edit.php @@ -70,9 +70,9 @@ class page_action extends tform_actions { if($this->id > 0){ if($this->dataRecord['master_directive_snippets_id'] > 0){ $is_master = true; - $app->tpl->setVar("name", $this->dataRecord['name']); - $app->tpl->setVar("type", $this->dataRecord['type']); - $app->tpl->setVar("snippet", $this->dataRecord['snippet']); + $app->tpl->setVar("name", $this->dataRecord['name'], true); + $app->tpl->setVar("type", $this->dataRecord['type'], true); + $app->tpl->setVar("snippet", $this->dataRecord['snippet'], true); } } $app->tpl->setVar("is_master", $is_master); diff --git a/interface/web/admin/firewall_edit.php b/interface/web/admin/firewall_edit.php index 4ee72aa954c6baf3302154e359c03b7a70aef261..01cad2b815b1c09775bf0a95ac31b57e01dcefec 100644 --- a/interface/web/admin/firewall_edit.php +++ b/interface/web/admin/firewall_edit.php @@ -57,7 +57,7 @@ class page_action extends tform_actions { if($this->id ==0) { //* new record $server_list = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE server_id NOT IN (SELECT server_id FROM firewall) ORDER BY server_name"); if(is_array($server_list)) { - foreach( $server_list as $server) $server_select .= "\r\n"; + foreach( $server_list as $server) $server_select .= "\r\n"; } $app->tpl->setVar('server_id', $server_select); } diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php index 4d34fefb59c02e15e63e8f8375691d12ad310607..544cb8b85537df42206ea5c861f20d0050bfb69b 100644 --- a/interface/web/admin/form/directive_snippets.tform.php +++ b/interface/web/admin/form/directive_snippets.tform.php @@ -71,6 +71,12 @@ $form["tabs"]['directive_snippets'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'directive_snippets_name_error_unique'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/admin/form/groups.tform.php b/interface/web/admin/form/groups.tform.php index c7b3f74fdb37c793f321e809317b3a0ae9d7da65..5bcbe6279f7a82a3e5d49c4b08c67f9e313c7266 100644 --- a/interface/web/admin/form/groups.tform.php +++ b/interface/web/admin/form/groups.tform.php @@ -81,6 +81,12 @@ $form["tabs"]['groups'] = array ( 'name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'regex' => '/^.{1,30}$/', 'errmsg' => 'name_err', 'default' => '', @@ -94,6 +100,10 @@ $form["tabs"]['groups'] = array ( 'description' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'regex' => '', 'errmsg' => '', 'default' => '', diff --git a/interface/web/admin/form/iptables.tform.php b/interface/web/admin/form/iptables.tform.php index 7d09ca3f5e1b3bd40875ad3a94754d3530e6ab1c..76d747020d3966a7390d141c7df50c2262687764 100644 --- a/interface/web/admin/form/iptables.tform.php +++ b/interface/web/admin/form/iptables.tform.php @@ -52,6 +52,12 @@ $form["tabs"]['iptables'] = array ( 'source_ip' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '', @@ -60,6 +66,12 @@ $form["tabs"]['iptables'] = array ( 'destination_ip' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '', @@ -68,6 +80,12 @@ $form["tabs"]['iptables'] = array ( 'singleport' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '', @@ -76,6 +94,12 @@ $form["tabs"]['iptables'] = array ( 'multiport' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '', @@ -84,6 +108,12 @@ $form["tabs"]['iptables'] = array ( 'state' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '', diff --git a/interface/web/admin/form/server.tform.php b/interface/web/admin/form/server.tform.php index 1bf079e1b0bb08791cdddb7f70b9797e5720e504..95dca6c33b5cb552b29692b3c0f27f2e76924024 100644 --- a/interface/web/admin/form/server.tform.php +++ b/interface/web/admin/form/server.tform.php @@ -61,6 +61,12 @@ $form["tabs"]['services'] = array ( 'server_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 622af2344b2211f1f5e77179162295b06df4bd0f..a1a4dfb19a28e1ed7baa2c7724adf1b831e8b128 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -145,6 +145,12 @@ $form["tabs"]['server'] = array( 'validators' => array(0 => array('type' => 'NOTEMPTY', 'errmsg' => 'nameservers_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '40', 'maxlength' => '255' @@ -177,6 +183,20 @@ $form["tabs"]['server'] = array( 'width' => '40', 'maxlength' => '255' ), + 'backup_tmp' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '/tmp/', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'tmpdir_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => "/^\/[a-zA-Z0-9\.\-\_\/]{3,128}$/", + 'errmsg'=> 'tmpdir_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), 'backup_dir_is_mount' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -316,6 +336,12 @@ $form["tabs"]['server'] = array( 'monit_user' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -344,6 +370,12 @@ $form["tabs"]['server'] = array( 'munin_user' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -391,6 +423,17 @@ $form["tabs"]['server'] = array( 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), + 'log_retention' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISPOSITIVE', + 'errmsg'=> 'log_retention_error_ispositive'), + ), + 'default' => '30', + 'value' => '', + 'width' => '4', + 'maxlength' => '4' + ), 'migration_mode' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -454,6 +497,12 @@ $form["tabs"]['mail'] = array( 'dkim_path' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '/var/lib/amavis/dkim', 'value' => '', 'width' => '40', @@ -555,6 +604,12 @@ $form["tabs"]['mail'] = array( 'relayhost' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -563,6 +618,12 @@ $form["tabs"]['mail'] = array( 'relayhost_user' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -753,6 +814,12 @@ $form["tabs"]['web'] = array( 'website_autoalias' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -792,6 +859,12 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), + 'nginx_enable_pagespeed' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), 'nginx_vhost_conf_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -882,6 +955,12 @@ $form["tabs"]['web'] = array( 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), + 'logging' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'yes', + 'value' => array('yes' => 'Yes', 'anon' => 'Anonymize IP', 'no' => 'No') + ), 'overtraffic_notify_admin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -1049,6 +1128,24 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), + 'php_default_name' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'Default', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_default_name_error_empty'), + ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 2 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), + 'width' => '40', + 'maxlength' => '255' + ), 'php_fpm_init_script' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -1169,6 +1266,12 @@ $form["tabs"]['web'] = array( 'validators' => array( 0 => array('type' => 'NOTEMPTY', 'errmsg' => 'htaccess_allow_override_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '40', 'maxlength' => '255' @@ -1195,6 +1298,12 @@ $form["tabs"]['web'] = array( 'validators' => array(0 => array('type' => 'NOTEMPTY', 'errmsg' => 'apps_vhost_port_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '40', 'maxlength' => '255' @@ -1206,6 +1315,12 @@ $form["tabs"]['web'] = array( 'validators' => array(0 => array('type' => 'NOTEMPTY', 'errmsg' => 'apps_vhost_ip_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '40', 'maxlength' => '255' @@ -1213,6 +1328,12 @@ $form["tabs"]['web'] = array( 'apps_vhost_servername' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -1221,6 +1342,12 @@ $form["tabs"]['web'] = array( 'awstats_conf_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -1499,6 +1626,12 @@ $form["tabs"]['xmpp'] = array( //################################# // Begin Datatable fields //################################# + 'xmpp_daemon' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '20', + 'value' => array('prosody' => 'Prosody', 'metronome' => 'Metronome') + ), 'xmpp_use_ipv6' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -1520,6 +1653,12 @@ $form["tabs"]['xmpp'] = array( 'xmpp_server_admins' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'admin@service.com, superuser@service.com', 'value' => '', 'width' => '15' @@ -1528,6 +1667,12 @@ $form["tabs"]['xmpp'] = array( 'xmpp_modules_enabled' => array( 'datatype' => 'TEXT', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => "saslauth, tls, dialback, disco, discoitems, version, uptime, time, ping, admin_adhoc, admin_telnet, bosh, posix, announce, offline, webpresence, mam, stream_management, message_carbons", 'value' => '', 'separator' => "," diff --git a/interface/web/admin/form/server_php.tform.php b/interface/web/admin/form/server_php.tform.php index d5b0c5ff73781ac56b3da21dc0d8f598c0eac892..67e54ec6b5dacd7d085100e11dcd60d400b347be 100644 --- a/interface/web/admin/form/server_php.tform.php +++ b/interface/web/admin/form/server_php.tform.php @@ -112,12 +112,25 @@ $form["tabs"]['php_name'] = array ( 'validators' => array(0 => array('type' => 'NOTEMPTY', 'errmsg' => 'server_php_name_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', 'width' => '40', 'maxlength' => '255' ), + 'active' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + //################################# // ENDE Datenbankfelder //################################# @@ -135,6 +148,12 @@ $form["tabs"]['php_fastcgi'] = array( 'php_fastcgi_binary' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -143,6 +162,12 @@ $form["tabs"]['php_fastcgi'] = array( 'php_fastcgi_ini_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -165,6 +190,12 @@ $form["tabs"]['php_fpm'] = array( 'php_fpm_init_script' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -173,6 +204,12 @@ $form["tabs"]['php_fpm'] = array( 'php_fpm_ini_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', @@ -181,6 +218,12 @@ $form["tabs"]['php_fpm'] = array( 'php_fpm_pool_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '40', diff --git a/interface/web/admin/form/software_package.tform.php b/interface/web/admin/form/software_package.tform.php index 1db7056acc1b0b779962fbcdc6820fca5257e34d..b8368d545751d19216fac8c69c588dc62b1cad48 100644 --- a/interface/web/admin/form/software_package.tform.php +++ b/interface/web/admin/form/software_package.tform.php @@ -87,6 +87,12 @@ $form["tabs"]['software_package'] = array ( 'package_title' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'validators' => '', 'default' => '', 'value' => '', @@ -99,6 +105,12 @@ $form["tabs"]['software_package'] = array ( 'package_key' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'validators' => '', 'default' => '', 'value' => '', diff --git a/interface/web/admin/form/software_repo.tform.php b/interface/web/admin/form/software_repo.tform.php index 6d1c50f921ea643d7d3f68121c3b46c902acc365..cbf68b3a3588e5e31d2c998e87c3b28b3fe20134 100644 --- a/interface/web/admin/form/software_repo.tform.php +++ b/interface/web/admin/form/software_repo.tform.php @@ -92,6 +92,12 @@ $form["tabs"]['software_repo'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'repo_name_unique'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -108,6 +114,12 @@ $form["tabs"]['software_repo'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'repo_name_unique'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -119,6 +131,12 @@ $form["tabs"]['software_repo'] = array ( 'repo_username' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 9e00f29f89584a8d7dfcf30c37f672e8d3354935..ea1ce1aaf773bc0cabb0e179c337e72a26af45ad 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -294,7 +294,11 @@ $form["tabs"]['mail'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), 'formtype' => 'TEXT', 'default' => '', @@ -305,6 +309,12 @@ $form["tabs"]['mail'] = array ( 'admin_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -313,7 +323,7 @@ $form["tabs"]['mail'] = array ( 'smtp_enabled' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', - 'default' => 'n', + 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), 'smtp_host' => array ( @@ -323,10 +333,14 @@ $form["tabs"]['mail'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), 'formtype' => 'TEXT', - 'default' => '', + 'default' => 'localhost', 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -334,6 +348,12 @@ $form["tabs"]['mail'] = array ( 'smtp_port' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '25', 'value' => '', 'width' => '30', @@ -342,6 +362,12 @@ $form["tabs"]['mail'] = array ( 'smtp_user' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -431,6 +457,10 @@ $form["tabs"]['domains'] = array ( 'new_domain_html' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '' ), @@ -475,12 +505,24 @@ $form["tabs"]['misc'] = array ( 'company_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), 'custom_login_text' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), @@ -497,18 +539,36 @@ $form["tabs"]['misc'] = array ( 'dashboard_atom_url_admin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'http://www.ispconfig.org/atom', 'value' => '' ), 'dashboard_atom_url_reseller' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'http://www.ispconfig.org/atom', 'value' => '' ), 'dashboard_atom_url_client' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'http://www.ispconfig.org/atom', 'value' => '' ), @@ -542,6 +602,20 @@ $form["tabs"]['misc'] = array ( 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), + 'use_ipsuggestions' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'ipsuggestions_max' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), 'maintenance_mode' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -551,36 +625,72 @@ $form["tabs"]['misc'] = array ( 'admin_dashlets_left' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), 'admin_dashlets_right' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), 'reseller_dashlets_left' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), 'reseller_dashlets_right' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), 'client_dashlets_left' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), 'client_dashlets_right' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '' ), diff --git a/interface/web/admin/form/tpl_default.tform.php b/interface/web/admin/form/tpl_default.tform.php index df52bbec5f3633e64090e2c96557ca0ad2fc4417..baa84d7b309ecb999de03f7098a10c5a17f790be 100644 --- a/interface/web/admin/form/tpl_default.tform.php +++ b/interface/web/admin/form/tpl_default.tform.php @@ -87,6 +87,12 @@ $form["tabs"]['basic'] = array ( 'username' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'validators' => '', 'default' => 'global', 'value' => 'global', @@ -97,6 +103,12 @@ $form["tabs"]['basic'] = array ( 'logo_url' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'validators' => '', 'default' => '', 'value' => '', diff --git a/interface/web/admin/language_add.php b/interface/web/admin/language_add.php index f58a2db16dbb6ce159149a8a6e17e86e9a7b6ddc..f36fd946d2de8523279c47286deae3f2617044d4 100644 --- a/interface/web/admin/language_add.php +++ b/interface/web/admin/language_add.php @@ -104,7 +104,7 @@ $app->tpl->setVar('_csrf_id',$csrf_token['csrf_id']); $app->tpl->setVar('_csrf_key',$csrf_token['csrf_key']); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_add.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_language_add.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/admin/language_complete.php b/interface/web/admin/language_complete.php index d28e89aa2576ee51d8b6e41030c10fdbded2c3c4..234685498d0486e8b7086e34e69e7c91f5e84d10 100644 --- a/interface/web/admin/language_complete.php +++ b/interface/web/admin/language_complete.php @@ -166,7 +166,7 @@ $app->tpl->setVar('_csrf_id',$csrf_token['csrf_id']); $app->tpl->setVar('_csrf_key',$csrf_token['csrf_key']); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_complete.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_language_complete.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/admin/language_edit.php b/interface/web/admin/language_edit.php index c94a5eb2804ed1ef0323a960d49ef58e2c621f5e..f17c4ae9a8477c0e0792701bef2ef0c9090f934a 100644 --- a/interface/web/admin/language_edit.php +++ b/interface/web/admin/language_edit.php @@ -104,7 +104,7 @@ $app->tpl->setVar('_csrf_key',$csrf_token['csrf_key']); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_edit.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_language_edit.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/admin/language_export.php b/interface/web/admin/language_export.php index 44bc787bd33eefdc29a28f5f3ee00bba9cddd921..3f54e53af8f590e1fa071ba5cd622c19b9e882d5 100644 --- a/interface/web/admin/language_export.php +++ b/interface/web/admin/language_export.php @@ -111,7 +111,7 @@ if(isset($_POST['lng_select']) && $error == '') { $app->tpl->setVar('msg', $msg); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_export.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_language_export.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/admin/language_import.php b/interface/web/admin/language_import.php index 2e702198048a1de1fdb5a787d9aebe0b6d16a496..6a2d0b5ba65a2e14afb0a8a0f756439388209fb1 100644 --- a/interface/web/admin/language_import.php +++ b/interface/web/admin/language_import.php @@ -194,7 +194,7 @@ $app->tpl->setVar('_csrf_id',$csrf_token['csrf_id']); $app->tpl->setVar('_csrf_key',$csrf_token['csrf_key']); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_import.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_language_import.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/admin/language_list.php b/interface/web/admin/language_list.php index 2cb28dc187f1a7f2649715029ae4b584df690576..b935bddd9599bd13d645f3e23af4a35fd2c68127 100644 --- a/interface/web/admin/language_list.php +++ b/interface/web/admin/language_list.php @@ -97,7 +97,7 @@ $app->tpl->setLoop('records', $language_files_list); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_language_list.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_language_list.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng index 935e432bf3097a9d980f0b92f8fe2e5121187bf3..d0504005e310ec5464c4c9fda2eb637bd008f75a 100644 --- a/interface/web/admin/lib/lang/ar_remote_user.lng +++ b/interface/web/admin/lib/lang/ar_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 69c6427c68c3d6ee2b2e10d547effc4a6302e94b..55d4c4ffc0f07577c9687a2e1bb96e5a9d9ae4ec 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/ar_server_php.lng b/interface/web/admin/lib/lang/ar_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/ar_server_php.lng +++ b/interface/web/admin/lib/lang/ar_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ar_users.lng b/interface/web/admin/lib/lang/ar_users.lng index 93988a091191dcebd70066e6bab74cd91afd2a82..dcbc4f4727145c78a9a6a70b4ac3cca5b3ecc0c7 100644 --- a/interface/web/admin/lib/lang/ar_users.lng +++ b/interface/web/admin/lib/lang/ar_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng index 38dca5ab27d7077440fced6292962e63c0e3803b..6eac31e4fe33008bf87047588e55969d450fa76c 100644 --- a/interface/web/admin/lib/lang/bg_remote_user.lng +++ b/interface/web/admin/lib/lang/bg_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 88d19cd60a9f3be6b75752795a357569ba9a545b..74e0405cd765e9ee362fdb5432281b6a9027313d 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_php.lng b/interface/web/admin/lib/lang/bg_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/bg_server_php.lng +++ b/interface/web/admin/lib/lang/bg_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/bg_users.lng b/interface/web/admin/lib/lang/bg_users.lng index 468e0ac218d4ba4bbb77513c0ea96820cce6a67f..e8dc631a59b6d652228c0eb9d311c93cdc63daba 100644 --- a/interface/web/admin/lib/lang/bg_users.lng +++ b/interface/web/admin/lib/lang/bg_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/br.lng b/interface/web/admin/lib/lang/br.lng index 9780b0a0b23acb5a1f0842ff77cc4f74d8ce6f5e..c4df3fe58bcaf2acb7aa86fb208e245366be4383 100644 --- a/interface/web/admin/lib/lang/br.lng +++ b/interface/web/admin/lib/lang/br.lng @@ -26,7 +26,6 @@ $wb['FastCGI'] = 'FastCGI'; $wb['Jailkit'] = 'Jailkit'; $wb['Rescue'] = 'Manutenção'; $wb['Server IP addresses'] = 'Endereço IP do servidor'; -$wb['Server IPv4 mapping'] = 'Mapeamento IPv4 do servidor'; $wb['Additional PHP Versions'] = 'Versões adicionais do php'; $wb['Firewall'] = 'Firewall'; $wb['Interface'] = 'Interface'; diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index 7479efe19d71b60ac977585b16b1445f7d6e8036..95657a283d4c41f737d5915bec2529742bd6a787 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -6,59 +6,45 @@ $wb['username_error_unique'] = 'O nome de usuário deve ser exclusivo'; $wb['username_error_empty'] = 'O nome de usuário não pode estar em branco'; $wb['password_error_empty'] = 'A senha não pode estar em branco'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['Server functions'] = 'Funções de servidor'; -$wb['Record permission changes'] = 'Permissão de alteração de registros'; -$wb['Domaintool functions'] = 'Funções de domínios'; -$wb['Quota functions'] = 'Funções de cotas'; $wb['Mail domain functions'] = 'Funções de domínios de e-mail'; -$wb['Mail domain alias functions'] = 'Funções de apelidos de domínios de e-mail'; -$wb['Mail mailinglist functions'] = 'Funções de listas de e-mail'; $wb['Mail user functions'] = 'Funções de usuários de e-mail'; $wb['Mail alias functions'] = 'Funções de apelidos de domínio de e-mail'; $wb['Mail forward functions'] = 'Funções de encaminhamento de e-mail'; $wb['Mail catchall functions'] = 'Funções de de contas cata tudo'; $wb['Mail transport functions'] = 'Funções de transporte de e-mail'; -$wb['Mail relay functions'] = 'Funções de retransmissão de e-mail'; $wb['Mail whitelist functions'] = 'Funções de lista branca de e-mail'; $wb['Mail blacklist functions'] = 'Funções de lista negra de e-mail'; $wb['Mail spamfilter user functions'] = 'Funções de filtros anti-spam para contas de e-mail'; $wb['Mail spamfilter policy functions'] = 'Funções de política de anti-spam para contas de e-mail'; $wb['Mail fetchmail functions'] = 'Funções de contas de busca de e-mails'; -$wb['Mail spamfilter whitelist functions'] = 'Funções de lista branca para filtros anti-spam'; -$wb['Mail spamfilter blacklist functions'] = 'Funções de lista negra para filtros anti-spam'; $wb['Mail user filter functions'] = 'Funções de filtro de e-mails para contas de e-mail'; -$wb['Mail Backup functions'] = 'Funções de backup de e-mails'; $wb['Mail filter functions'] = 'Funções de filtros de e-mail'; -$wb['Monitor functions'] = 'Funções de monitoramento'; $wb['Client functions'] = 'Funções de cliente'; $wb['Sites cron functions'] = 'Funções de tarefas no cron para sites'; $wb['Sites database functions'] = 'Funções de banco de dados para sites'; -$wb['Sites Protected folder functions'] = 'Funções de pasta protegida para sites'; $wb['Sites FTP-User functions'] = 'Funções de usuários ftp para sites'; $wb['Sites Shell-User functions'] = 'Funções de usuários shell para sites'; $wb['Sites Domain functions'] = 'Funções de domínios de sites'; -$wb['Sites Backup functions'] = 'Funções de backup para sites'; $wb['Sites Aliasdomain functions'] = 'Função de apelidos de domínio de sites'; $wb['Sites Subdomain functions'] = 'Função de subdomínio de sites'; -$wb['Sites APS functions'] = 'Funções de aplicativos para sites'; $wb['DNS zone functions'] = 'Funções de zona dns'; $wb['DNS a functions'] = 'Funções de registro A dns'; $wb['DNS aaaa functions'] = 'Funções de registro AAAA dns'; $wb['DNS alias functions'] = 'Funções de registro Alias dns'; $wb['DNS cname functions'] = 'Funções de registro CNAME dns'; -$wb['DNS ds functions'] = 'Funções de registro DS dns'; $wb['DNS hinfo functions'] = 'Funções de registro HINFO dns'; -$wb['DNS loc functions'] = 'Funções de registro LOC dns'; $wb['DNS mx functions'] = 'Funções de registro MX dns'; -$wb['DNS tlsa functions'] = 'Funções de registro TLSA dns'; $wb['DNS ns functions'] = 'Funções de registro NS dns'; $wb['DNS ptr functions'] = 'Funções de registro PTR dns'; $wb['DNS rp functions'] = 'Funções de registro RP dns'; $wb['DNS srv functions'] = 'Funções de registro SRV dns'; $wb['DNS txt functions'] = 'Funções de registro TXT dns'; -$wb['OpenVZ VM functions'] = 'Funções de máquinas virtuais do OPENVZ'; $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['remote_access_txt'] = 'Acesso remoto'; +$wb['remote_ips_txt'] = 'Endereço(s) IPs ou nome do servidor com acesso remoto (separado por vírgula ou em branco para qualquer 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'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 2e60a761a712c61b6901eeaa6d9647cec507cfb8..70512ea93501c02f335ce9e271d1ee1cdfc37d51 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -266,7 +266,7 @@ $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['enable_spdy_txt'] = 'Tornar SPDY disponível'; +$wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponível'; $wb['web_settings_txt'] = 'Servidor de páginas'; $wb['xmpp_server_txt'] = 'Servidor XMPP'; $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; @@ -283,4 +283,13 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Hora do backup'; $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'; ?> diff --git a/interface/web/admin/lib/lang/br_server_php.lng b/interface/web/admin/lib/lang/br_server_php.lng index 21e199652d5ea6e228e218144d93b289ef917510..459b4d9e0ccd25a92a356d622d9a6148eee1deb3 100644 --- a/interface/web/admin/lib/lang/br_server_php.lng +++ b/interface/web/admin/lib/lang/br_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Caminho do diretório do php.ini'; $wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização do PHP-FPM'; $wb['php_fpm_ini_dir_txt'] = 'Caminho do diretório do php.ini'; $wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório de faixas (pool) do PHP-FPM'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 46b496d89c3390446f20d3caa9a50e15366710d1..70430a6063a900f26f192efec4311436566d12bb 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente $wb['customer_no_start_txt'] = 'Valor inicial do código do cliente'; $wb['customer_no_counter_txt'] = 'Contador de código do cliente'; $wb['session_timeout_txt'] = 'Duração da sessão (minutos)'; -$wb['session_allow_endless_txt'] = 'Habilitar "Manter-me conectado"'; +$wb['session_allow_endless_txt'] = 'Habilitar \"Manter-me conectado\"'; $wb['min_password_length_txt'] = 'Comprimento mínimo da senha'; $wb['min_password_strength_txt'] = 'Dificuldade mínima da senha'; $wb['company_name_txt'] = 'Nome da empresa no título da página'; diff --git a/interface/web/admin/lib/lang/br_users.lng b/interface/web/admin/lib/lang/br_users.lng index b1be5f6da73eba9a57786b33cf61b2e4f8a90d20..d16bcf1cb181b47daf13787d167c19727e7600e1 100644 --- a/interface/web/admin/lib/lang/br_users.lng +++ b/interface/web/admin/lib/lang/br_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'A senhas coincidem.'; $wb['username_error_collision'] = 'O nome do usuário não pode conter as palavras reservadas -web- ou -web- seguidas por um número.'; $wb['client_not_admin_err'] = 'Um usuário definido como cliente não pode ser configurado com o tipo: admin (administrador).'; $wb['lost_password_function_txt'] = 'Função reconfigurar senha perdida disponível'; +$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/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng index 4868e39bdbcb40324dc0acc1ecaa41fee90b5aeb..2fc633b555d240c15457f3ec2fdd48d9e55a756e 100644 --- a/interface/web/admin/lib/lang/ca_remote_user.lng +++ b/interface/web/admin/lib/lang/ca_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 57de732bfa4d41b6e5567f0aabf0a43c9ca3e170..fbd3e1ea0a0937e785f22b3eae55a81580fa95ab 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -264,7 +264,7 @@ $wb['network_filesystem_txt'] = 'Network Filesystem'; $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_php.lng b/interface/web/admin/lib/lang/ca_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/ca_server_php.lng +++ b/interface/web/admin/lib/lang/ca_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ca_users.lng b/interface/web/admin/lib/lang/ca_users.lng index 93988a091191dcebd70066e6bab74cd91afd2a82..dcbc4f4727145c78a9a6a70b4ac3cca5b3ecc0c7 100644 --- a/interface/web/admin/lib/lang/ca_users.lng +++ b/interface/web/admin/lib/lang/ca_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/cz.lng b/interface/web/admin/lib/lang/cz.lng index 957ddffebf24f2573eff609ccf4f45b87486cd7a..a54f348b3b27415c0c7fff3758ef4e29e911dc06 100644 --- a/interface/web/admin/lib/lang/cz.lng +++ b/interface/web/admin/lib/lang/cz.lng @@ -1,52 +1,64 @@ diff --git a/interface/web/admin/lib/lang/cz_login_as.lng b/interface/web/admin/lib/lang/cz_login_as.lng deleted file mode 100644 index 3f8e8491fc0aa2ebcb3336d30b96a37d633639d2..0000000000000000000000000000000000000000 --- a/interface/web/admin/lib/lang/cz_login_as.lng +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng index 17c4f05b5627f710aae5d2d114ce88149c2906d4..aeacc442ca975da331d2d6df8d3248a5fb5a0465 100644 --- a/interface/web/admin/lib/lang/cz_remote_user.lng +++ b/interface/web/admin/lib/lang/cz_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 3bf09679ca915525a75492f45dae7f14d6c9708b..54acda96fc3cf05a86b3f35a0cfe55c174a14b1c 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'; @@ -261,7 +261,7 @@ $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.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY available'; +$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'] = 'Použít IPv6'; @@ -283,4 +283,14 @@ $wb['hostname_error_regex'] = 'Neplatný název hostitele.'; $wb['backup_time_txt'] = 'Spustit zálohovaní v'; $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'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_php.lng b/interface/web/admin/lib/lang/cz_server_php.lng index 10aba05dd76089c892ff4ee5fe88a7f4bce5e210..615431c3559ed694eda6fb9aff9d2bb5845943cc 100644 --- a/interface/web/admin/lib/lang/cz_server_php.lng +++ b/interface/web/admin/lib/lang/cz_server_php.lng @@ -13,4 +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'; ?> diff --git a/interface/web/admin/lib/lang/cz_users.lng b/interface/web/admin/lib/lang/cz_users.lng index 443ff2ec828001708fb38947006adbf6383fdd32..b517d7329096cb130e610db0e968d13e0ce4cefc 100644 --- a/interface/web/admin/lib/lang/cz_users.lng +++ b/interface/web/admin/lib/lang/cz_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Hesla se shodují.'; $wb['username_error_collision'] = 'Uživatelské jméno nesmí být web nebo web a číslo.'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 1d2755fe41c147b7aa59ed8b8f8f331c2343bdcf..e3ac6988871a5612049edec159b0795325853602 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -81,6 +81,7 @@ $wb['awstats_data_dir_txt'] = 'AWStats Datenverzeichnis'; $wb['awstats_pl_txt'] = 'AWStats awstats.pl Script'; $wb['awstats_buildstaticpages_pl_txt'] = 'AWStats awstats_buildstaticpages.pl Script'; $wb['backup_dir_txt'] = 'Backupverzeichnis'; +$wb['backup_tmp_txt'] = 'Backup tmp-Dir (zip)'; $wb['named_conf_local_path_txt'] = 'BIND named.conf.local Pfad'; $wb['php_ini_path_cgi_txt'] = 'CGI php.ini Pfad'; $wb['php_ini_path_apache_txt'] = 'Apache php.ini Pfad'; @@ -103,6 +104,8 @@ $wb['nginx_user_txt'] = 'Nginx Benutzer'; $wb['nginx_group_txt'] = 'Nginx Gruppe'; $wb['nginx_cgi_socket_txt'] = 'Nginx CGI Socket'; $wb['backup_dir_error_empty'] = 'Backup Verzeichnis ist leer.'; +$wb['tmpdir_path_error_empty'] = 'Tmp-Dir Pfad ist leer.'; +$wb['tmpdir_path_error_regex'] = 'Invalid Tmp-Dir Pfad.'; $wb['maildir_path_error_empty'] = 'Maildir Pfad ist leer.'; $wb['homedir_path_error_empty'] = 'Homedir Pfad ist leer.'; $wb['mailuser_uid_error_empty'] = 'Mail Benutzer UID ist leer.'; @@ -269,12 +272,13 @@ $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['enable_spdy_txt'] = 'Stellt SPDY zur Verfügung'; +$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'; $wb['disabled_txt'] = 'Disabled'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; +$wb['xmpp_daemon_txt'] = 'XMPP Daemon'; $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'; @@ -288,4 +292,11 @@ $wb['xmpp_port_pastebin_txt'] = 'Pastebin'; $wb['xmpp_port_bosh_txt'] = 'BOSH'; $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['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'] = 'Beschreibung Standard PHP'; +$wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; ?> diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng index 9b26ea3c6d4feb878dc80518474e488524352ba6..67dad7064ae56db3e87a1e8e2885dcaee572ffe2 100644 --- a/interface/web/admin/lib/lang/de_server_php.lng +++ b/interface/web/admin/lib/lang/de_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis'; $wb['php_fpm_init_script_txt'] = 'Pfad zum PHP-FPM Init Script'; $wb['php_fpm_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis'; $wb['php_fpm_pool_dir_txt'] = 'Pfad zum PHP-FPM Pool Verzeichnis'; +$wb['active_txt'] = 'Aktiv'; ?> diff --git a/interface/web/admin/lib/lang/de_server_php_list.lng b/interface/web/admin/lib/lang/de_server_php_list.lng index d775fc6c00b535376441399a9c4d6f3b016b3e43..fe9a72ea150a4fc513dfea3f1ddf6c1ad1933f9b 100644 --- a/interface/web/admin/lib/lang/de_server_php_list.lng +++ b/interface/web/admin/lib/lang/de_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Neue PHP Version hinzufügen'; $wb['client_id_txt'] = 'Kunde'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Aktiv'; ?> diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng index db37a605bc984ed6a708e6bc8802d979a397d3c8..255e7bca0bfa5b7161d651766dd3d2247198c327 100644 --- a/interface/web/admin/lib/lang/de_users.lng +++ b/interface/web/admin/lib/lang/de_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; $wb['username_error_collision'] = 'Der Benutzername darf nicht web oder web gefolgt von einer Zahl sein.'; $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin'; $wb['lost_password_function_txt'] = 'Passwort vergessen Funktion steht zur Verfügung'; +$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/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng index 710c239e008b9d3ee78716dfbafc557cf7fc3f1a..80f61c8929202a85fbd89c972fb8bd111c840653 100644 --- a/interface/web/admin/lib/lang/dk_remote_user.lng +++ b/interface/web/admin/lib/lang/dk_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index b7e9b3f831ae19fd4973c41a2ac02ee85b9dd75a..61139aa544cfb396dbee72d51f90d6256fe3b0c8 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -265,7 +265,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $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'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_php.lng b/interface/web/admin/lib/lang/dk_server_php.lng index cc821ec2f2335a34c0dbd27e283916cb20842df2..ff8586f5ea7b5b9fb50d821c59fb34428d3a3436 100644 --- a/interface/web/admin/lib/lang/dk_server_php.lng +++ b/interface/web/admin/lib/lang/dk_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Sti til php.ini mappe'; $wb['php_fpm_init_script_txt'] = 'Sti til PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Sti til php.ini mappe'; $wb['php_fpm_pool_dir_txt'] = 'Sti til PHP-FPM pool mappe'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/dk_users.lng b/interface/web/admin/lib/lang/dk_users.lng index be8947ba20f84950924f4785b56d14cbc0456268..2e86ab4ca9b497646bc4a2759eca5c379940d9c4 100644 --- a/interface/web/admin/lib/lang/dk_users.lng +++ b/interface/web/admin/lib/lang/dk_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Adgangskoderne stemmer overens.'; $wb['username_error_collision'] = 'Brugernavn må ikke være web eller web plus et tal.\\"'; $wb['client_not_admin_err'] = 'En bruger der hører til en klient kan ikke indstilles til typen: 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.'; ?> diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng index ddffd7072da6b080d51310e9f64bc86f48d74ea5..c38f1de2f05ff525cbcc2f89e13327e71078d4e2 100644 --- a/interface/web/admin/lib/lang/el_remote_user.lng +++ b/interface/web/admin/lib/lang/el_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 00266d17620295e0c942853dbcd8b81c146f79e9..38600769ce8e64dbcab8cda133d041916dbe9ec7 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/el_server_php.lng b/interface/web/admin/lib/lang/el_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/el_server_php.lng +++ b/interface/web/admin/lib/lang/el_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng index 7351d6522aec4c8b703e486a40763caab156cc69..f0307b95eca8d9ab65a653fc96032eb67b64e0a4 100644 --- a/interface/web/admin/lib/lang/el_users.lng +++ b/interface/web/admin/lib/lang/el_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index b851dae68f8f68b8a7019b7055fddba61535072c..7a960e552a3e2df861d67ac2de26079fe9929913 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -90,6 +90,7 @@ $wb["awstats_data_dir_txt"] = 'awstats data folder'; $wb["awstats_pl_txt"] = 'awstats.pl script'; $wb["awstats_buildstaticpages_pl_txt"] = 'awstats_buildstaticpages.pl script'; $wb["backup_dir_txt"] = 'Backup directory'; +$wb["backup_tmp_txt"] = 'Backup tmp directory for zip'; $wb["named_conf_local_path_txt"] = 'BIND named.conf.local path'; $wb["php_ini_path_cgi_txt"] = 'CGI php.ini path'; $wb["php_ini_path_apache_txt"] = 'Apache php.ini path'; @@ -101,6 +102,8 @@ $wb["fastcgi_config_syntax_txt"] = 'FastCGI config syntax'; $wb["backup_mode_txt"] = 'Backup mode'; $wb["backup_mode_userzip"] = 'Backup web files owned by web user as zip'; $wb["backup_mode_rootgz"] = 'Backup all files in web directory as root user'; +$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.'; +$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.'; $wb["backup_time_txt"] = 'Backup time'; $wb["server_type_txt"] = 'Server Type'; $wb["nginx_vhost_conf_dir_txt"] = 'Nginx Vhost config dir'; @@ -271,9 +274,10 @@ $wb['network_filesystem_txt'] = 'Network Filesystem'; $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 available'; +$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; +$wb['xmpp_daemon_txt'] = 'XMPP Daemon'; $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'; @@ -290,4 +294,11 @@ $wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled"; $wb["mailinglist_manager_txt"] = 'Mailinglist Manager'; $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['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'; ?> diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/en_server_php.lng +++ b/interface/web/admin/lib/lang/en_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/en_server_php_list.lng b/interface/web/admin/lib/lang/en_server_php_list.lng index b402fd1ed19978b32027a9ed16e7b44f241db93e..62cbe6168714b18ba4fca490280c30c945e09e7c 100644 --- a/interface/web/admin/lib/lang/en_server_php_list.lng +++ b/interface/web/admin/lib/lang/en_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/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 945d60372f6cd76d85c95a60de3ce15ff5b084e5..ca8a3ebe8fb20c8b4c385cf8bb1c780436195ebe 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -95,4 +95,7 @@ $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; +$wb['use_ipsuggestions_txt'] = 'Enable IP suggestions dropdown'; +$wb['use_ipsuggestions_descr_txt'] = 'Shows a dropdown list of IP addresses below a field where an IP address is needed for both IPv4 and IPv6.'; +$wb['ipsuggestions_max_txt'] = 'Max IP suggestions'; ?> diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng index 9c57f1db8bbbb4bf5acf4f5216a452252e880c47..81f3742a35d3774757a17ebf57390fe4509ce9dd 100644 --- a/interface/web/admin/lib/lang/en_users.lng +++ b/interface/web/admin/lib/lang/en_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number."'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng index 3eab509426843bc733ca71a8af02ffa2eb56b49e..7cefa1e5dbebcabb655413e0f1f8c91ab379edbe 100755 --- a/interface/web/admin/lib/lang/es_remote_user.lng +++ b/interface/web/admin/lib/lang/es_remote_user.lng @@ -44,4 +44,7 @@ $wb['Sites Subdomain functions'] = 'Funciones para sub-dominios'; $wb['username_error_empty'] = 'El nombre de usuario no puede esta vacío'; $wb['username_error_unique'] = 'En nombre de usuario debe ser único'; $wb['username_txt'] = 'Nombre de usuario'; +$wb['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index a0ce5ddbe4a9c93e2677996c0e9cb5cda31f7f9a..cb0fbf121ac88f7d846ac7a74e228214e0350da8 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -62,7 +62,7 @@ $wb['do_not_try_rescue_mongodb_txt'] = 'Deshabilitar monitorización de MongoDB' $wb['do_not_try_rescue_mysql_txt'] = 'Deshabilitar monitorización de MySQL'; $wb['enable_ip_wildcard_txt'] = 'Activar comodín IP (*)'; $wb['enable_sni_txt'] = 'Habilitar SNI'; -$wb['enable_spdy_txt'] = 'Hacer que SPDY esté disponible'; +$wb['enable_spdy_txt'] = 'Hacer que SPDY/HTTP2 esté disponible'; $wb['fastcgi_alias_error_empty'] = 'El alias de FastCGI está vacío.'; $wb['fastcgi_alias_error_regex'] = 'El alias de fastcgi es inválido.'; $wb['fastcgi_alias_txt'] = 'Alias de FastCGI'; @@ -283,4 +283,14 @@ $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/es_server_php.lng b/interface/web/admin/lib/lang/es_server_php.lng index 4d063113bbb3479cf73d7236df997a10c19e5c2b..762fa0ed8c90c67fd1bfa4a9765858f3ce4da7a2 100755 --- a/interface/web/admin/lib/lang/es_server_php.lng +++ b/interface/web/admin/lib/lang/es_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fpm_init_script_txt'] = 'Ruta al archivo de arranque de PHP-FPM'; $wb['php_fpm_pool_dir_txt'] = 'Ruta al directorio de procesos de PHP-FPM'; $wb['server_id_txt'] = 'Servidor'; $wb['server_php_name_error_empty'] = 'El campo Nombre no puede estar vacío.'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/es_users.lng b/interface/web/admin/lib/lang/es_users.lng index 1e3690b977f62f712da41d9e25e958a444024d37..65baeb666f1930be22896b18c4fce3ad52b8622d 100755 --- a/interface/web/admin/lib/lang/es_users.lng +++ b/interface/web/admin/lib/lang/es_users.lng @@ -32,4 +32,5 @@ $wb['username_error_collision'] = 'El nombre de usuario no puede ser el del web $wb['username_txt'] = 'Nombre de usuario'; $wb['username_unique'] = 'Ya existe un usuario con ese nombre de usuario.'; $wb['vorname_txt'] = 'Primer nombre'; +$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/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng index 9e0abc7d75b350e671fd17c2a4249058cbde32e7..2ae3420d621c94c3168d9b04d73806aae6e37d2c 100644 --- a/interface/web/admin/lib/lang/fi_remote_user.lng +++ b/interface/web/admin/lib/lang/fi_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6c44a61b224d4f4981c7c069294c3bd10ae861e1..6e08e9841199ac1a2e9391b22d4ef2dfa3000ccf 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_php.lng b/interface/web/admin/lib/lang/fi_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/fi_server_php.lng +++ b/interface/web/admin/lib/lang/fi_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng index 24968c8fd0dcfed943288d168baf3a20829068d9..199601f5207d7889a1aaffe66660cdc77e990a35 100755 --- a/interface/web/admin/lib/lang/fi_users.lng +++ b/interface/web/admin/lib/lang/fi_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng index 55d6e16b3deb9928387b5ddafbf9136a48e112d2..1594e60fb4c8baacc2e1e0cba5152de0e4a73419 100644 --- a/interface/web/admin/lib/lang/fr_remote_user.lng +++ b/interface/web/admin/lib/lang/fr_remote_user.lng @@ -44,4 +44,7 @@ $wb['generate_password_txt'] = 'Générer un mot de passe'; $wb['repeat_password_txt'] = 'Répéter le mot de passe'; $wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.'; $wb['password_match_txt'] = 'Les mots de passe correspondent.'; +$wb['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 864f8dcfb9344dc920c7dfc824d2f5fd7bafaf4e..2045dbb8bd3d07e4dddb2ab791cdb20fa3c67073 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -264,7 +264,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_php.lng b/interface/web/admin/lib/lang/fr_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/fr_server_php.lng +++ b/interface/web/admin/lib/lang/fr_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/fr_users.lng b/interface/web/admin/lib/lang/fr_users.lng index a20f0a6f0ddc16e87a45c3bc9e3360bbc0698b1c..6cc3e116b4dd6e0533bd76f9ddf34e0f7adcdbcb 100644 --- a/interface/web/admin/lib/lang/fr_users.lng +++ b/interface/web/admin/lib/lang/fr_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Les mots de passe correspondent.'; $wb['username_error_collision'] = 'Le nom d\'utilisateur ne peut pas commencer par web ou web suivi d\'un nombre.'; $wb['client_not_admin_err'] = 'Un utilisateur affilié à un client ne peut pas être changé en type admin'; $wb['lost_password_function_txt'] = 'La fonction mot de passe oublié est disponible'; +$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/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng index f932fc22962e5201285effb8cebc0d881fc50dd4..069177e5ed09db186cdbb8dc2de65f498ab5e031 100644 --- a/interface/web/admin/lib/lang/hr_remote_user.lng +++ b/interface/web/admin/lib/lang/hr_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 6434d30e3e38965d6e4ba14be405972d9ec0a33e..99d69fec0c464f1e6e70a17539b9fde86154debe 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_php.lng b/interface/web/admin/lib/lang/hr_server_php.lng index 585332f6d0605ac957e9488f9191940578cab8a0..5bfc1dd6d20d59cb3f1f28dda7755c122a84c1ad 100644 --- a/interface/web/admin/lib/lang/hr_server_php.lng +++ b/interface/web/admin/lib/lang/hr_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Putanja do php.ini direktorija'; $wb['php_fpm_init_script_txt'] = 'Putanja do PHP-FPM init skripte'; $wb['php_fpm_ini_dir_txt'] = 'Putanja do php.ini direktorija'; $wb['php_fpm_pool_dir_txt'] = 'Putanja do PHP-FPM pool direktorija'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng index 15e12a52f083d74604507a33e352d6eaeb1116cf..7be3f968f27d22f0a6c1aef99cd5312dc2593d80 100644 --- a/interface/web/admin/lib/lang/hr_users.lng +++ b/interface/web/admin/lib/lang/hr_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Šifre su identične.'; $wb['username_error_collision'] = 'Korisničko ime ne može biti web ili web sa brojem.\\"'; $wb['client_not_admin_err'] = 'Korisnik koji je u grupi klijenti ne može biti 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.'; ?> diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng index a9767ac77b4d7053c8184ff6bcd19a7854139549..bae9d82f53ceaac588e1baa311655edec36fc7cb 100644 --- a/interface/web/admin/lib/lang/hu_remote_user.lng +++ b/interface/web/admin/lib/lang/hu_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index ec2476f0a8ecfd072c4e267dccdfa0aadd262012..24d2fcb054c3e6465092e9dc78d02be0fad107ff 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_php.lng b/interface/web/admin/lib/lang/hu_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/hu_server_php.lng +++ b/interface/web/admin/lib/lang/hu_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/hu_users.lng b/interface/web/admin/lib/lang/hu_users.lng index 126821da4424c163962fd8251e598a79cb7d1df1..e2cf25fb79521f342e6a167e339f2fa1fdb0109d 100644 --- a/interface/web/admin/lib/lang/hu_users.lng +++ b/interface/web/admin/lib/lang/hu_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng index f5d44a8af1b3919cda834824d142ff00c992496c..cc6efb627ac03112e9204fcb1299126812d0da66 100644 --- a/interface/web/admin/lib/lang/id_remote_user.lng +++ b/interface/web/admin/lib/lang/id_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 1c4e088457e534cfefa1851445354f88224903d8..8abd5d6be0b158d94055d0c230a910183e81ad2b 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/id_server_php.lng b/interface/web/admin/lib/lang/id_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/id_server_php.lng +++ b/interface/web/admin/lib/lang/id_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/id_users.lng b/interface/web/admin/lib/lang/id_users.lng index 72641831d79c9dd6bc4409bb457c61163dc597e6..f9e961192c09a9bc6e68ccb8d0c2a90e68e8f1ec 100644 --- a/interface/web/admin/lib/lang/id_users.lng +++ b/interface/web/admin/lib/lang/id_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng index 790d59f5d56f1c42e2972752ee3363d0c77c56a5..caef58a8c68b35ac6445cf6ec47485f16c89c985 100644 --- a/interface/web/admin/lib/lang/it_remote_user.lng +++ b/interface/web/admin/lib/lang/it_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 1d0f5a865061ec6661af2b3f1b543cf5ab4b9e43..baacc1bb9faea87e6b4e741100636e7bda1bac92 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -264,7 +264,7 @@ $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 available'; +$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'; @@ -281,7 +281,17 @@ $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['backup_time_txt'] = 'Backup time'; -$wb["mailinglist_manager_txt"] = 'Gestore delle Liste' +$wb["mailinglist_manager_txt"] = 'Gestore delle Liste'; $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'; ?> diff --git a/interface/web/admin/lib/lang/it_server_php.lng b/interface/web/admin/lib/lang/it_server_php.lng index 1b8d4ffc7408a81bca113cf19776270e24095842..805528f376d582be160fd802b36c26530f8b3e22 100644 --- a/interface/web/admin/lib/lang/it_server_php.lng +++ b/interface/web/admin/lib/lang/it_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Percorso per php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Percorso per PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Percorso per php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Percorso per PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/it_users.lng b/interface/web/admin/lib/lang/it_users.lng index 4c819427b7d95b6478de481d69c79f23e99476d2..1bde73a67ba192ed59c1f0100ddb116fa3dbfb61 100644 --- a/interface/web/admin/lib/lang/it_users.lng +++ b/interface/web/admin/lib/lang/it_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Le password coincidono.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng index fcd617151bcf7f7bc1749588dd6f839613ac4550..2b9ce2bbf046a25245ffce724be6aa0053488d5a 100644 --- a/interface/web/admin/lib/lang/ja_remote_user.lng +++ b/interface/web/admin/lib/lang/ja_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 639d5578053a937ca4c3a67dc98c5f83b96cbfd7..f915e860703517f053ed5890eaeb7931a017c002 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_php.lng b/interface/web/admin/lib/lang/ja_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/ja_server_php.lng +++ b/interface/web/admin/lib/lang/ja_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ja_users.lng b/interface/web/admin/lib/lang/ja_users.lng index 7f16911b75e1feb96ee6b2b2b1178490ee631950..64f8339ffa9a4c9bbfbad023cd10cc3b96754089 100644 --- a/interface/web/admin/lib/lang/ja_users.lng +++ b/interface/web/admin/lib/lang/ja_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/nl_remote_user.lng b/interface/web/admin/lib/lang/nl_remote_user.lng index 6826e95dac4532a12d87fd126ba032b39a944000..c19c28c4edc7e2d77cb2ad4fa0dcf64a0c205bdd 100644 --- a/interface/web/admin/lib/lang/nl_remote_user.lng +++ b/interface/web/admin/lib/lang/nl_remote_user.lng @@ -40,8 +40,11 @@ $wb['DNS rp functions'] = 'DNS rp functies'; $wb['DNS srv functions'] = 'DNS srv functies'; $wb['DNS txt functions'] = 'DNS txt functies'; $wb['Mail mailing list functions'] = 'Mail mailinglist functions'; -$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['generate_password_txt'] = 'Genereer wachtwoord'; +$wb['repeat_password_txt'] = 'Herhaal wachtwoord'; +$wb['password_mismatch_txt'] = 'De wachtwoorden zijn niet hetzelfde.'; +$wb['password_match_txt'] = 'De wachtwoorden zijn hetzelfde.'; +$wb['remote_access_txt'] = 'Externe toegang'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 000fba4277d82fceac511e1a3d73b0998bebcfad..b7326ad523e05ea897be66d6613930ccac265f7b 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,20 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $wb['skip_le_check_txt'] = 'Skip Lets Encrypt Check'; $wb['migration_mode_txt'] = 'Server Migration Mode'; +$wb['nagios_url_txt'] = 'Nagios/Check_MK URL'; +$wb['nagios_user_txt'] = 'Nagios/Check_MK User'; +$wb['nagios_password_txt'] = 'Nagios/Check_MK Password'; +$wb['nagios_url_error_regex'] = 'Invalid Nagios/Check_MK URL'; +$wb['nagios_url_note_txt'] = 'Check_MK is being autodetected. Placeholder:'; +$wb['mailinglist_manager_txt'] = 'Mailinglist Manager'; +$wb['backup_tmp_txt'] = 'Backup tijdelijke map voor zip'; +$wb['tmpdir_path_error_empty'] = 'tmp-dir map is leeg.'; +$wb['tmpdir_path_error_regex'] = 'Ongeldige tmp-dir map.'; +$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; +$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'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_php.lng b/interface/web/admin/lib/lang/nl_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/nl_server_php.lng +++ b/interface/web/admin/lib/lang/nl_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index ce2e1d84c09134dcc63a15f4167f5d704d48eff3..416f9c0c1736cb8877a993d7cc6f5466b637c85e 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -85,9 +85,13 @@ $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'; //For future use. At this time, CA<80><99>s do not recognize any other flag values as described in RFC 6844 +$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['asp_new_package_disabled_txt'] = 'Disable new aps packages'; +$wb['use_ipsuggestions_txt'] = 'IP adres suggesties inschakelen'; +$wb['use_ipsuggestions_descr_txt'] = 'Toont een dropdown box met een lijst van IP adressen voor IPv4 en IPv6 adressen.'; +$wb['ipsuggestions_max_txt'] = 'Max aantal IP suggesties'; ?> diff --git a/interface/web/admin/lib/lang/nl_users.lng b/interface/web/admin/lib/lang/nl_users.lng index 9634ee4bd6a44f01d52aef740be30efb4d9301a8..1e6d4ef586166171b18e799ce2f73c2d93d11bec 100644 --- a/interface/web/admin/lib/lang/nl_users.lng +++ b/interface/web/admin/lib/lang/nl_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng index 37065485aac8bdeaed34c7268e3bf0f089539b6c..5df48fb29b83bb7dbc667feb6af6963bc4332ea0 100644 --- a/interface/web/admin/lib/lang/pl_remote_user.lng +++ b/interface/web/admin/lib/lang/pl_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index ae252eacf604329875bc200f2cc6d16f76e912c7..6f00d524e07c8d15afc445b04fc03645532cacb1 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_php.lng b/interface/web/admin/lib/lang/pl_server_php.lng index 298eca65115f1a8c192353c7e1da4aeca3ecbfc0..5a7c7b6f9bdd90a5cec71911c98247687365ff46 100644 --- a/interface/web/admin/lib/lang/pl_server_php.lng +++ b/interface/web/admin/lib/lang/pl_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Ścieżka do katalogu php.ini'; $wb['php_fpm_init_script_txt'] = 'Ścieżka do skryptu inicjującego PHP-FPM'; $wb['php_fpm_ini_dir_txt'] = 'Ścieżka do katalogu php.ini'; $wb['php_fpm_pool_dir_txt'] = 'Ścieżka do katalogu pool PHP-FPM'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/pl_users.lng b/interface/web/admin/lib/lang/pl_users.lng index 8d227e08c352803906a06e9b3bbfe887e45b9c98..e6dfcb57b294981b74b31cf62f96e1c5ad80885e 100644 --- a/interface/web/admin/lib/lang/pl_users.lng +++ b/interface/web/admin/lib/lang/pl_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Hasła pasują'; $wb['username_error_collision'] = 'Nazwa użytkownika nie może być web lub web z numerem.'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng index 5e6a4997d553b6fa709c03db8d6ef35384d98417..f23a6abd5c5b37f78b84f0ebe93cd570f65bd8f8 100644 --- a/interface/web/admin/lib/lang/pt_remote_user.lng +++ b/interface/web/admin/lib/lang/pt_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index f1f23ee0cd5a2489ec35b4c8a41519a45b499bd4..62a8a340111c0c5fe909c641e53414940767530f 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_php.lng b/interface/web/admin/lib/lang/pt_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/pt_server_php.lng +++ b/interface/web/admin/lib/lang/pt_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/pt_users.lng b/interface/web/admin/lib/lang/pt_users.lng index f85071152902448f9fed9d8e215937098c4cf5e4..67cfe4f572cdce0ad2f301cf0000a069bf1f7a32 100644 --- a/interface/web/admin/lib/lang/pt_users.lng +++ b/interface/web/admin/lib/lang/pt_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng index 935e432bf3097a9d980f0b92f8fe2e5121187bf3..d0504005e310ec5464c4c9fda2eb637bd008f75a 100644 --- a/interface/web/admin/lib/lang/ro_remote_user.lng +++ b/interface/web/admin/lib/lang/ro_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index f6fbdeec8360c9b5de6f7cd434835f045984bb4a..f7c4c570388d4077e9afdd137176259f3513be6a 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_php.lng b/interface/web/admin/lib/lang/ro_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/ro_server_php.lng +++ b/interface/web/admin/lib/lang/ro_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ro_users.lng b/interface/web/admin/lib/lang/ro_users.lng index 93988a091191dcebd70066e6bab74cd91afd2a82..dcbc4f4727145c78a9a6a70b4ac3cca5b3ecc0c7 100644 --- a/interface/web/admin/lib/lang/ro_users.lng +++ b/interface/web/admin/lib/lang/ro_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/ru_firewall.lng b/interface/web/admin/lib/lang/ru_firewall.lng index 23aeac01cda66c02aa00733aeb16f3a112830762..c30f26f2e89618ae52bafc636006a36d59624264 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_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng index 9757a96e90ae7779720c415a05ddec8a4a284fce..2d556b0800746f8a59543fd95b05a69f5697260a 100644 --- a/interface/web/admin/lib/lang/ru_remote_user.lng +++ b/interface/web/admin/lib/lang/ru_remote_user.lng @@ -44,4 +44,7 @@ $wb['generate_password_txt'] = 'Создать пароль'; $wb['repeat_password_txt'] = 'Повторить пароль'; $wb['password_mismatch_txt'] = 'Пароли не совпадают.'; $wb['password_match_txt'] = 'Эти пароли совпадают.'; +$wb['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index cbf98487abaa09aebd6a3600948d7f1ba208d237..a95d6e70c907587df74b24c11d12b965745e4bc8 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'] = 'Установить разрешения для папки на обновления'; @@ -266,7 +266,7 @@ $wb['dkim_strength_txt'] = 'Стойкость DKIM'; $wb['php_ini_check_minutes_txt'] = 'Проверять изменения в PHP.ini файле каждые Х минут'; $wb['php_ini_check_minutes_error_empty'] = 'Пожалуйста, укажите значение, как часто php.ini должен быть проверен на изменения.'; $wb['php_ini_check_minutes_info_txt'] = '0 = не проверять'; -$wb['enable_spdy_txt'] = 'Сделать SPDY доступным'; +$wb['enable_spdy_txt'] = 'Сделать SPDY/HTTP2 доступным'; $wb['web_settings_txt'] = 'Web-сервер'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Использовать IPv6'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Время копирования'; $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'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_php.lng b/interface/web/admin/lib/lang/ru_server_php.lng index 8189eed0755665dd4d6ba55355e17fdb1a414a9e..854b8a3c23ebb0a392d77f14bd1947c81f60e3dd 100644 --- a/interface/web/admin/lib/lang/ru_server_php.lng +++ b/interface/web/admin/lib/lang/ru_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Путь к каталогу php.ini FastCGI'; $wb['php_fpm_init_script_txt'] = 'Путь к скрипту нициализации PHP-FPM'; $wb['php_fpm_ini_dir_txt'] = 'Путь к каталогу php.ini PHP-FPM'; $wb['php_fpm_pool_dir_txt'] = 'Путь до каталога пула PHP-FPM'; +$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 4a604ddcdc195917cf145138481d36378e1a72b8..778e9e525ad51b69b46dfa4138a9615a88be81d5 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -1,5 +1,4 @@ diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng index 1c77ba950bef3522453395f9014eb10d9eb477fc..657e5878f1ad5af6ea9fa6e5a470574164713430 100644 --- a/interface/web/admin/lib/lang/se_remote_user.lng +++ b/interface/web/admin/lib/lang/se_remote_user.lng @@ -44,4 +44,7 @@ $wb['generate_password_txt'] = 'Generera lösenord'; $wb['repeat_password_txt'] = 'Upprepa lösenord'; $wb['password_mismatch_txt'] = 'Lösenorden matchar inte'; $wb['password_match_txt'] = 'Lösenorden matchar'; +$wb['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index b4224e99755b20491473831dbefd8b317b1a0ee1..97d3c9f802f7c73211d5c0771409ff4b0eb5db57 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/se_server_php.lng b/interface/web/admin/lib/lang/se_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/se_server_php.lng +++ b/interface/web/admin/lib/lang/se_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/se_users.lng b/interface/web/admin/lib/lang/se_users.lng index e7a5e4b8bd5147743146d7ed0533ba15db4d1398..ac56cdf083565792415fdd170f839eddfc6e7743 100644 --- a/interface/web/admin/lib/lang/se_users.lng +++ b/interface/web/admin/lib/lang/se_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Lösenorden matchar'; $wb['username_error_collision'] = 'Användarnamnet får inte vara web eller web och ett nummer'; $wb['client_not_admin_err'] = 'En användare som tillhör en kund kan inte sättas som 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.'; ?> diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng index 028afed4f5b8a8ef27e6eb78f0412b2b56d6ebc1..200cd288613a6e1a0e6144ac11dccdf5d2685313 100644 --- a/interface/web/admin/lib/lang/sk_remote_user.lng +++ b/interface/web/admin/lib/lang/sk_remote_user.lng @@ -44,4 +44,7 @@ $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index e3f4d565a959bb4eef3c7e4c1836b359e678a7f0..cfc0b3ab7d00870deadd8bbe02318aee4da991f7 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -266,7 +266,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $wb['xmpp_port_bosh_txt'] = 'BOSH'; $wb['backup_time_txt'] = 'Backup time'; $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'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_php.lng b/interface/web/admin/lib/lang/sk_server_php.lng index addbfa49357aa4e45f3c0ef1700065df9cf541f7..179a8fc357142ea401cd663697ef817237957d10 100644 --- a/interface/web/admin/lib/lang/sk_server_php.lng +++ b/interface/web/admin/lib/lang/sk_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/sk_users.lng b/interface/web/admin/lib/lang/sk_users.lng index 9ba84d433e7576ac6c36bd4997bde874cb04763d..d71952fa3ed2dc9379579b758e330e93a2cc77df 100644 --- a/interface/web/admin/lib/lang/sk_users.lng +++ b/interface/web/admin/lib/lang/sk_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; $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.'; ?> diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index 998d34465358338869c8da74eb19971fc8961ef0..d9e11f8308aee177653e7c8580690d98d7f29762 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -44,4 +44,7 @@ $wb['generate_password_txt'] = 'Parola Oluştur'; $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['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for any)'; +$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 542d02e5308ecb290fc1ed7c1c9717b7717aa61e..ccf1ed5b9be78e18ad3ff10d9ac67204fdc78e25 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -265,7 +265,7 @@ $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 available'; +$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'; @@ -283,4 +283,14 @@ $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'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_php.lng b/interface/web/admin/lib/lang/tr_server_php.lng index a86d1959b25cb61ba38cb3e5fafeee342dfb73f4..8728444f130d19f507e5d0fec809a6be93117d30 100644 --- a/interface/web/admin/lib/lang/tr_server_php.lng +++ b/interface/web/admin/lib/lang/tr_server_php.lng @@ -13,4 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'php.ini Klasörünün Yolu'; $wb['php_fpm_init_script_txt'] = 'PHP-FPM Başlatma Betiğinin Yolu'; $wb['php_fpm_ini_dir_txt'] = 'php.ini Klasörünün Yolu'; $wb['php_fpm_pool_dir_txt'] = 'PHP-FPM Havuz Klasörünün Yolu'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng index 5b1c1e848557b0fc89f5a204755147b568e26435..0029214773cda0aef35f2125ba5454dbe14845a5 100644 --- a/interface/web/admin/lib/lang/tr_users.lng +++ b/interface/web/admin/lib/lang/tr_users.lng @@ -32,4 +32,5 @@ $wb['password_match_txt'] = 'Parola ile onayı aynı.'; $wb['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile başlayamaz.\\"'; $wb['client_not_admin_err'] = 'Bir müşteriye ait bir kullanıcının tipi admin olarak atanamaz'; $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.'; ?> diff --git a/interface/web/admin/lib/remote.conf.php b/interface/web/admin/lib/remote.conf.php index 01e03695f839720f73ea61e233d97c54a88f7d8c..a1067a992f8c035e727355e503e517180430f540 100644 --- a/interface/web/admin/lib/remote.conf.php +++ b/interface/web/admin/lib/remote.conf.php @@ -1,6 +1,6 @@ diff --git a/interface/web/admin/list/directive_snippets.list.php b/interface/web/admin/list/directive_snippets.list.php index c41bcd5786b31cbe15846ea88169f511eae57184..31332e5ecf7232b25e1cc38e12b5a5d129f5fbd0 100644 --- a/interface/web/admin/list/directive_snippets.list.php +++ b/interface/web/admin/list/directive_snippets.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "name", @@ -82,7 +82,7 @@ $liste["item"][] = array( 'field' => "customer_viewable", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "master_directive_snippets_id", 'datatype' => "BOOLEAN", diff --git a/interface/web/admin/list/firewall.list.php b/interface/web/admin/list/firewall.list.php index 786b7b848ae756f78a69e987b0af7a98a6cfdfed..884779110a908577ad81747f280b9de288eb4dde 100644 --- a/interface/web/admin/list/firewall.list.php +++ b/interface/web/admin/list/firewall.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", 'datatype' => "VARCHAR", diff --git a/interface/web/admin/list/iptables.list.php b/interface/web/admin/list/iptables.list.php index 3ad78404ea4c195e8d35cdd79f9fec4338fe1f97..beaf1d7e5e2297fb6f0963d59f5284d708988012 100644 --- a/interface/web/admin/list/iptables.list.php +++ b/interface/web/admin/list/iptables.list.php @@ -18,7 +18,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array("y" => "
    ".$app->lng('yes_txt')."
    ", "n" => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array("y" => $app->lng('yes_txt'), "n" => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", 'datatype' => "INTEGER", diff --git a/interface/web/admin/list/server.list.php b/interface/web/admin/list/server.list.php index 9ca54c07d5d2df744ac530f6898792264a666d25..58779eec9c6a1e84c9c175b78fc3824969b71c42 100644 --- a/interface/web/admin/list/server.list.php +++ b/interface/web/admin/list/server.list.php @@ -63,7 +63,7 @@ $liste['item'][] = array( 'field' => 'mail_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'web_server', 'datatype' => 'VARCHAR', @@ -72,7 +72,7 @@ $liste['item'][] = array( 'field' => 'web_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'dns_server', 'datatype' => 'VARCHAR', @@ -81,7 +81,7 @@ $liste['item'][] = array( 'field' => 'dns_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'file_server', 'datatype' => 'VARCHAR', @@ -90,7 +90,7 @@ $liste['item'][] = array( 'field' => 'file_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'db_server', 'datatype' => 'VARCHAR', @@ -99,7 +99,7 @@ $liste['item'][] = array( 'field' => 'db_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'vserver_server', 'datatype' => 'VARCHAR', @@ -108,7 +108,7 @@ $liste['item'][] = array( 'field' => 'vserver_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'xmpp_server', 'datatype' => 'VARCHAR', @@ -117,6 +117,6 @@ $liste['item'][] = array( 'field' => 'xmpp_server', 'prefix' => '%', 'suffix' => '%', 'width' => '', - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); ?> diff --git a/interface/web/admin/list/server_ip.list.php b/interface/web/admin/list/server_ip.list.php index 6340172b0e9ebdb0321a8bfbd81c7f00b840f6bc..1e9bd8f4ecf7a9648d3716b43305715dddc3f207 100644 --- a/interface/web/admin/list/server_ip.list.php +++ b/interface/web/admin/list/server_ip.list.php @@ -95,7 +95,7 @@ $liste["item"][] = array( 'field' => "virtualhost", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'virtualhost_port', diff --git a/interface/web/admin/list/server_ip_map.list.php b/interface/web/admin/list/server_ip_map.list.php index a70a76081bec28293499e40e82bf317b7ff2444a..6f9e60cfe83476bb2cddfdeb5d3331b2b5fbb23d 100644 --- a/interface/web/admin/list/server_ip_map.list.php +++ b/interface/web/admin/list/server_ip_map.list.php @@ -18,7 +18,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'server_id', 'datatype' => 'INTEGER', diff --git a/interface/web/admin/list/server_php.list.php b/interface/web/admin/list/server_php.list.php index ee4ad1ab918c17271d847b9dfad76fbe3963252a..a4a38901ab4565bf9f704265e240b280f2c5bacb 100644 --- a/interface/web/admin/list/server_php.list.php +++ b/interface/web/admin/list/server_php.list.php @@ -44,6 +44,15 @@ $liste['auth'] = 'no'; * Suchfelder *****************************************************/ +$liste['item'][] = array( 'field' => 'active', + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'op' => '=', + 'prefix' => '', + 'suffix' => '', + 'width' => '', + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); + $liste['item'][] = array( 'field' => 'server_id', 'datatype' => 'INTEGER', 'formtype' => 'SELECT', diff --git a/interface/web/admin/list/software_repo.list.php b/interface/web/admin/list/software_repo.list.php index 824c66d6d9d29f0ae04727cd605535f272573b71..0e172ace99ad7bf2bf53234922d2aa7432a90fb3 100644 --- a/interface/web/admin/list/software_repo.list.php +++ b/interface/web/admin/list/software_repo.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "repo_name", 'datatype' => "VARCHAR", diff --git a/interface/web/admin/list/users.list.php b/interface/web/admin/list/users.list.php index 53e3f440a6f6e76f6c79e0eb16610ee0bb45c61c..f241cd8506f281ffd5dc369959f03abbeb697b99 100644 --- a/interface/web/admin/list/users.list.php +++ b/interface/web/admin/list/users.list.php @@ -60,7 +60,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste['item'][] = array( 'field' => 'username', 'datatype' => 'VARCHAR', diff --git a/interface/web/admin/remote_action_ispcupdate.php b/interface/web/admin/remote_action_ispcupdate.php index f22661e1d47282215c4921f04241f7bfe9407154..938f25a1a37259a0ea229fe1124a27c1f9c0ea7b 100644 --- a/interface/web/admin/remote_action_ispcupdate.php +++ b/interface/web/admin/remote_action_ispcupdate.php @@ -44,7 +44,7 @@ $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/remote_action_ispcupdate.htm'); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_remote_action.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_remote_action.lng'; include $lng_file; /* diff --git a/interface/web/admin/remote_action_osupdate.php b/interface/web/admin/remote_action_osupdate.php index 5e73cdfd0f874bccc5d3ee780112ea56113cff35..e39cf0eedfe5c0925e14bc2cf1b7cdd0bbd10b62 100644 --- a/interface/web/admin/remote_action_osupdate.php +++ b/interface/web/admin/remote_action_osupdate.php @@ -43,7 +43,7 @@ $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/remote_action_osupdate.htm'); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_remote_action.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_remote_action.lng'; include $lng_file; /* diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 4c03e7ee431ef77f8358bfee0b98d1b59048f49b..e446bf3adde88b8b46ddef61e7f6f6df90916108 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -72,6 +72,14 @@ class page_action extends tform_actions { $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'])); + + parent::onShowEnd(); + } + function onUpdateSave($sql) { global $app, $conf; diff --git a/interface/web/admin/server_edit.php b/interface/web/admin/server_edit.php index 5b446c0494adea6818d9292e830718c9efd435f6..b146d8f295d991ed6161f59349373a3800561aa0 100644 --- a/interface/web/admin/server_edit.php +++ b/interface/web/admin/server_edit.php @@ -61,7 +61,7 @@ class page_action extends tform_actions { if(is_array($mirror_servers)) { foreach( $mirror_servers as $mirror_server) { $selected = ($mirror_server["server_id"] == $this->dataRecord['mirror_server_id'])?'SELECTED':''; - $mirror_server_select .= "\r\n"; + $mirror_server_select .= "\r\n"; } } $app->tpl->setVar("mirror_server_id", $mirror_server_select); diff --git a/interface/web/admin/server_ip_map_edit.php b/interface/web/admin/server_ip_map_edit.php index 4442287132f6f8c1c9b775b178c9b69dc1297d85..b5188673093184891d15b04dea9e82fed61f6d09 100644 --- a/interface/web/admin/server_ip_map_edit.php +++ b/interface/web/admin/server_ip_map_edit.php @@ -52,7 +52,7 @@ class page_action extends tform_actions { if(is_array($servers)) { foreach($servers as $server) { $selected = ($server['server_id'] == $this->dataRecord['server_id'])?'SELECTED':''; - $server_select .= "\r\n"; + $server_select .= "\r\n"; } } unset($servers); @@ -65,7 +65,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip['ip_address'] == $this->dataRecord['source_ip'])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } unset($ips); diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php index 5e552dbee7b9497c26bf17571c561cb85c4efbe9..b6664d4234ce27fdfc398877ad77e31f80d7e181 100644 --- a/interface/web/admin/software_package_list.php +++ b/interface/web/admin/software_package_list.php @@ -184,7 +184,7 @@ if(is_array($packages) && count($packages) > 0) { $app->tpl->setLoop('records', $packages); $language = (isset($_SESSION['s']['language']))?$_SESSION['s']['language']:$conf['language']; -include_once 'lib/lang/'.$language.'_software_package_list.lng'; +include_once 'lib/lang/'.$app->functions->check_language($language).'_software_package_list.lng'; $app->tpl->setVar($wb); diff --git a/interface/web/admin/software_update_list.php b/interface/web/admin/software_update_list.php index c987e9e04bebe9606a45cbac217d5c40925a7947..6d680c0ec1ce613db0e448866dbd0036a30c78fa 100644 --- a/interface/web/admin/software_update_list.php +++ b/interface/web/admin/software_update_list.php @@ -193,7 +193,7 @@ if(is_array($installed_packages)) { $app->tpl->setLoop('records', $records_out); $language = (isset($_SESSION['s']['language']))?$_SESSION['s']['language']:$conf['language']; -include_once 'lib/lang/'.$language.'_software_update_list.lng'; +include_once 'lib/lang/'.$app->functions->check_language($language).'_software_update_list.lng'; $app->tpl->setVar($wb); diff --git a/interface/web/admin/templates/server_config_cron_edit.htm b/interface/web/admin/templates/server_config_cron_edit.htm index 908e6246b2d5abeffd864d2f5242d34bab3bd0c8..62e6efea76bc85d734cf1d214c38b40f4e22a80d 100644 --- a/interface/web/admin/templates/server_config_cron_edit.htm +++ b/interface/web/admin/templates/server_config_cron_edit.htm @@ -1,5 +1,5 @@

    @@ -21,4 +21,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/admin/templates/server_config_dns_edit.htm b/interface/web/admin/templates/server_config_dns_edit.htm index b2b79665748f8f0d7815a33333123fb7dc8ab499..a4f7a26adef5ebe754dde5c9afe1fa95376ced93 100644 --- a/interface/web/admin/templates/server_config_dns_edit.htm +++ b/interface/web/admin/templates/server_config_dns_edit.htm @@ -1,5 +1,5 @@

    diff --git a/interface/web/admin/templates/server_config_fastcgi_edit.htm b/interface/web/admin/templates/server_config_fastcgi_edit.htm index b4c5cac19eb79b9f93c6103e1d45d30b87ef5344..c36b482e725b69399afc657065c3b0ade563ca02 100644 --- a/interface/web/admin/templates/server_config_fastcgi_edit.htm +++ b/interface/web/admin/templates/server_config_fastcgi_edit.htm @@ -1,5 +1,5 @@

    @@ -39,4 +39,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/admin/templates/server_config_getmail_edit.htm b/interface/web/admin/templates/server_config_getmail_edit.htm index 406dff412d5e04ee5938c8373411d50385d76278..84ca1ec73ffbac9a7f4901a2e75a39d220eabb2c 100644 --- a/interface/web/admin/templates/server_config_getmail_edit.htm +++ b/interface/web/admin/templates/server_config_getmail_edit.htm @@ -1,5 +1,5 @@

    @@ -15,4 +15,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/admin/templates/server_config_jailkit_edit.htm b/interface/web/admin/templates/server_config_jailkit_edit.htm index 3371fd8a30063ac6b3aa6c29d54059564e3a29cb..b7a749147654c6fab6105400cafb7ec691d980c8 100644 --- a/interface/web/admin/templates/server_config_jailkit_edit.htm +++ b/interface/web/admin/templates/server_config_jailkit_edit.htm @@ -1,5 +1,5 @@

    @@ -24,4 +24,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index 499a47f5985f0f51beca75fb74cb69959869050f..1e01dc760be7c5f74d2714f9cd202ce1fc1ba64e 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -1,5 +1,5 @@

    diff --git a/interface/web/admin/templates/server_config_rescue_edit.htm b/interface/web/admin/templates/server_config_rescue_edit.htm index 435449bf2413729d048abdf6bb8aaecab9c914c2..df8aa97c0714ce4e5ac94a73e978c8a2e71d1f03 100644 --- a/interface/web/admin/templates/server_config_rescue_edit.htm +++ b/interface/web/admin/templates/server_config_rescue_edit.htm @@ -1,5 +1,5 @@

    diff --git a/interface/web/admin/templates/server_config_server_edit.htm b/interface/web/admin/templates/server_config_server_edit.htm index 90be365f174f662e39cd3e3182c2e003a00400fe..7c300124577f35e95aaae9a7e3e02c55d5b5a4c9 100644 --- a/interface/web/admin/templates/server_config_server_edit.htm +++ b/interface/web/admin/templates/server_config_server_edit.htm @@ -1,5 +1,5 @@

    @@ -63,6 +63,10 @@ {tmpl_var name='backup_mode'} +
    + +
    +
    +
    +
     {tmpl_var name='monit_url_note_txt'} [SERVERNAME]
    diff --git a/interface/web/admin/templates/server_config_ufw_edit.htm b/interface/web/admin/templates/server_config_ufw_edit.htm index e84260bc7aabf0868fc979e0f00bae5bac3bec72..85e9c782973dc69cc465323d4ac2d6e22440374d 100644 --- a/interface/web/admin/templates/server_config_ufw_edit.htm +++ b/interface/web/admin/templates/server_config_ufw_edit.htm @@ -1,5 +1,5 @@

    @@ -60,4 +60,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/admin/templates/server_config_vlogger_edit.htm b/interface/web/admin/templates/server_config_vlogger_edit.htm index edcbaeda84dc1304c81a7e16f4243dc950d54d55..a53ab7667682a6942b3733525f87929c33a17749 100644 --- a/interface/web/admin/templates/server_config_vlogger_edit.htm +++ b/interface/web/admin/templates/server_config_vlogger_edit.htm @@ -1,5 +1,5 @@

    @@ -15,4 +15,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 4d5113efe828398ed9fdc4ea21a1554e78ac4a06..bb61d866ca0a64b5381ecb51d94a9c7ac04d24a8 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -1,5 +1,5 @@

    @@ -60,6 +60,9 @@
    +
    + +
    {tmpl_var name='nginx_enable_pagespeed'}
    @@ -101,6 +104,14 @@
    {tmpl_var name='enable_ip_wildcard'}
    + +
    + +
    + {tmpl_var name='logging_desc_txt'} +
    @@ -245,7 +256,10 @@
    -
    +
    + +
    +
    diff --git a/interface/web/admin/templates/server_config_xmpp_edit.htm b/interface/web/admin/templates/server_config_xmpp_edit.htm index acf019b9ff9910a4fd99af6e86731ebb8cf3e2d0..70dedd1d484400336ef059baf92c55bce4bde618 100644 --- a/interface/web/admin/templates/server_config_xmpp_edit.htm +++ b/interface/web/admin/templates/server_config_xmpp_edit.htm @@ -1,10 +1,15 @@

    - +
    + +
    +
    diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm index 0fb98965bdd58931a6463933919b5fc8a3e76c6d..5a6392eea33a18664e1d9459ba05142d38c3768b 100644 --- a/interface/web/admin/templates/server_php_list.htm +++ b/interface/web/admin/templates/server_php_list.htm @@ -15,12 +15,14 @@ + + @@ -32,6 +34,7 @@ + @@ -54,4 +57,4 @@
    {tmpl_var name='search_limit'}
    {tmpl_var name="active"} {tmpl_var name="server_id"} {tmpl_var name="client_id"} {tmpl_var name="name"}
    - \ No newline at end of file + diff --git a/interface/web/admin/templates/server_php_name_edit.htm b/interface/web/admin/templates/server_php_name_edit.htm index 067aa719a4bf12818b23a131b63e7c0204fa19e7..cfdaab63f9a220bd8bd210c615d67cf0624f0f4c 100644 --- a/interface/web/admin/templates/server_php_name_edit.htm +++ b/interface/web/admin/templates/server_php_name_edit.htm @@ -20,11 +20,13 @@
    - +
    + +
    {tmpl_var name='active'}
    -
    \ No newline at end of file +
    diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm index 45bdfcd2758b8a757f12b589e7ded692b1f284a5..5d35546a3ea350296e9c50202dedeaf04f228afc 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -81,6 +81,15 @@
    + +
    + {tmpl_var name='use_ipsuggestions'}
    {tmpl_var name='use_ipsuggestions_descr_txt'} +
    +
    +
    + +
    +
    diff --git a/interface/web/admin/users_edit.php b/interface/web/admin/users_edit.php index e3919649b934644a5eafcd2da22546314885d154..4c5c97409f1dd107fd69786d6dddfa6c05bec71f 100644 --- a/interface/web/admin/users_edit.php +++ b/interface/web/admin/users_edit.php @@ -62,7 +62,10 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } - + //* Do not add users here + if(isset($this->dataRecord['typ']) && $this->dataRecord['typ'][0] == 'user') { + $app->tform->errorMessage .= $app->tform->wordbook['no_user_insert']; + } } @@ -87,6 +90,11 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->wordbook['client_not_admin_err']; } + //* Users have to belong to clients + if(isset($this->dataRecord['typ']) && $this->dataRecord['typ'][0] == 'user' && $this->oldDataRecord['client_id'] == 0) { + $app->tform->errorMessage .= $app->tform->wordbook['no_user_insert']; + } + } /* diff --git a/interface/web/client/client_del.php b/interface/web/client/client_del.php index 1540bfbfd7528d3f8bb8a5e91a9bc96aa140aa03..2bddd02a0750294de606cb335e7710987c585f15 100644 --- a/interface/web/client/client_del.php +++ b/interface/web/client/client_del.php @@ -97,7 +97,7 @@ class page_action extends tform_actions { $app->tpl->setLoop('records', $table_list); //* load language file - $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_client_del.lng'; + $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_client_del.lng'; include $lng_file; $app->tpl->setVar($wb); @@ -128,13 +128,12 @@ class page_action extends tform_actions { $app->db->query("DELETE FROM sys_user WHERE client_id = ?", $client_id); // Delete all records (sub-clients, mail, web, etc....) of this client. - $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_folder,web_folder_user,domain,mail_mailinglist'; + $tables = 'cron,client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_folder,web_folder_user,domain,mail_mailinglist,spamfilter_wblist'; $tables_array = explode(',', $tables); $client_group_id = $app->functions->intval($client_group['groupid']); if($client_group_id > 1) { foreach($tables_array as $table) { if($table != '') { - $records = $app->db->queryAllRecords("SELECT * FROM ?? WHERE sys_groupid = ?", $table, $client_group_id); //* find the primary ID of the table $table_info = $app->db->tableInfo($table); $index_field = ''; @@ -143,6 +142,7 @@ class page_action extends tform_actions { } //* Delete the records if($index_field != '') { + $records = $app->db->queryAllRecords("SELECT * FROM ?? WHERE sys_groupid = ? ORDER BY ?? DESC", $table, $client_group_id, $index_field); if(is_array($records)) { foreach($records as $rec) { $app->db->datalogDelete($table, $index_field, $rec[$index_field]); diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index 10e3f3cadd640efc130e84182de38f32dcbb93d5..8577a1b32d94a5c1e27de0c622495d3f0b4ca2be 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -133,6 +133,7 @@ class page_action extends tform_actions { $tpls = $app->db->queryAllRecords($sql); $option = ''; $tpl = array(); + $tpls = $app->functions->htmlentities($tpls); foreach($tpls as $item){ $option .= ''; $tpl[$item['template_id']] = $item['template_name']; @@ -154,7 +155,7 @@ class page_action extends tform_actions { $tmp->id = $item['assigned_template_id']; $tmp->data = ''; $app->plugin->raiseEvent('get_client_template_details', $tmp); - if($tmp->data != '') $text .= '
    ' . $tmp->data . ''; + if($tmp->data != '') $text .= '
    ' . $app->functions->htmlentities($tmp->data) . ''; $text .= ''; $items[] = $item['assigned_template_id'] . ':' . $item['client_template_id']; @@ -219,6 +220,7 @@ class page_action extends tform_actions { // Fill the client select field $sql = "SELECT client.client_id, sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 AND client.limit_client != 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ""; //$tmp_data_record = $app->tform->getDataRecord($this->id); if(is_array($clients)) { diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php index eb8bcdbae244e1e5a93958cd2a3f8cabf042ffb6..2617bbe67d9408a711933d6a68229022be4ed64b 100644 --- a/interface/web/client/client_message.php +++ b/interface/web/client/client_message.php @@ -42,7 +42,7 @@ $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/client_message.htm'); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_client_message.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_client_message.lng'; include $lng_file; $app->tpl->setVar($wb); @@ -114,9 +114,9 @@ if(isset($_POST) && count($_POST) > 1) { } } else { - $app->tpl->setVar('sender', $_POST['sender']); - $app->tpl->setVar('subject', $_POST['subject']); - $app->tpl->setVar('message', $_POST['message']); + $app->tpl->setVar('sender', $_POST['sender'], true); + $app->tpl->setVar('subject', $_POST['subject'], true); + $app->tpl->setVar('message', $_POST['message'], true); } } else { // pre-fill Sender field with reseller's email address diff --git a/interface/web/client/domain_del.php b/interface/web/client/domain_del.php index 701b4494b8f92a1885a45ca750931a1f30a852f2..1165f3f936c141288955268a18b9d2080195f8c5 100644 --- a/interface/web/client/domain_del.php +++ b/interface/web/client/domain_del.php @@ -54,7 +54,7 @@ class page_action extends tform_actions { global $app; $conf; //* load language file - $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'.lng'; + $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; include $lng_file; /* diff --git a/interface/web/client/domain_edit.php b/interface/web/client/domain_edit.php index 67be43e04c829058babcdde95b54928964351d07..094e1899be3b8b7eb16f0c1b322d092884d5e851 100644 --- a/interface/web/client/domain_edit.php +++ b/interface/web/client/domain_edit.php @@ -49,7 +49,7 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; include $lng_file; @@ -83,6 +83,7 @@ class page_action extends tform_actions { //$sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name"; $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ''; if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= ""; if($this->id > 0) $tmp_data_record = $app->tform->getDataRecord($this->id); else $tmp_data_record = $this->dataRecord; @@ -98,11 +99,13 @@ class page_action extends tform_actions { // Get the limits of the client $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - + $client = $app->functions->htmlentities($client); + // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; //die($sql); $records = $app->db->queryAllRecords($sql, $client['client_id']); + $records = $app->functions->htmlentities($records); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 3a8d4f2fccfc8c6ed044939233f4088e3efe4772..396cbff4ecd66cc093434f4cf8fdec703e4d9b00 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -91,6 +91,12 @@ $form["tabs"]['address'] = array ( 'company_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -119,6 +125,10 @@ $form["tabs"]['address'] = array ( 'searchable' => 1, 'filters' => array( 0 => array( 'event' => 'SAVE', 'type' => 'TRIM'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 2 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'contact_name' => array ( @@ -137,6 +147,10 @@ $form["tabs"]['address'] = array ( 'searchable' => 1, 'filters' => array( 0 => array( 'event' => 'SAVE', 'type' => 'TRIM'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 2 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'customer_no' => array ( @@ -146,6 +160,12 @@ $form["tabs"]['address'] = array ( 'errmsg'=> 'customer_no_error_unique', 'allowempty' => 'y'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -226,6 +246,12 @@ $form["tabs"]['address'] = array ( 'street' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -238,6 +264,12 @@ $form["tabs"]['address'] = array ( 'zip' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -250,6 +282,12 @@ $form["tabs"]['address'] = array ( 'city' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -262,6 +300,12 @@ $form["tabs"]['address'] = array ( 'state' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -285,6 +329,12 @@ $form["tabs"]['address'] = array ( 'telephone' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -297,6 +347,12 @@ $form["tabs"]['address'] = array ( 'mobile' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -309,6 +365,12 @@ $form["tabs"]['address'] = array ( 'fax' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -345,6 +407,12 @@ $form["tabs"]['address'] = array ( 'internet' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'http://', 'value' => '', 'separator' => '', @@ -357,6 +425,12 @@ $form["tabs"]['address'] = array ( 'icq' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -385,12 +459,22 @@ $form["tabs"]['address'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'TOUPPER'), 2 => array( 'event' => 'SAVE', - 'type' => 'NOWHITESPACE') + 'type' => 'NOWHITESPACE'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'company_id' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -402,6 +486,12 @@ $form["tabs"]['address'] = array ( 'bank_account_owner' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -413,6 +503,12 @@ $form["tabs"]['address'] = array ( 'bank_account_number' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -424,6 +520,12 @@ $form["tabs"]['address'] = array ( 'bank_code' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -435,6 +537,12 @@ $form["tabs"]['address'] = array ( 'bank_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -458,7 +566,11 @@ $form["tabs"]['address'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'TOUPPER'), 2 => array( 'event' => 'SAVE', - 'type' => 'NOWHITESPACE') + 'type' => 'NOWHITESPACE'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'bank_account_swift' => array ( @@ -476,12 +588,20 @@ $form["tabs"]['address'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'TOUPPER'), 2 => array( 'event' => 'SAVE', - 'type' => 'NOWHITESPACE') + 'type' => 'NOWHITESPACE'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'notes' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -538,6 +658,12 @@ $form["tabs"]['address'] = array ( 'added_by' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => $_SESSION['s']['user']['username'], 'value' => '', 'separator' => '', @@ -885,6 +1011,18 @@ $form["tabs"]['limits'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'limit_xmpp_webpresence' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'limit_xmpp_http_upload' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'limit_xmpp_pastebin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/client/form/client_circle.tform.php b/interface/web/client/form/client_circle.tform.php index 91b96b3549d94c773198732b255e69a079acfbeb..64eee542d71bbc22eed2134a5775c74aa9735617 100644 --- a/interface/web/client/form/client_circle.tform.php +++ b/interface/web/client/form/client_circle.tform.php @@ -91,6 +91,12 @@ $form["tabs"]['circle'] = array ( 'circle_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -115,6 +121,10 @@ $form["tabs"]['circle'] = array ( 'description' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'separator' => '', diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php index 13e8cfbcce718d94b8f3518dddb26ed63d45986b..76cc26c024fb1992a7c268b58dcd74b506bb7c7b 100644 --- a/interface/web/client/form/client_template.tform.php +++ b/interface/web/client/form/client_template.tform.php @@ -82,6 +82,12 @@ $form["tabs"]['template'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'error_template_name_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -421,6 +427,18 @@ $form["tabs"]['limits'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'limit_xmpp_webpresence' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'limit_xmpp_http_upload' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'limit_xmpp_pastebin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/client/form/message_template.tform.php b/interface/web/client/form/message_template.tform.php index 14dfea1cd0904ebeec69b27c2bf1b05de435b707..7231e0e068ccc07982f30b4baac7673b241777dd 100644 --- a/interface/web/client/form/message_template.tform.php +++ b/interface/web/client/form/message_template.tform.php @@ -62,11 +62,17 @@ $form["tabs"]['template'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('welcome' => 'Default welcome email', 'other' => 'Other') + 'value' => array('welcome' => 'Default welcome email', 'gdpr' => 'GDPR data send', 'other' => 'Other') ), 'template_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -81,6 +87,12 @@ $form["tabs"]['template'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'subject_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index 903c8d8c0cd28260bf28d830d8736b0bd3bc5f5c..bd839da34624064016f9b11a61f1047d4fdc9da8 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -91,6 +91,12 @@ $form["tabs"]['address'] = array ( 'company_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -119,6 +125,10 @@ $form["tabs"]['address'] = array ( 'searchable' => 1, 'filters' => array( 0 => array( 'event' => 'SAVE', 'type' => 'TRIM'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 2 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'contact_name' => array ( @@ -137,6 +147,10 @@ $form["tabs"]['address'] = array ( 'searchable' => 1, 'filters' => array( 0 => array( 'event' => 'SAVE', 'type' => 'TRIM'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 2 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'customer_no' => array ( @@ -146,6 +160,12 @@ $form["tabs"]['address'] = array ( 'errmsg'=> 'customer_no_error_unique', 'allowempty' => 'y'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -226,6 +246,12 @@ $form["tabs"]['address'] = array ( 'street' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -238,6 +264,12 @@ $form["tabs"]['address'] = array ( 'zip' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -250,6 +282,12 @@ $form["tabs"]['address'] = array ( 'city' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -262,6 +300,12 @@ $form["tabs"]['address'] = array ( 'state' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -286,6 +330,12 @@ $form["tabs"]['address'] = array ( 'telephone' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -298,6 +348,12 @@ $form["tabs"]['address'] = array ( 'mobile' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -310,6 +366,12 @@ $form["tabs"]['address'] = array ( 'fax' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -343,6 +405,12 @@ $form["tabs"]['address'] = array ( 'internet' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'http://', 'value' => '', 'separator' => '', @@ -355,6 +423,12 @@ $form["tabs"]['address'] = array ( 'icq' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -383,12 +457,22 @@ $form["tabs"]['address'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'TOUPPER'), 2 => array( 'event' => 'SAVE', - 'type' => 'NOWHITESPACE') + 'type' => 'NOWHITESPACE'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'company_id' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -400,6 +484,12 @@ $form["tabs"]['address'] = array ( 'bank_account_owner' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -411,6 +501,12 @@ $form["tabs"]['address'] = array ( 'bank_account_number' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -422,6 +518,12 @@ $form["tabs"]['address'] = array ( 'bank_code' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -433,6 +535,12 @@ $form["tabs"]['address'] = array ( 'bank_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -456,7 +564,11 @@ $form["tabs"]['address'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'TOUPPER'), 2 => array( 'event' => 'SAVE', - 'type' => 'NOWHITESPACE') + 'type' => 'NOWHITESPACE'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'bank_account_swift' => array ( @@ -474,12 +586,20 @@ $form["tabs"]['address'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'TOUPPER'), 2 => array( 'event' => 'SAVE', - 'type' => 'NOWHITESPACE') + 'type' => 'NOWHITESPACE'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), ), 'notes' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'separator' => '', @@ -536,6 +656,12 @@ $form["tabs"]['address'] = array ( 'added_by' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => $_SESSION['s']['user']['username'], 'value' => '', 'separator' => '', @@ -883,6 +1009,18 @@ $form["tabs"]['limits'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'limit_xmpp_webpresence' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'limit_xmpp_http_upload' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'limit_xmpp_pastebin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/client/lib/lang/ar_client_message_template.lng b/interface/web/client/lib/lang/ar_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/ar_client_message_template.lng +++ b/interface/web/client/lib/lang/ar_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/ar_clients_list.lng b/interface/web/client/lib/lang/ar_clients_list.lng index f2c22fb8a5eb97e71ce3f16254a26a45ca8a4e3b..f568ad1a85ba37a64dcfbec615d198a81719370b 100644 --- a/interface/web/client/lib/lang/ar_clients_list.lng +++ b/interface/web/client/lib/lang/ar_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Country'; $wb['add_new_record_txt'] = 'Add new client'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/bg_client_message_template.lng b/interface/web/client/lib/lang/bg_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/bg_client_message_template.lng +++ b/interface/web/client/lib/lang/bg_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/bg_clients_list.lng b/interface/web/client/lib/lang/bg_clients_list.lng index b3ec44e0342334ebd3944edb3566b5390326dff2..a95e90ed7c1f569d8d4c6342f46acc7a686487bd 100644 --- a/interface/web/client/lib/lang/bg_clients_list.lng +++ b/interface/web/client/lib/lang/bg_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Държава'; $wb['add_new_record_txt'] = 'Добави нов клиент'; $wb['username_txt'] = 'Потребителско име'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index 43e49466e7a9f0f6abece50c6618db97af504cff..ad9282aa4cc24b04dad4473a7fa953e0739fe5b9 100644 --- a/interface/web/client/lib/lang/br_client.lng +++ b/interface/web/client/lib/lang/br_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Por favor, insira um e-mail válido.'; $wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo (ou em branco).'; $wb['paypal_email_error_isemail'] = 'Por favor, insira um e-mail do PayPal válido.'; $wb['paypal_email_txt'] = 'e-mail do PayPal'; -$wb['err_msg_master_tpl_set'] = 'Todos as configurações de limites personalizadas são ignoradas se qualquer gabarito mestre ou algum gabarito "personalizado" for selecionado.'; +$wb['err_msg_master_tpl_set'] = 'Todos as configurações de limites personalizadas são ignoradas se qualquer gabarito mestre ou algum gabarito \"personalizado\" for selecionado.'; $wb['aps_limits_txt'] = 'Limites de apps instalados'; $wb['limit_aps_txt'] = 'Limite de instâncias de apps'; $wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.'; diff --git a/interface/web/client/lib/lang/br_client_message_template.lng b/interface/web/client/lib/lang/br_client_message_template.lng index 91c39bff5a291cba478233079cc04fdad1c0d43f..eb3c0b99382144c3017a9a9060973e30de8a82ab 100644 --- a/interface/web/client/lib/lang/br_client_message_template.lng +++ b/interface/web/client/lib/lang/br_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Configuração'; $wb['variables_txt'] = 'Variáveis'; $wb['variables_description_txt'] = '(As variáveis usuário e senha estão disponíveis apenas em e-mails de boas vindas.)'; $wb['duplicate_welcome_error'] = 'Disponível apenas para o gabarito padrão de e-mail de boas vindas. Por favor edite o gabarito existente ou adicione um novo gabarito.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/br_client_template.lng b/interface/web/client/lib/lang/br_client_template.lng index c3f2fb4d3eca5c7084798b6dda28d6166307ccd6..bc7124b16cfae24f37b7b307dbd05332368add8c 100644 --- a/interface/web/client/lib/lang/br_client_template.lng +++ b/interface/web/client/lib/lang/br_client_template.lng @@ -76,7 +76,7 @@ $wb['limit_perl_txt'] = 'Perl disponível'; $wb['limit_ruby_txt'] = 'Ruby disponível'; $wb['limit_python_txt'] = 'Python disponível'; $wb['force_suexec_txt'] = 'Forçar SuEXEC'; -$wb['limit_hterror_txt'] = 'Diretório "Custom error docs" disponível'; +$wb['limit_hterror_txt'] = 'Diretório \"Custom error docs\" disponível'; $wb['limit_wildcard_txt'] = 'Curingas de subdomínios disponíveis'; $wb['limit_ssl_txt'] = 'SSL disponível'; $wb['web_limits_txt'] = 'Limites web'; diff --git a/interface/web/client/lib/lang/br_clients_list.lng b/interface/web/client/lib/lang/br_clients_list.lng index 92c1c3cad7b8edd464a6e7fe38a938db2de2e899..7470bd27c4fc66bacc805adaa05e1626885ca35e 100644 --- a/interface/web/client/lib/lang/br_clients_list.lng +++ b/interface/web/client/lib/lang/br_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'País'; $wb['add_new_record_txt'] = 'Adicionar novo cliente'; $wb['username_txt'] = 'Usuário'; $wb['customer_no_txt'] = 'Código do Cliente'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/ca_client_message_template.lng b/interface/web/client/lib/lang/ca_client_message_template.lng index 2771206d99a1d174938eaadd2d0a595afef2c6c3..f51f3f9474fa9c1fe0d4a9892f4946255b010398 100644 --- a/interface/web/client/lib/lang/ca_client_message_template.lng +++ b/interface/web/client/lib/lang/ca_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome courriels.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome courriel template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/ca_clients_list.lng b/interface/web/client/lib/lang/ca_clients_list.lng index e3503f39c55687a841efbbceb9a589a2c950af63..5048b62131c8f51ec42916a8512253fdc083819e 100644 --- a/interface/web/client/lib/lang/ca_clients_list.lng +++ b/interface/web/client/lib/lang/ca_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Pays'; $wb['add_new_record_txt'] = 'Ajouter un nouveau client'; $wb['username_txt'] = 'Nom d\'utilisateur'; $wb['customer_no_txt'] = 'Numéro client'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/cz.lng b/interface/web/client/lib/lang/cz.lng index 447810f9401ae7f7f5adc0db53bb260232827e6d..dabaf58eb7e9d8276e5e7e97264328d8c43f9f08 100644 --- a/interface/web/client/lib/lang/cz.lng +++ b/interface/web/client/lib/lang/cz.lng @@ -19,11 +19,11 @@ $wb['Edit Client Circle'] = 'Upravit skupinu klientů'; $wb['Domains'] = 'Domény'; $wb['domain_txt'] = 'Doména'; $wb['client_txt'] = 'Klient'; +$wb['error_domain_in dnsuse'] = 'Tato doména nemůže být odstraněna, jelikož je použitá jako DNS zóna'; +$wb['error_domain_in dnsslaveuse'] = 'Tato doména nemůže být odstraněna, jelikož je použitá jako sekundární DNS zóna'; $wb['error_domain_in mailuse'] = 'Tato doména nelze odstranit, protože je v používána jako poštovní doména'; $wb['error_domain_in webuse'] = 'Tato doména nelze odstranit, protože je v používána jako webová doména'; $wb['error_client_can_not_add_domain'] = 'Nemůžete přidat novou doménu'; $wb['error_client_group_id_empty'] = 'Musíte vybrat zákazníka
    '; -$wb['error_domain_in dnsuse'] = 'This domain cannot be deleted, because it is in use as dns zone'; -$wb['error_domain_in dnsslaveuse'] = 'This domain cannot be deleted, because it is in use as secondary dns zone'; $wb['Email-Templates'] = 'E-mailové šablony'; ?> diff --git a/interface/web/client/lib/lang/cz_client_message_template.lng b/interface/web/client/lib/lang/cz_client_message_template.lng index b5e0b73039446ff542410b8a59fbcec882b74638..b1d730c06718101e23581f616d4f5899b7f8bcc0 100644 --- a/interface/web/client/lib/lang/cz_client_message_template.lng +++ b/interface/web/client/lib/lang/cz_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Nastavení'; $wb['variables_txt'] = 'Proměnné'; $wb['variables_description_txt'] = 'Proměnné uživatelské jméno a heslo jsou k dispozici (funkční) jako volba pouze v uvítacím e-mailu.'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/cz_clients_list.lng b/interface/web/client/lib/lang/cz_clients_list.lng index 3a28bf93e6fdb996260b4d5f651456d773e27fba..8cdabf2696da35a1b417623993040161aabb7419 100644 --- a/interface/web/client/lib/lang/cz_clients_list.lng +++ b/interface/web/client/lib/lang/cz_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Stát'; $wb['add_new_record_txt'] = 'Vytvořit klienta'; $wb['username_txt'] = 'Uživatelské jméno'; $wb['customer_no_txt'] = 'Zákaznické číslo'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/de_client_template_list.lng b/interface/web/client/lib/lang/de_client_template_list.lng index 552035fd702e2a09d76ec7fb147245d6b2324616..cd5f339eea8c209b26267116db9ae9275e9237af 100644 --- a/interface/web/client/lib/lang/de_client_template_list.lng +++ b/interface/web/client/lib/lang/de_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Kundenvorlagen'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Vorlagenname'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/de_clients_list.lng b/interface/web/client/lib/lang/de_clients_list.lng index a6bdd6a205d66f8b9c6a4909405f9b11ad593c80..7ab9eda75f8791e10dce4784f51141efcbfda415 100644 --- a/interface/web/client/lib/lang/de_clients_list.lng +++ b/interface/web/client/lib/lang/de_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Land'; $wb['add_new_record_txt'] = 'Kunden hinzufügen'; $wb['username_txt'] = 'Benutzername'; $wb['customer_no_txt'] = 'Kundennummer'; +$wb['locked_txt'] = 'Gesperrt'; +$wb['yes_txt'] = 'Ja'; +$wb['no_txt'] = 'Nein'; ?> diff --git a/interface/web/client/lib/lang/dk_client_message_template.lng b/interface/web/client/lib/lang/dk_client_message_template.lng index d8f362875fbd49f476ae4217a8f4ebe84307126f..48ce083db41b683f98a041e40fdc568267a9974e 100644 --- a/interface/web/client/lib/lang/dk_client_message_template.lng +++ b/interface/web/client/lib/lang/dk_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Indstillinger'; $wb['variables_txt'] = 'Variabler'; $wb['variables_description_txt'] = '(Brugernavn og adgangskode variabler er kun tilgængelig i velkomst e-mails.)'; $wb['duplicate_welcome_error'] = 'Der kan kun være én standard velkomstmail skabelon. Rediger den eksisterende skabelon i stedet for at tilføje en ny.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/dk_clients_list.lng b/interface/web/client/lib/lang/dk_clients_list.lng index 69a1dbf1eb5fbfa9929bde82a9c1b8d0d25aeeff..ba0c540233dbd846f9b6245b5fc03715f8112b76 100644 --- a/interface/web/client/lib/lang/dk_clients_list.lng +++ b/interface/web/client/lib/lang/dk_clients_list.lng @@ -8,4 +8,7 @@ $wb['city_txt'] = 'By'; $wb['country_txt'] = 'Land'; $wb['add_new_record_txt'] = 'Tilføj ny kunde'; $wb['customer_no_txt'] = 'Kunde Nr.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/el_client_message_template.lng b/interface/web/client/lib/lang/el_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/el_client_message_template.lng +++ b/interface/web/client/lib/lang/el_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/el_clients_list.lng b/interface/web/client/lib/lang/el_clients_list.lng index 56abc6218b0c0f6934fc706e854f4f848e36d4ee..1bbd3d31b3a72710bf07833f3720d76541355739 100644 --- a/interface/web/client/lib/lang/el_clients_list.lng +++ b/interface/web/client/lib/lang/el_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Χώρα'; $wb['add_new_record_txt'] = 'Νέος Πελάτης'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/en.lng b/interface/web/client/lib/lang/en.lng index 743516c96cf4db5a74d987adeabca9cd254b89ef..40154b03acf30fc62bab7d14196f0e5f06ec5fc4 100644 --- a/interface/web/client/lib/lang/en.lng +++ b/interface/web/client/lib/lang/en.lng @@ -24,7 +24,6 @@ $wb['error_domain_in dnsslaveuse'] = 'This domain cannot be deleted, because it $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; $wb['error_domain_in webuse'] = 'This domain cannot be deleted, because it is in use as web-domain'; $wb['error_client_can_not_add_domain'] = 'You cannot add a new domain'; -$wb['domain_txt'] = 'Domain'; $wb['error_client_group_id_empty'] = 'You have to select a customer
    '; $wb['Email-Templates'] = 'Email-Templates'; -?> \ No newline at end of file +?> diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index 3cc323fd4b543d7ea197ded8ee532b7743403c3c..08debeb0e5460fd8764ea4939bfb8502f309a2d1 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -188,6 +188,8 @@ $wb['limit_xmpp_anon_txt'] = 'Anonymous host available'; $wb['limit_xmpp_vjud_txt'] = 'VJUD user directory available'; $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available'; $wb['limit_xmpp_status_txt'] = 'Status host available'; +$wb['limit_xmpp_webpresence_txt'] = 'Webpresence available'; +$wb['limit_xmpp_http_upload_txt'] = 'HTTP upload available'; $wb['added_by_txt'] = 'Added by'; $wb['added_date_txt'] = 'Added date'; $wb['parent_client_id_txt'] = 'Client of reseller'; diff --git a/interface/web/client/lib/lang/en_client_template.lng b/interface/web/client/lib/lang/en_client_template.lng index 786daee90dc9c144f430520044b941587e46174c..2a88b049b72b909dfdd79aae0d43121d8f8cd135 100644 --- a/interface/web/client/lib/lang/en_client_template.lng +++ b/interface/web/client/lib/lang/en_client_template.lng @@ -115,6 +115,8 @@ $wb['limit_xmpp_anon_txt'] = 'Anonymous host available'; $wb['limit_xmpp_vjud_txt'] = 'VJUD user directory available'; $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available'; $wb['limit_xmpp_status_txt'] = 'Status host available'; +$wb['limit_xmpp_webpresence_txt'] = 'Webpresence available'; +$wb['limit_xmpp_http_upload_txt'] = 'HTTP upload available'; $wb['dns_servers_txt'] = 'DNS servers'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['limit_database_user_txt'] = 'Max. Database users'; diff --git a/interface/web/client/lib/lang/en_client_template_list.lng b/interface/web/client/lib/lang/en_client_template_list.lng index 1906cefc469e063b01a1ea409cb7fe311f964977..a0442c835c152dbc00b79613abeae1bc5732c025 100644 --- a/interface/web/client/lib/lang/en_client_template_list.lng +++ b/interface/web/client/lib/lang/en_client_template_list.lng @@ -3,4 +3,5 @@ $wb["list_head_txt"] = 'Client and Reseller Templates'; $wb["template_type_txt"] = 'Type'; $wb["template_name_txt"] = 'Template name'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/en_clients_list.lng b/interface/web/client/lib/lang/en_clients_list.lng index c9156d5c8c85361fef394e120bf02a30d186ab54..8d8bac7730864e0afbf2822ecf45090293ef5a2e 100644 --- a/interface/web/client/lib/lang/en_clients_list.lng +++ b/interface/web/client/lib/lang/en_clients_list.lng @@ -8,4 +8,7 @@ $wb["city_txt"] = 'City'; $wb["country_txt"] = 'Country'; $wb["add_new_record_txt"] = 'Add new client'; $wb["customer_no_txt"] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> \ No newline at end of file diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng index b5950132c4a99d978f34a6f35c875a07943e1a03..efef5c42900346760658cae6ed1da4266cb2324d 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -192,6 +192,8 @@ $wb['limit_xmpp_anon_txt'] = 'Anonymous host available'; $wb['limit_xmpp_vjud_txt'] = 'VJUD user directory available'; $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available'; $wb['limit_xmpp_status_txt'] = 'Status host available'; +$wb['limit_xmpp_webpresence_txt'] = 'Webpresence available'; +$wb['limit_xmpp_http_upload_txt'] = 'HTTP upload available'; $wb['added_by_txt'] = 'Added by'; $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; diff --git a/interface/web/client/lib/lang/es_client_message_template.lng b/interface/web/client/lib/lang/es_client_message_template.lng index 8c7de823ab3fc395ce49774a22abd353fc467bdc..208e9ebc823a3d1e41c4ff21f31d5bced12f85b4 100755 --- a/interface/web/client/lib/lang/es_client_message_template.lng +++ b/interface/web/client/lib/lang/es_client_message_template.lng @@ -8,4 +8,6 @@ $wb['template_name_txt'] = 'Nombre de la plantilla'; $wb['template_type_txt'] = 'Tipo de correo'; $wb['variables_description_txt'] = '(Las variables de nombre de usuario y contraseña están solo disponibles para correos de bienvenida.)'; $wb['variables_txt'] = 'Variables'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/es_clients_list.lng b/interface/web/client/lib/lang/es_clients_list.lng index 59b337a555cdb305acae00fb073d2a379d0c92bc..b213f405e6f2f0de162f8e7784133053cc2ba4de 100755 --- a/interface/web/client/lib/lang/es_clients_list.lng +++ b/interface/web/client/lib/lang/es_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'País'; $wb['customer_no_txt'] = 'Cliente Nº.'; $wb['list_head_txt'] = 'Clientes'; $wb['username_txt'] = 'Nombre de usuario'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/fi_client_message_template.lng b/interface/web/client/lib/lang/fi_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/fi_client_message_template.lng +++ b/interface/web/client/lib/lang/fi_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/fi_clients_list.lng b/interface/web/client/lib/lang/fi_clients_list.lng index 92999113bf4058a3a82f694946cb9caa99d0943d..8adc9e43194289bfc808053efd08cbc7b36c49a9 100755 --- a/interface/web/client/lib/lang/fi_clients_list.lng +++ b/interface/web/client/lib/lang/fi_clients_list.lng @@ -8,4 +8,7 @@ $wb['client_id_txt'] = 'Tunnus'; $wb['add_new_record_txt'] = 'Add new client'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/fr_client_message_template.lng b/interface/web/client/lib/lang/fr_client_message_template.lng index 8cbc0a52477b6fa1cbf0958671065b5b4196eb5a..63b3f6d0f308648b921b3e198185dd39a5e2afbd 100644 --- a/interface/web/client/lib/lang/fr_client_message_template.lng +++ b/interface/web/client/lib/lang/fr_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome e-mail template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/fr_clients_list.lng b/interface/web/client/lib/lang/fr_clients_list.lng index 49601b57a1ade6f385621f04b2b3973b26c8a3ef..c467157d9bf46f3602b53246ffe10b132340ba67 100644 --- a/interface/web/client/lib/lang/fr_clients_list.lng +++ b/interface/web/client/lib/lang/fr_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Pays'; $wb['add_new_record_txt'] = 'Ajouter un nouveau client'; $wb['username_txt'] = 'Nom d’utilisateur'; $wb['customer_no_txt'] = 'Numéro client'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/hr_client_message_template.lng b/interface/web/client/lib/lang/hr_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/hr_client_message_template.lng +++ b/interface/web/client/lib/lang/hr_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/hr_clients_list.lng b/interface/web/client/lib/lang/hr_clients_list.lng index a7336922856fc82d2e660d0a261463e1f5f408dc..c1b8c1f2dedc55803490d931b5a619309015c753 100644 --- a/interface/web/client/lib/lang/hr_clients_list.lng +++ b/interface/web/client/lib/lang/hr_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Država'; $wb['add_new_record_txt'] = 'Dodaj klijenta'; $wb['username_txt'] = 'Korisničko ime'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/hu_client_message_template.lng b/interface/web/client/lib/lang/hu_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/hu_client_message_template.lng +++ b/interface/web/client/lib/lang/hu_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/hu_clients_list.lng b/interface/web/client/lib/lang/hu_clients_list.lng index c4a0762ef801cb5368d4841687cc01f4f7055571..f4d96a3192e1090de4660b04f1e01fb5c4b9e4bb 100644 --- a/interface/web/client/lib/lang/hu_clients_list.lng +++ b/interface/web/client/lib/lang/hu_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Ország'; $wb['add_new_record_txt'] = 'Új Ügyfél hozzáadása'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/id_client_message_template.lng b/interface/web/client/lib/lang/id_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/id_client_message_template.lng +++ b/interface/web/client/lib/lang/id_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/id_clients_list.lng b/interface/web/client/lib/lang/id_clients_list.lng index 380339fe8c7990f027fad8afdf72e0412b0bd419..a1d0c617b1053573a0d1392e88a5deca3c3214a0 100644 --- a/interface/web/client/lib/lang/id_clients_list.lng +++ b/interface/web/client/lib/lang/id_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Negara'; $wb['add_new_record_txt'] = 'Tambah Klien Baru'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/it_client_message_template.lng b/interface/web/client/lib/lang/it_client_message_template.lng index ea748be68503b68baacd081d0ff9718cbceaf3ae..f9c7d11c4d6a65c38b5e2016589d48d613e3fb5e 100644 --- a/interface/web/client/lib/lang/it_client_message_template.lng +++ b/interface/web/client/lib/lang/it_client_message_template.lng @@ -8,4 +8,6 @@ $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; $wb['template_name_txt'] = 'Template name'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/it_clients_list.lng b/interface/web/client/lib/lang/it_clients_list.lng index 14aacb1f0ffa8344b529150905ffb2a40af80f85..6b502eea884907a27dad577cc7bd744e1c1bb1ff 100644 --- a/interface/web/client/lib/lang/it_clients_list.lng +++ b/interface/web/client/lib/lang/it_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Stato'; $wb['add_new_record_txt'] = 'Aggiungi nuovo cliente'; $wb['username_txt'] = 'Nome Utente'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/ja_client_message_template.lng b/interface/web/client/lib/lang/ja_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/ja_client_message_template.lng +++ b/interface/web/client/lib/lang/ja_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/ja_clients_list.lng b/interface/web/client/lib/lang/ja_clients_list.lng index 9bb5bbdffc90d26d88e8a2b27359832d8283d383..1e67892f7d26ef265b35452429e4abf09631a54d 100644 --- a/interface/web/client/lib/lang/ja_clients_list.lng +++ b/interface/web/client/lib/lang/ja_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = '国'; $wb['add_new_record_txt'] = 'クライアントを追加する'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/nl_client_message_template.lng b/interface/web/client/lib/lang/nl_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/nl_client_message_template.lng +++ b/interface/web/client/lib/lang/nl_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/nl_clients_list.lng b/interface/web/client/lib/lang/nl_clients_list.lng index 4b962f12413be0c054575e5e162ac1793ae80695..466c3f0331ab8f63abefb94e053e4797f0d24f56 100644 --- a/interface/web/client/lib/lang/nl_clients_list.lng +++ b/interface/web/client/lib/lang/nl_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Land'; $wb['add_new_record_txt'] = 'Toevoegen nieuwe klant'; $wb['username_txt'] = 'Gebruikersnaam'; $wb['customer_no_txt'] = 'Klantnummer'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/pl_client_message_template.lng b/interface/web/client/lib/lang/pl_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/pl_client_message_template.lng +++ b/interface/web/client/lib/lang/pl_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/pl_clients_list.lng b/interface/web/client/lib/lang/pl_clients_list.lng index c790271f5ac32397debbecf20a0542edeb2f2498..bacd8622006068c52ea00a478f77ac2ff11a7bc0 100644 --- a/interface/web/client/lib/lang/pl_clients_list.lng +++ b/interface/web/client/lib/lang/pl_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Kraj'; $wb['add_new_record_txt'] = 'Dodaj nowego klienta'; $wb['username_txt'] = 'Login'; $wb['customer_no_txt'] = 'Nr klienta'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/pt_client_message_template.lng b/interface/web/client/lib/lang/pt_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/pt_client_message_template.lng +++ b/interface/web/client/lib/lang/pt_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/pt_clients_list.lng b/interface/web/client/lib/lang/pt_clients_list.lng index 4c5218bd5a305e60ce7485570f7f6427b71bc90b..ce10a50960bab70b14f6a89a640a48531f2656c9 100644 --- a/interface/web/client/lib/lang/pt_clients_list.lng +++ b/interface/web/client/lib/lang/pt_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'País'; $wb['add_new_record_txt'] = 'Adicionar Cliente'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/ro_client_message_template.lng b/interface/web/client/lib/lang/ro_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/ro_client_message_template.lng +++ b/interface/web/client/lib/lang/ro_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/ro_clients_list.lng b/interface/web/client/lib/lang/ro_clients_list.lng index d74ea1725f0637b0ef6653b16082716296a7967d..c4eb346dbf209158ed669e358d155e2a68a003f2 100644 --- a/interface/web/client/lib/lang/ro_clients_list.lng +++ b/interface/web/client/lib/lang/ro_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Tara'; $wb['add_new_record_txt'] = 'Adauga client nou'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index b9852ced60b0fa0735e571e014b75c2f9cf84dcb..a37d4673a1d69e4e0a6f2a4bc6da00fbb3a8e70d 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -1,5 +1,4 @@ username
    и password доступны только в приветственных письмах.)'; $wb['duplicate_welcome_error'] = 'Там может быть только один почтовый шаблон приветствия по умолчанию. Пожалуйста, измените существующий шаблон вместо добавления нового.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/ru_clients_list.lng b/interface/web/client/lib/lang/ru_clients_list.lng index 026adbd172b91dba18562b89a79d66b4ed6cbef0..4e50fec352f0f9dee1d5eefc2c815d4fb24b1e1a 100644 --- a/interface/web/client/lib/lang/ru_clients_list.lng +++ b/interface/web/client/lib/lang/ru_clients_list.lng @@ -8,4 +8,7 @@ $wb['client_id_txt'] = 'ID Клиента'; $wb['add_new_record_txt'] = 'Добавить клиента'; $wb['username_txt'] = 'Логин'; $wb['customer_no_txt'] = 'Номер Клиента'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index 7b5e64ab91e3ad744995450eccd6356b43c09f84..4a177cccc8242ecc9f4249616d3e15e13bd1e8a8 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -1,6 +1,4 @@ diff --git a/interface/web/client/lib/lang/se_clients_list.lng b/interface/web/client/lib/lang/se_clients_list.lng index 263912f0d522d14549982ae50c2d963dbbc1c8ea..bcf3451e4473f902867eab463e0b31ffc98e2a26 100644 --- a/interface/web/client/lib/lang/se_clients_list.lng +++ b/interface/web/client/lib/lang/se_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Land'; $wb['add_new_record_txt'] = 'Lägg till ny kund'; $wb['username_txt'] = 'Användarnamn'; $wb['customer_no_txt'] = 'Kundnummer'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/sk_client_message_template.lng b/interface/web/client/lib/lang/sk_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..acf2ae400ef37ad76cbf357c19265dd7ea939760 100644 --- a/interface/web/client/lib/lang/sk_client_message_template.lng +++ b/interface/web/client/lib/lang/sk_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Setting'; $wb['variables_txt'] = 'Variables'; $wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; $wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/sk_clients_list.lng b/interface/web/client/lib/lang/sk_clients_list.lng index 10eb6323af97993fb4aba93e73375bc6db6b291a..f1a81f4fdfe178fa8b0b74f3ca21186579eaabe5 100644 --- a/interface/web/client/lib/lang/sk_clients_list.lng +++ b/interface/web/client/lib/lang/sk_clients_list.lng @@ -8,4 +8,7 @@ $wb['country_txt'] = 'Krajina'; $wb['add_new_record_txt'] = 'Pridať nového klienta'; $wb['username_txt'] = 'Username'; $wb['customer_no_txt'] = 'Customer No.'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/lang/tr_client_message_template.lng b/interface/web/client/lib/lang/tr_client_message_template.lng index cafb3644459cc54325366832b747c2daa74bc187..885e2afc865693d21f588627dcc2639fed794fd7 100644 --- a/interface/web/client/lib/lang/tr_client_message_template.lng +++ b/interface/web/client/lib/lang/tr_client_message_template.lng @@ -8,4 +8,6 @@ $wb['Settings'] = 'Ayarlar'; $wb['variables_txt'] = 'Değişkenler'; $wb['variables_description_txt'] = '(Kullanıcı adı ve parola değişkenleri yalnız hoşgeldiniz e-postalarında kullanılabilir.)'; $wb['duplicate_welcome_error'] = 'Yalnız bir varsayılan hoşgeldiniz e-postası kalıbı bulunabilir. Lütfen yeni bir tema eklemek yerine varolan temayı düzenlemeyi deneyin.'; +$wb['subject_error_empty'] = 'Subject is empty'; +$wb['message_error_empty'] = 'Message is empty'; ?> diff --git a/interface/web/client/lib/lang/tr_clients_list.lng b/interface/web/client/lib/lang/tr_clients_list.lng index 6e19049d0aea01d671562d10512fda8b8e61d722..d59411a3d1d02dbcd35ddf9d61d71e1730ebb983 100644 --- a/interface/web/client/lib/lang/tr_clients_list.lng +++ b/interface/web/client/lib/lang/tr_clients_list.lng @@ -8,4 +8,7 @@ $wb['city_txt'] = 'İl'; $wb['country_txt'] = 'Ülke'; $wb['add_new_record_txt'] = 'Müşteri Ekle'; $wb['customer_no_txt'] = 'Müşteri No'; +$wb['locked_txt'] = 'Locked'; +$wb['yes_txt'] = 'Yes'; +$wb['no_txt'] = 'No'; ?> diff --git a/interface/web/client/lib/module.conf.php b/interface/web/client/lib/module.conf.php index 7d6f1b34e82c13d073b9bc209905e13789aa5a74..2603550c9b507b715dfe320bfd1553f73e98d124 100644 --- a/interface/web/client/lib/module.conf.php +++ b/interface/web/client/lib/module.conf.php @@ -94,6 +94,22 @@ if ($settings['use_domain_module'] == 'y') { unset($items); } +/* +// GDPR functions for admin only, might be extended for resellers later +if($_SESSION["s"]["user"]["typ"] == 'admin'){ + $items = array(); + $items[] = array( 'title' => 'Send Personal Data', + 'target' => 'content', + 'link' => 'client/gdpr_send.php'); + + $module['nav'][] = array( 'title' => 'GDPR', + 'open' => 1, + 'items' => $items); + + unset($items); +} +*/ + /* if($_SESSION["s"]["user"]["typ"] == 'admin'){ $items[] = array( 'title' => "Interface Settings", diff --git a/interface/web/client/list/client.list.php b/interface/web/client/list/client.list.php index ae41bef408814f9fb4943a81ec7c315fe9309f38..393488ccdb75e1c66f421ed94c545730903e3eab 100644 --- a/interface/web/client/list/client.list.php +++ b/interface/web/client/list/client.list.php @@ -115,6 +115,15 @@ $liste["item"][] = array( 'field' => "country", 'width' => "", 'value' => ""); +$liste["item"][] = array( 'field' => "locked", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); + if(is_file(ISPC_WEB_PATH.'/robot/lib/robot_config.inc.php')){ $liste["item"][] = array( 'field' => "validation_status", 'datatype' => "VARCHAR", diff --git a/interface/web/client/list/client_circle.list.php b/interface/web/client/list/client_circle.list.php index 56085c4c366858aff2b2361b9306610cf728b054..292b0d679720c570a5c649f56aa1b2775a7a4af1 100644 --- a/interface/web/client/list/client_circle.list.php +++ b/interface/web/client/list/client_circle.list.php @@ -63,7 +63,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "circle_name", 'datatype' => "VARCHAR", diff --git a/interface/web/client/list/client_template.list.php b/interface/web/client/list/client_template.list.php index cb37eb3f22161167320587721363af4f991040a3..a63776ff88d5394298bd745d61c9ecccbf6a2ca3 100644 --- a/interface/web/client/list/client_template.list.php +++ b/interface/web/client/list/client_template.list.php @@ -44,6 +44,22 @@ $liste["auth"] = "yes"; /***************************************************** * Suchfelder *****************************************************/ +if($_SESSION['s']['user']['typ'] == 'admin') { + $liste["item"][] = array( 'field' => 'sys_groupid', + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'op' => '=', + 'prefix' => '', + 'suffix' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => "SELECT sys_group.groupid,CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), IF(client.contact_firstname != '', CONCAT(client.contact_firstname, ' '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as name FROM sys_group, client WHERE sys_group.groupid != 1 AND sys_group.client_id = client.client_id ORDER BY client.company_name, client.contact_name", + 'keyfield'=> 'groupid', + 'valuefield'=> 'name' + ), + 'width' => '', + 'value' => '' + ); +} $liste["item"][] = array( 'field' => "template_id", 'datatype' => "INTEGER", diff --git a/interface/web/client/list/domain.list.php b/interface/web/client/list/domain.list.php index c6f221c53cb618b016a730524d19445d72ad3ce1..8fc81eeef9f40e5175c0ca802cdf8e8b9958181c 100644 --- a/interface/web/client/list/domain.list.php +++ b/interface/web/client/list/domain.list.php @@ -93,7 +93,7 @@ $liste["item"][] = array( 'field' => "sys_groupid", 'suffix' => "", 'datasource' => array ( 'type' => 'SQL', //'querystring' => 'SELECT a.groupid, a.name FROM sys_group a, domain b WHERE (a.groupid = b.sys_groupid) AND ({AUTHSQL-B}) ORDER BY name', - 'querystring' => "SELECT sys_group.groupid,CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), IF(client.contact_firstname != '', CONCAT(client.contact_firstname, ' '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as name FROM sys_group, client WHERE sys_group.groupid != 1 AND sys_group.client_id = client.client_id ORDER BY client.company_name, client.contact_name", + 'querystring' => "SELECT sys_group.groupid,CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), IF(client.contact_firstname != '', CONCAT(client.contact_firstname, ' '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as name FROM sys_group, client WHERE sys_group.groupid != 1 AND sys_group.client_id = client.client_id AND {AUTHSQL} ORDER BY client.company_name, client.contact_name", 'keyfield'=> 'groupid', 'valuefield'=> 'name' ), diff --git a/interface/web/client/message_template_edit.php b/interface/web/client/message_template_edit.php index 7d285ac7ef86e6bd1f6ee7a379ef21cb24f62e7d..1c11ff89577afc49c921d82646e5749fb342ec1b 100644 --- a/interface/web/client/message_template_edit.php +++ b/interface/web/client/message_template_edit.php @@ -80,7 +80,7 @@ class page_action extends tform_actions { if($field_name['Field'] == 'gender'){ $message_variables .= '{salutation} '; } else { - $message_variables .= '{'.$field_name['Field'].'} '; + $message_variables .= '{'.$app->functions->htmlentities($field_name['Field']).'} '; } } } diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index 8ab091ef4d03517e9bec09940a07c3aeb18575ee..7a84be525300ccedf01d95ce1f7aacacf8368fe7 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -127,6 +127,7 @@ class page_action extends tform_actions { $tpls = $app->db->queryAllRecords($sql); $option = ''; $tpl = array(); + $tpls = $app->functions->htmlentities($tpls); foreach($tpls as $item){ $option .= ''; $tpl[$item['template_id']] = $item['template_name']; @@ -148,7 +149,7 @@ class page_action extends tform_actions { $tmp->id = $item['assigned_template_id']; $tmp->data = ''; $app->plugin->raiseEvent('get_client_template_details', $tmp); - if($tmp->data != '') $text .= '
    ' . $tmp->data . ''; + if($tmp->data != '') $text .= '
    ' . $app->functions->htmlentities($tmp->data) . ''; $text .= ''; $items[] = $item['assigned_template_id'] . ':' . $item['client_template_id']; diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index c8cf74e328b2b03aea5fcbc679d584c582a75f25..83ba88d12dbac2f0fd06cdbbd6dc7b6284eeb136 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -312,6 +312,18 @@ {tmpl_var name='limit_xmpp_status'}
    +
    + +
    + {tmpl_var name='limit_xmpp_webpresence'} +
    +
    +
    + +
    + {tmpl_var name='limit_xmpp_http_upload'} +
    +
    diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm index df5501602b4aed8fc9e781e0337c1324b5c4e22f..4e10891c97a9a505d8d9d2a56e32159f122d086d 100644 --- a/interface/web/client/templates/client_template_edit_limits.htm +++ b/interface/web/client/templates/client_template_edit_limits.htm @@ -270,6 +270,18 @@ {tmpl_var name='limit_xmpp_status'} +
    + +
    + {tmpl_var name='limit_xmpp_webpresence'} +
    +
    +
    + +
    + {tmpl_var name='limit_xmpp_http_upload'} +
    +
    diff --git a/interface/web/client/templates/client_template_list.htm b/interface/web/client/templates/client_template_list.htm index 16176b131cec403d2f02ed595c13ad17a1b36c82..37564f7197c2f6c01749cd6ee8b00f61da0c7b0c 100644 --- a/interface/web/client/templates/client_template_list.htm +++ b/interface/web/client/templates/client_template_list.htm @@ -17,12 +17,14 @@ + {tmpl_var name='search_limit'} + {tmpl_var name='search_template_type'} @@ -34,6 +36,7 @@ {tmpl_var name="template_id"} + {tmpl_var name="sys_groupid"} {tmpl_var name="template_type"} {tmpl_var name="template_name"} @@ -43,16 +46,16 @@ - {tmpl_var name='globalsearch_noresults_text_txt'} + {tmpl_var name='globalsearch_noresults_text_txt'} - + - \ No newline at end of file + diff --git a/interface/web/client/templates/clients_list.htm b/interface/web/client/templates/clients_list.htm index 644c770d34fed953d62bb5b91294f52b879a52c1..7a538eba22a212a38567418bae3d40970a862854 100644 --- a/interface/web/client/templates/clients_list.htm +++ b/interface/web/client/templates/clients_list.htm @@ -17,6 +17,7 @@ + @@ -28,12 +29,13 @@ + - + @@ -44,6 +46,7 @@ {tmpl_var name="client_id"} + {tmpl_var name="locked"} {tmpl_var name="company_name"} {tmpl_var name="contact_name"} {tmpl_var name="customer_no"} diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm index 7a4dc090411d77d6f9daa9307b4a8c0711737852..87691e3d2ef2f7a02ff129c5fc232007f380a7db 100644 --- a/interface/web/client/templates/reseller_edit_limits.htm +++ b/interface/web/client/templates/reseller_edit_limits.htm @@ -314,6 +314,18 @@ {tmpl_var name='limit_xmpp_status'} +
    + +
    + {tmpl_var name='limit_xmpp_webpresence'} +
    +
    +
    + +
    + {tmpl_var name='limit_xmpp_http_upload'} +
    +
    diff --git a/interface/web/client/templates/resellers_list.htm b/interface/web/client/templates/resellers_list.htm index 50a9ec239c326d5a8c6dc1a1230cb0b4e4810ff0..8edfa08546d28bf66201ffde13a3311e7acec7cf 100644 --- a/interface/web/client/templates/resellers_list.htm +++ b/interface/web/client/templates/resellers_list.htm @@ -32,7 +32,7 @@ - + diff --git a/interface/web/dashboard/ajax_get_json.php b/interface/web/dashboard/ajax_get_json.php index 30a668a77f01436b2b818a5e2374444c7c24b115..32fc8912e05ee6c2b91f62783efc667e969c2e49 100644 --- a/interface/web/dashboard/ajax_get_json.php +++ b/interface/web/dashboard/ajax_get_json.php @@ -189,6 +189,7 @@ function _search($module, $section, $additional_sql = '', $params = ''){ $sql = "SELECT * FROM ?? WHERE ".$where_clause.$authsql.$order_clause." LIMIT 0,10"; $results = $app->db->queryAllRecords($sql, $db_table); + $results = $app->functions->htmlentities($results); if(is_array($results) && !empty($results)){ $lng_file = '../'.$module.'/lib/lang/'.$_SESSION['s']['language'].'_'.$section.'.lng'; diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php index 7f5fc6e2f0c537682077f4fbffe8a9e72b7ef3b4..93c7dcf872ae830babaf3fbd9ceeba7c24a7dfd1 100644 --- a/interface/web/dashboard/dashboard.php +++ b/interface/web/dashboard/dashboard.php @@ -51,7 +51,7 @@ $app->uses('tpl'); $app->tpl->newTemplate("templates/dashboard.htm"); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; include $lng_file; $app->tpl->setVar($wb); @@ -160,10 +160,13 @@ $dashlet_list = array(); $handle = @opendir(ISPC_WEB_PATH.'/dashboard/dashlets'); while ($file = @readdir($handle)) { if ($file != '.' && $file != '..' && !is_dir(ISPC_WEB_PATH.'/dashboard/dashlets/'.$file)) { - $dashlet_name = substr($file, 0, -4); - $dashlet_class = 'dashlet_'.$dashlet_name; - include_once ISPC_WEB_PATH.'/dashboard/dashlets/'.$file; - $dashlet_list[$dashlet_name] = new $dashlet_class; + $splitfilename = explode('.', $file); + if (end($splitfilename) == 'php') { // only allow .php files + $dashlet_name = substr($file, 0, -4); + $dashlet_class = 'dashlet_'.$dashlet_name; + include_once ISPC_WEB_PATH.'/dashboard/dashlets/'.$file; + $dashlet_list[$dashlet_name] = new $dashlet_class; + } } } diff --git a/interface/web/dashboard/dashlets/databasequota.php b/interface/web/dashboard/dashlets/databasequota.php index 6880d780a030be3206ba43678b6b9859dfaf9318..a3f6f905dc7187753c1d5acd2d68b0a199ea188e 100644 --- a/interface/web/dashboard/dashlets/databasequota.php +++ b/interface/web/dashboard/dashlets/databasequota.php @@ -8,6 +8,11 @@ class dashlet_databasequota { //* Loading Template $app->uses('tpl,quota_lib'); + $modules = $_SESSION['s']['user']['modules']; + if (!in_array($modules, 'sites')) { + return ''; + } + $tpl = new tpl; $tpl->newTemplate("dashlets/templates/databasequota.htm"); @@ -18,24 +23,15 @@ class dashlet_databasequota { $databases = $app->quota_lib->get_databasequota_data( ($_SESSION["s"]["user"]["typ"] != 'admin') ? $_SESSION['s']['user']['client_id'] : null); //print_r($databases); - $has_databasequota = false; if(is_array($databases) && !empty($databases)){ + $databases = $app->functions->htmlentities($databases); $tpl->setloop('databasequota', $databases); $has_databasequota = isset($databases[0]['used']); } $tpl->setVar('has_databasequota', $has_databasequota); - + //var_dump($tpl); return $tpl->grab(); } - } - - - - - - - - ?> diff --git a/interface/web/dashboard/dashlets/limits.php b/interface/web/dashboard/dashlets/limits.php index 2455da87bdeabd7c4d088f3dbbd5b0bf90ba0c1e..9d05dbd9cc2f443222a04e6cee2c7e47016fab97 100644 --- a/interface/web/dashboard/dashlets/limits.php +++ b/interface/web/dashboard/dashlets/limits.php @@ -8,6 +8,11 @@ class dashlet_limits { $limits = array(); /* Limits to be shown*/ + + $limits[] = array('field' => 'limit_mailquota', + 'db_table' => 'mail_user', + 'db_where' => 'quota > 0', /* Count only posive value of quota, negative value -1 is unlimited */ + 'q_type' => 'quota'); $limits[] = array('field' => 'limit_maildomain', 'db_table' => 'mail_domain', @@ -61,6 +66,11 @@ class dashlet_limits { 'db_table' => 'spamfilter_policy', 'db_where' => ""); + $limits[] = array('field' => 'limit_web_quota', + 'db_table' => 'web_domain', + 'db_where' => 'hd_quota > 0', /* Count only posive value of quota, negative value -1 is unlimited */ + 'q_type' => 'hd_quota'); + $limits[] = array('field' => 'limit_web_domain', 'db_table' => 'web_domain', 'db_where' => "type = 'vhost'"); @@ -93,6 +103,11 @@ class dashlet_limits { 'db_table' => 'dns_rr', 'db_where' => ""); + $limits[] = array('field' => 'limit_database_quota', + 'db_table' => 'web_database', + 'db_where' => 'database_quota > 0', /* Count only posive value of quota, negative value -1 is unlimited */ + 'q_type' => 'database_quota'); + $limits[] = array('field' => 'limit_database', 'db_table' => 'web_database', 'db_where' => ""); @@ -143,17 +158,29 @@ class dashlet_limits { } if($value != 0 || $value == $wb['unlimited_txt']) { $value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value; - $usage = $this->_get_limit_usage($limit); + + if($limit['q_type']!=''){ + $usage = $this->_get_assigned_quota($limit) . " MB"; + $value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value . " MB"; + } + else $usage = $this->_get_limit_usage($limit); $percentage = ($value == '-1' || $value == 0 ? 0 : round(100 * $usage / $value)); + if($value == $wb['unlimited_txt'] || $value == '-1') { + $progressbar = '-1'; + } else { + $progressbar = $percentage > 100 ? 100 : $percentage; + } $rows[] = array('field' => $field, 'field_txt' => $wb[$field.'_txt'], 'value' => $value_formatted, 'value_raw' => $value, 'usage' => $usage, 'usage_raw' => $usage, - 'percentage' => $percentage); + 'percentage' => $percentage, + 'progressbar' => $progressbar); } } + $rows = $app->functions->htmlentities($rows); $tpl->setLoop('rows', $rows); @@ -171,6 +198,19 @@ class dashlet_limits { return $rec['number']; } + + function _get_assigned_quota($limit) { + global $app; + + $sql = "SELECT sum(??) as number FROM ?? WHERE "; + if($limit['db_where'] != '') $sql .= $limit['db_where']." AND "; + $sql .= $app->tform->getAuthSQL('r'); + $rec = $app->db->queryOneRecord($sql, $limit['q_type'], $limit['db_table']); + if($limit['db_table']=='mail_user') $quotaMB = $rec['number'] / 1048576; // Mail quota is in bytes, must be converted to MB + else $quotaMB = $rec['number']; + return $quotaMB; + + } } diff --git a/interface/web/dashboard/dashlets/mailquota.php b/interface/web/dashboard/dashlets/mailquota.php index 27b8333775d9989af87f255fed8b7c727e77fb1e..4629d6a4630c23bea7fe6d71a3846ca76667da6d 100644 --- a/interface/web/dashboard/dashlets/mailquota.php +++ b/interface/web/dashboard/dashlets/mailquota.php @@ -21,6 +21,8 @@ class dashlet_mailquota { $has_mailquota = false; if(is_array($emails) && !empty($emails)){ + // email username is quoted in quota.lib already, so no htmlentities here to prevent double encoding + //$emails = $app->functions->htmlentities($emails); $tpl->setloop('mailquota', $emails); $has_mailquota = isset($emails[0]['used']); } diff --git a/interface/web/dashboard/dashlets/modules.php b/interface/web/dashboard/dashlets/modules.php index da1eb0be77be2dc60f6368fd437c105f1135d189..5c1f15149da70a328f922ab18a79bb3f2bab9a57 100644 --- a/interface/web/dashboard/dashlets/modules.php +++ b/interface/web/dashboard/dashlets/modules.php @@ -47,7 +47,7 @@ class dashlet_modules { } else { if(strlen($module_title) > 8) $module_title = substr($module_title, 0, 7).'..'; } - $mod[$module['order']] = array( 'modules_title' => $module_title, + $mod[$module['order'].'-'.$module['name']] = array( 'modules_title' => $module_title, 'modules_startpage' => $module['startpage'], 'modules_name' => $module['name']); } diff --git a/interface/web/dashboard/dashlets/quota.php b/interface/web/dashboard/dashlets/quota.php index a72e1fd23772c692923083a45943695094f07955..f94150a0fffdcdbfdd2cd1b1abff92546b53848e 100644 --- a/interface/web/dashboard/dashlets/quota.php +++ b/interface/web/dashboard/dashlets/quota.php @@ -8,6 +8,11 @@ class dashlet_quota { //* Loading Template $app->uses('tpl,quota_lib'); + $modules = $_SESSION['s']['user']['modules']; + if (!in_array($modules, 'sites')) { + return ''; + } + $tpl = new tpl; $tpl->newTemplate("dashlets/templates/quota.htm"); @@ -21,6 +26,7 @@ class dashlet_quota { $has_quota = false; if(is_array($sites) && !empty($sites)){ + $sites = $app->functions->htmlentities($sites); $tpl->setloop('quota', $sites); $has_quota = isset($sites[0]['used']); } diff --git a/interface/web/dashboard/dashlets/templates/databasequota.htm b/interface/web/dashboard/dashlets/templates/databasequota.htm index 46db3cc6b818282f7b18c0755b4480f696099b3f..c1ef06aed5bb130f4899dbd8ae26bb6e2fd8fbe7 100644 --- a/interface/web/dashboard/dashlets/templates/databasequota.htm +++ b/interface/web/dashboard/dashlets/templates/databasequota.htm @@ -3,9 +3,9 @@ {tmpl_var name='databasequota_txt'} - {tmpl_var name='database_txt'} - {tmpl_var name='used_txt'} - {tmpl_var name='quota_txt'} + {tmpl_var name='database_txt'} + {tmpl_var name='used_txt'} + {tmpl_var name='quota_txt'} @@ -14,15 +14,14 @@ {tmpl_var name='database_name'} {tmpl_var name='used'} {tmpl_var name='database_quota'} - + {tmpl_if name="database_quota" op="!=" value="unlimited"}
    -
    - {tmpl_var name='used'} {tmpl_var name='of_txt'} {tmpl_var name='database_quota'} +
    {tmpl_var name="used_percentage"}%{tmpl_var name='used'} {tmpl_var name='of_txt'} {tmpl_var name='database_quota'}
    - + {/tmpl_if} -
    \ No newline at end of file + diff --git a/interface/web/dashboard/dashlets/templates/limits.htm b/interface/web/dashboard/dashlets/templates/limits.htm index cc98f78e8cec9073be1077a7f0b4065def344407..6e9539853e2ef72584b05e0e65e1f287d1ecbc06 100644 --- a/interface/web/dashboard/dashlets/templates/limits.htm +++ b/interface/web/dashboard/dashlets/templates/limits.htm @@ -3,8 +3,9 @@ {tmpl_var name='limits_txt'} -   -   +   +   +   @@ -12,13 +13,12 @@ {tmpl_var name='field_txt'} {tmpl_var name='usage'} {tmpl_var name='of_txt'} {tmpl_var name='value'} - + {tmpl_if name="progressbar" op="!=" value="-1"}
    -
    - {tmpl_var name='usage'} {tmpl_var name='of_txt'} {tmpl_var name='value'} +
    {tmpl_var name="percentage"}%{tmpl_var name='usage'} {tmpl_var name='of_txt'} {tmpl_var name='value'}
    - + {/tmpl_if} diff --git a/interface/web/dashboard/dashlets/templates/mailquota.htm b/interface/web/dashboard/dashlets/templates/mailquota.htm index 5ad01d6865a662a5fc9660f7853337da86742228..9a4e2be83121c646d1dd5911a679fe4251ffea14 100644 --- a/interface/web/dashboard/dashlets/templates/mailquota.htm +++ b/interface/web/dashboard/dashlets/templates/mailquota.htm @@ -16,15 +16,14 @@ {tmpl_var name='name'} {tmpl_var name='used'} {tmpl_var name='quota'} - + {tmpl_if name="quota" op="!=" value="unlimited"}
    -
    - {tmpl_var name='used'} {tmpl_var name='of_txt'} {tmpl_var name='quota'} +
    {tmpl_var name="used_percentage"}%{tmpl_var name='used'} {tmpl_var name='of_txt'} {tmpl_var name='quota'}
    - + {tmpl_else}{/tmpl_if} -
    \ No newline at end of file +
    diff --git a/interface/web/dashboard/dashlets/templates/quota.htm b/interface/web/dashboard/dashlets/templates/quota.htm index 4152ee074d21c3bab033ac51ec95788b060ceb54..72794f3fdbc224ed77d45f7a172baf19852d606a 100644 --- a/interface/web/dashboard/dashlets/templates/quota.htm +++ b/interface/web/dashboard/dashlets/templates/quota.htm @@ -16,13 +16,12 @@ {tmpl_var name='used'} {tmpl_var name='soft'} {tmpl_var name='hard'} - + {tmpl_if name="soft" op="!=" value="unlimited"}
    -
    - {tmpl_var name='used'} {tmpl_var name='of_txt'} {tmpl_var name='soft'} +
    {tmpl_var name="used_percentage"}%{tmpl_var name='used'} {tmpl_var name='of_txt'} {tmpl_var name='soft'}
    - + {tmpl_else}{/tmpl_if} diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng index 93986e51286a92a6bdab43f3cfa65b58d0989f05..6ec82aad5bd18a38c636383f0f415a0b172c5c96 100644 --- a/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Clients'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng b/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng index 3d4a48c5f7072c4f630637d2b2e83134d7d90e2e..dad751aaf08f94d1233419e933c66db400597314 100644 --- a/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Брой на Клиенти'; $wb['limit_database_txt'] = 'Брой на Бази данни'; $wb['limit_mailmailinglist_txt'] = 'Брой на mailing листа'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng index 40d38fc7cad0f9e46bd64b77ba21386629d4b30c..04c59b883528a37f97fd2530a031b1aa70430a99 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Limite de clientes'; $wb['limit_database_txt'] = 'Limite de banco de dados'; $wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mails'; $wb['limit_domain_txt'] = 'Limite de domínios'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng index c9978ad17d279b3bbc19c794b49ffc458f271243..f482b47e38b0bab17dd6d0c0d2b4c169c8d9b904 100644 --- a/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_webdav_user_txt'] = 'Nombre d\'utilisateurs WebDAV'; $wb['limit_client_txt'] = 'Nombre de clients'; $wb['limit_database_txt'] = 'Nombre de bases de données'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/cz.lng b/interface/web/dashboard/lib/lang/cz.lng index 16ed927c3417154479f3d85a20d192b6a85a6a07..5a894381d5bef7e23d623e241b99b163e36676e0 100644 --- a/interface/web/dashboard/lib/lang/cz.lng +++ b/interface/web/dashboard/lib/lang/cz.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng index 0b75ac3c1c0ee0031e73dd55fcef2485ac1164cd..d322823e6bab0a400bd5e0d9ac06b6090bb98156 100644 --- a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Počet klientů'; $wb['limit_database_txt'] = 'Počet databází'; $wb['limit_mailmailinglist_txt'] = 'Počet e-mailových konferencí'; $wb['limit_domain_txt'] = 'Počet domén'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng index 18d4b32453ddc1dc75fe9485758f1764af11eec8..335c17ca85afd24f86e155de0dfe5743cf8f3490 100644 --- a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Anzahl der Kunden'; $wb['limit_database_txt'] = 'Anzahl der Datenbanken'; $wb['limit_mailmailinglist_txt'] = 'Anzahl der Mailinglisten'; $wb['limit_domain_txt'] = 'Anzahl der Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng b/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng index 546245cdfe8b9d729b7935d69e8ac46327854dcf..eb128750b2c84265319f5ccc71df3e8c318e16f5 100644 --- a/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_webdav_user_txt'] = 'Antal af Webdav brugere'; $wb['limit_client_txt'] = 'Antal af Kunder'; $wb['limit_database_txt'] = 'Antal af Databaser'; $wb['limit_domain_txt'] = 'Antal af Domæner'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng index d7e687bfc426d515c7c06a7e8e5b9813f429069c..dac3b556232f3a3199b4220f66e3c787590c9e64 100644 --- a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Αριθμός Πελατών'; $wb['limit_database_txt'] = 'Αριθμός Databases'; $wb['limit_mailmailinglist_txt'] = 'Αριθμός λιστών ηλ. αλληλογραφίας'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng index 3f0ce2f43cbe940045df7a75f89b64b59b66f78a..5d504c8e9b6e91dd62aa181fcd354781b5470567 100644 --- a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb["limit_webdav_user_txt"] = 'Number of Webdav users'; $wb["limit_client_txt"] = 'Number of Clients'; $wb["limit_database_txt"] = 'Number of Databases'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng index 67b62f7df86fdb08f6f591b924dfc5b4c3596284..da6cd6b513fb9fa4f5f3ec258be6ac2ade7c95ab 100755 --- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_webdav_user_txt'] = 'Cantidad de usuarios Webdav'; $wb['limits_txt'] = 'Límites de la cuenta'; $wb['of_txt'] = 'de'; $wb['unlimited_txt'] = 'Ilimitado'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng b/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng index 93986e51286a92a6bdab43f3cfa65b58d0989f05..6ec82aad5bd18a38c636383f0f415a0b172c5c96 100644 --- a/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Clients'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng index c3d99fab9d9b5087554316f134bbaaa99a7f5206..525249f6d44ce91a5c54d43448f593096ce43e27 100644 --- a/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_webdav_user_txt'] = 'Nombre d’utilisateurs WebDAV'; $wb['limit_client_txt'] = 'Nombre de clients'; $wb['limit_database_txt'] = 'Nombre de bases de données'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng index 3fc9765a75100a78b0f2fbed92a13671bf6bc7f4..1a3db42a24c7711caa7634567a94b92ccfb9a169 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Klijenti'; $wb['limit_database_txt'] = 'Broj baza'; $wb['limit_mailmailinglist_txt'] = 'Broj mail lista'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng index 32694a682ac62adf1414276e6e320dbc1d249e98..13c5a4e45029a8c48a919ede5a071cfe2db3d8ab 100644 --- a/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Ügyféls'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/id_dashlet_limits.lng b/interface/web/dashboard/lib/lang/id_dashlet_limits.lng index 73779bee8fc5b0f03a20061cbe2a1cfde8a93eab..8079b742b790194010abaaa99426d1f4c88a1492 100644 --- a/interface/web/dashboard/lib/lang/id_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/id_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Jumlah Klien'; $wb['limit_database_txt'] = 'Jumlah Database'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng index 8546480f325143d956c2140539998dc20943bbfa..a1a2000edf88d00db8e8ee9b876265901bed1821 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Client'; $wb['limit_database_txt'] = 'Database'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng index 93986e51286a92a6bdab43f3cfa65b58d0989f05..6ec82aad5bd18a38c636383f0f415a0b172c5c96 100644 --- a/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Clients'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/nl.lng b/interface/web/dashboard/lib/lang/nl.lng index fde9bd05b884833c9787538d520f28bbcfd5f101..be3548e7b2f6b9adc9fa44d76f02106934710b67 100644 --- a/interface/web/dashboard/lib/lang/nl.lng +++ b/interface/web/dashboard/lib/lang/nl.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng b/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng index 0ce3f0e794d417ca5faf90e2b8b566475e39c23e..37e911ec052216a825ad24b6489b446e28fff781 100644 --- a/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Aantal klanten'; $wb['limit_database_txt'] = 'Aantal databases'; $wb['limit_mailmailinglist_txt'] = 'Aantal mailing lijsten'; $wb['limit_domain_txt'] = 'Aantal domeinen'; +$wb['limit_mailquota_txt'] = 'Toegewezen mailbox quota'; +$wb['limit_web_quota_txt'] = 'Toegewezen webquota'; +$wb['limit_database_quota_txt'] = 'Toegewezen databasequota'; ?> diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng b/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng index feff0ac3384f2f52ade7bd2e0f924fd5b060af1c..4d5b971469952abfef8425650c7f7ae1e511ab11 100644 --- a/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Liczba klientów'; $wb['limit_database_txt'] = 'Liczba baz danych'; $wb['limit_mailmailinglist_txt'] = 'Liczba list mailingowych'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng b/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng index 93986e51286a92a6bdab43f3cfa65b58d0989f05..6ec82aad5bd18a38c636383f0f415a0b172c5c96 100644 --- a/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Clients'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng index 93986e51286a92a6bdab43f3cfa65b58d0989f05..6ec82aad5bd18a38c636383f0f415a0b172c5c96 100644 --- a/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Clients'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng index ca45eb57347dacbb4245a034f6b88f19f8077af1..19295b65e378928825bfe97a34d7338862d7f2c7 100644 --- a/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Макс. количество клиентов'; $wb['limit_database_txt'] = 'Количество баз данных'; $wb['limit_mailmailinglist_txt'] = 'Количество почтовых рассылок'; $wb['limit_domain_txt'] = 'Количество доменов'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng index 84adfc3ae57356c19aafea586dc9d775925d0c2a..d1f38b1b0deb8bc41d5e9078f1022a16536e076c 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Antal kunder'; $wb['limit_database_txt'] = 'Antal databaser'; $wb['limit_mailmailinglist_txt'] = 'Antal mailinglistor'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng b/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng index 93986e51286a92a6bdab43f3cfa65b58d0989f05..6ec82aad5bd18a38c636383f0f415a0b172c5c96 100644 --- a/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_client_txt'] = 'Number of Clients'; $wb['limit_database_txt'] = 'Number of Databases'; $wb['limit_mailmailinglist_txt'] = 'Number of mailing lists'; $wb['limit_domain_txt'] = 'Number of Domains'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng index 65985925cf6bed851881775047e3fcf2fb712ac8..a8869328f9f02096e41093acbcafca40cd1f04b0 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng @@ -28,4 +28,7 @@ $wb['limit_webdav_user_txt'] = 'Webdav Kullanıcı Sayısı'; $wb['limit_client_txt'] = 'Müşteri Sayısı'; $wb['limit_database_txt'] = 'Veritabanı Sayısı'; $wb['limit_domain_txt'] = 'Alan Adı Sayısı'; +$wb['limit_mailquota_txt'] = 'Assigned mailbox quota'; +$wb['limit_web_quota_txt'] = 'Assigned web quota'; +$wb['limit_database_quota_txt'] = 'Assigned database quota'; ?> diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php index 7f7e6856dbe45c494a3121277bcbb669774519c5..35bac0d0c6254b642fc8a198b28209cb64109f49 100644 --- a/interface/web/dns/dns_dkim_edit.php +++ b/interface/web/dns/dns_dkim_edit.php @@ -76,8 +76,8 @@ class page_action extends tform_actions { if(isset($sql['domain']) && $sql['domain'] != '') { if($sql['dkim'] == 'y') { $public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$sql['dkim_public']); - $app->tpl->setVar('public_key', $public_key); - $app->tpl->setVar('selector', $sql['dkim_selector']); + $app->tpl->setVar('public_key', $public_key, true); + $app->tpl->setVar('selector', $sql['dkim_selector'], true); } else { //TODO: show warning - use mail_domain for dkim and enabled dkim } @@ -85,7 +85,7 @@ class page_action extends tform_actions { } else { $app->tpl->setVar('edit_disabled', 0); } - $app->tpl->setVar('name', $soa['origin']); + $app->tpl->setVar('name', $soa['origin'], true); } diff --git a/interface/web/dns/dns_dmarc_edit.php b/interface/web/dns/dns_dmarc_edit.php index c806c7c20e4a44c35f4866c3a5b93dc2531b2288..6b720c0f38c9486b5f901ff7ab8a21630499a70f 100644 --- a/interface/web/dns/dns_dmarc_edit.php +++ b/interface/web/dns/dns_dmarc_edit.php @@ -93,7 +93,7 @@ class page_action extends tform_actions { if ( isset($rec) && !empty($rec) ) { $this->id = 1; $old_data = strtolower($rec['data']); - $app->tpl->setVar("data", $old_data); + $app->tpl->setVar("data", $old_data, true); if ($rec['active'] == 'Y') $app->tpl->setVar("active", "CHECKED"); else $app->tpl->setVar("active", "UNCHECKED"); $dmarc_rua = ''; $dmarc_ruf = ''; @@ -123,7 +123,7 @@ class page_action extends tform_actions { } //set html-values - $app->tpl->setVar('domain', $domain_name); + $app->tpl->setVar('domain', $domain_name, true); //create dmarc-policy-list $dmarc_policy_value = array( @@ -138,9 +138,9 @@ class page_action extends tform_actions { } $app->tpl->setVar('dmarc_policy', $dmarc_policy_list); - if (!empty($dmarc_rua)) $app->tpl->setVar("dmarc_rua", $dmarc_rua); + if (!empty($dmarc_rua)) $app->tpl->setVar("dmarc_rua", $dmarc_rua, true); - if (!empty($dmarc_ruf)) $app->tpl->setVar("dmarc_ruf", $dmarc_ruf); + if (!empty($dmarc_ruf)) $app->tpl->setVar("dmarc_ruf", $dmarc_ruf, true); //set dmarc-fo-options if (isset($dmarc_fo)) { @@ -178,9 +178,9 @@ class page_action extends tform_actions { if ( strpos($dmarc_rf, 'afrf') !== false ) $app->tpl->setVar("dmarc_rf_afrf", 'CHECKED'); if ( strpos($dmarc_rf, 'iodef') !== false ) $app->tpl->setVar("dmarc_rf_iodef", 'CHECKED'); - $app->tpl->setVar("dmarc_pct", $dmarc_pct); + $app->tpl->setVar("dmarc_pct", $dmarc_pct, true); - $app->tpl->setVar("dmarc_ri", $dmarc_ri); + $app->tpl->setVar("dmarc_ri", $dmarc_ri, true); //create dmarc-sp-list $dmarc_sp_value = array( @@ -287,7 +287,7 @@ class page_action extends tform_actions { unset($temp); } - $fo_rec = ''; + $fo_rec = array(); if (isset($this->dataRecord['dmarc_fo0'])) $fo_rec[] = '0'; if (isset($this->dataRecord['dmarc_fo1'])) $fo_rec[] = '1'; if (isset($this->dataRecord['dmarc_fod'])) $fo_rec[] = 'd'; diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php index 814db71db852522aa269ccd7d979ccfff1ef8af3..540a731ba24d53f805d35838b801ef2f83ad16d1 100644 --- a/interface/web/dns/dns_import.php +++ b/interface/web/dns/dns_import.php @@ -102,6 +102,7 @@ if($_SESSION['s']['user']['typ'] == 'admin') { // load the list of clients $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ''; if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= ""; if(is_array($clients)) { @@ -119,11 +120,12 @@ if ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSIO // Get the limits of the client $client_group_id = intval($_SESSION["s"]["user"]["default_group"]); $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - + $client = $app->functions->htmlentities($client); // load the list of clients $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql, $client['client_id']); + $clients = $app->functions->htmlentities($clients); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; if(is_array($clients)) { @@ -202,7 +204,7 @@ if ($settings['use_domain_module'] == 'y') { } } -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dns_import.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_dns_import.lng'; include $lng_file; $app->tpl->setVar($wb); @@ -585,6 +587,15 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' if($dns_rr[$r]['type'] == 'NS' && $dns_rr[$r]['name'] == $soa['name']){ unset($dns_rr[$r]); } + + $valid = true; + $dns_rr[$r]['ttl'] = $app->functions->intval($dns_rr[$r]['ttl']); + $dns_rr[$r]['aux'] = $app->functions->intval($dns_rr[$r]['aux']); + $dns_rr[$r]['data'] = strip_tags($dns_rr[$r]['data']); + if(!preg_match('/^[a-zA-Z0-9\.\-\*]{0,64}$/',$dns_rr[$r]['name'])) $valid == false; + if(!in_array(strtoupper($dns_rr[$r]['type']),array('A','AAAA','ALIAS','CNAME','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY'))) $valid == false; + if($valid == false) unset($dns_rr[$r]); + $r++; } $i++; @@ -595,6 +606,7 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' $dns_rr[$r]['type'] = 'NS'; $dns_rr[$r]['data'] = $server['server_name']; $dns_rr[$r]['aux'] = 0; + $dns_rr[$r]['ttl'] = $soa['ttl']; $r++; } //print('
    ');
    diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php
    index 44103608eb4cc7754296237dfacef777fbfd9d64..117b101b875de812e10160b1bfe37031164cecb8 100644
    --- a/interface/web/dns/dns_slave_edit.php
    +++ b/interface/web/dns/dns_slave_edit.php
    @@ -85,6 +85,7 @@ class page_action extends tform_actions {
     				// Getting Domains of the user
     				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
     				$clients = $app->db->queryAllRecords($sql);
    +				$clients = $app->functions->htmlentities($clients);
     				$client_select = '';
     				if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "";
     				//$tmp_data_record = $app->tform->getDataRecord($this->id);
    @@ -100,10 +101,12 @@ class page_action extends tform_actions {
     				// Get the limits of the client
     				$client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
     				$client = $app->db->queryOneRecord("SELECT client.client_id, sys_group.name, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
    +				$client = $app->functions->htmlentities($client);
     
     				// Fill the client select field
     				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name";
     				$clients = $app->db->queryAllRecords($sql, $client['client_id']);
    +				$clients = $app->functions->htmlentities($clients);
     				$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']);
     				$client_select = '';
     				//$tmp_data_record = $app->tform->getDataRecord($this->id);
    @@ -129,7 +132,7 @@ class page_action extends tform_actions {
     					if ($domain['domain'].'.' == $this->dataRecord["origin"]) {
     						$domain_select .= " selected";
     					}
    -					$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".\r\n";
    +					$domain_select .= ">" . $app->functions->htmlentities($app->functions->idn_decode($domain['domain'])) . ".\r\n";
     				}
     			}
     			else {
    @@ -146,7 +149,7 @@ class page_action extends tform_actions {
     		if($this->id > 0) {
     			//* we are editing a existing record
     			$app->tpl->setVar("edit_disabled", 1);
    -			$app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]);
    +			$app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true);
     		} else {
     			$app->tpl->setVar("edit_disabled", 0);
     		}
    diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
    index 8997146bb6a707ab75624a48458ccdf5699ec9eb..9b36daee1500fb07ecf1c8b5f43668be3a063c96 100644
    --- a/interface/web/dns/dns_soa_edit.php
    +++ b/interface/web/dns/dns_soa_edit.php
    @@ -107,6 +107,7 @@ class page_action extends tform_actions {
     				// Getting Domains of the user
     				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
     				$clients = $app->db->queryAllRecords($sql);
    +				$clients = $app->functions->htmlentities($clients);
     				$client_select = '';
     				if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "";
     				//$tmp_data_record = $app->tform->getDataRecord($this->id);
    @@ -122,10 +123,12 @@ class page_action extends tform_actions {
     				// Get the limits of the client
     				$client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
     				$client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
    -
    +				$client = $app->functions->htmlentities($client);
    +				
     				// Fill the client select field
     				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name";
     				$clients = $app->db->queryAllRecords($sql, $client['client_id']);
    +				$clients = $app->functions->htmlentities($clients);
     				$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']);
     				$client_select = '';
     				//$tmp_data_record = $app->tform->getDataRecord($this->id);
    @@ -176,7 +179,7 @@ class page_action extends tform_actions {
     		$options_dns_servers = "";
     
     		foreach ($dns_servers as $dns_server) {
    -			$options_dns_servers .= '';
    +			$options_dns_servers .= '';
     		}
     
     		$app->tpl->setVar("client_server_id", $options_dns_servers);
    @@ -197,7 +200,7 @@ class page_action extends tform_actions {
     				if ($domain['domain'].'.' == $this->dataRecord["origin"]) {
     					$domain_select .= " selected";
     				}
    -				$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".\r\n";
    +				$domain_select .= ">" . $app->functions->htmlentities($app->functions->idn_decode($domain['domain'])) . ".\r\n";
     			}
     		}
     		else {
    @@ -214,12 +217,12 @@ class page_action extends tform_actions {
     	if($this->id > 0) {
     		//* we are editing a existing record
     		$app->tpl->setVar("edit_disabled", 1);
    -		$app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]);
    +		$app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true);
     
     		$datalog = $app->db->queryOneRecord("SELECT sys_datalog.error, sys_log.tstamp FROM sys_datalog, sys_log WHERE sys_datalog.dbtable = 'dns_soa' AND sys_datalog.dbidx = ? AND sys_datalog.datalog_id = sys_log.datalog_id AND sys_log.message = CONCAT('Processed datalog_id ',sys_log.datalog_id) ORDER BY sys_datalog.tstamp DESC", 'id:' . $this->id);
     		if(is_array($datalog) && !empty($datalog)){
     			if(trim($datalog['error']) != ''){
    -				$app->tpl->setVar("config_error_msg", nl2br(htmlentities($datalog['error'])));
    +				$app->tpl->setVar("config_error_msg", nl2br($app->functions->htmlentities($datalog['error'])));
     				$app->tpl->setVar("config_error_tstamp", date($app->lng('conf_format_datetime'), $datalog['tstamp']));
     			}
     		}
    diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php
    index ca109272d8aa17111c7094c7a5eb05386a0feb7a..94096662a1e8e0af7e0e228d322d0c955076b8f2 100644
    --- a/interface/web/dns/dns_spf_edit.php
    +++ b/interface/web/dns/dns_spf_edit.php
    @@ -83,7 +83,7 @@ class page_action extends tform_actions {
     			$this->id = 1;
     			$old_data = strtolower($rec['data']);
     
    -			$app->tpl->setVar("data", $old_data);
    +			$app->tpl->setVar("data", $old_data, true);
     			if ($rec['active'] == 'Y') $app->tpl->setVar("active", "CHECKED"); else $app->tpl->setVar("active", "UNCHECKED");
     
     			$spf_hostname = '';
    @@ -108,9 +108,9 @@ class page_action extends tform_actions {
     		}
     
     		//set html-values
    -		$app->tpl->setVar("spf_ip", $spf_ip);
    -		$app->tpl->setVar("spf_hostname", $spf_hostname);
    -		$app->tpl->setVar("spf_domain", $spf_domain);
    +		$app->tpl->setVar("spf_ip", $spf_ip, true);
    +		$app->tpl->setVar("spf_hostname", $spf_hostname, true);
    +		$app->tpl->setVar("spf_domain", $spf_domain, true);
     		//create spf-mechanism-list
     		$spf_mechanism_value = array( 
     			'+' => 'spf_mechanism_pass_txt',
    diff --git a/interface/web/dns/dns_srv_edit.php b/interface/web/dns/dns_srv_edit.php
    index e2b290ab9f1f52a1a3ab3a6786aa5ef5f5b0fdf8..16c1086db3a74452c56a37510a9ef9862739169d 100644
    --- a/interface/web/dns/dns_srv_edit.php
    +++ b/interface/web/dns/dns_srv_edit.php
    @@ -51,9 +51,9 @@ class page_action extends dns_page_action {
     		// Split the 3 parts of the SRV Record apart
     		$split = explode(' ', $this->dataRecord['data']);
     
    -		$app->tpl->setVar('weight', $split[0]);
    -		$app->tpl->setVar('port', $split[1]);
    -		$app->tpl->setVar('target', $split[2]);
    +		$app->tpl->setVar('weight', $split[0], true);
    +		$app->tpl->setVar('port', $split[1], true);
    +		$app->tpl->setVar('target', $split[2], true);
     
     		parent::onShowEnd();
     	}
    diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php
    index e163e4eeab5d33e68799c5d4720d94f52b747005..17d767550c5555320bf8e5fe19481032c6d26864 100644
    --- a/interface/web/dns/dns_wizard.php
    +++ b/interface/web/dns/dns_wizard.php
    @@ -102,6 +102,7 @@ if($_SESSION['s']['user']['typ'] == 'admin') {
     		// load the list of clients
     		$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
     		$clients = $app->db->queryAllRecords($sql);
    +		$clients = $app->functions->htmlentities($clients);
     		$client_select = '';
     		if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "";
     		if(is_array($clients)) {
    @@ -120,12 +121,13 @@ if ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSIO
     	// Get the limits of the client
     	$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
     	$client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
    -
    +	$client = $app->functions->htmlentities($client);
     
     	if ($domains_settings['use_domain_module'] != 'y') {
     		// load the list of clients
     		$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name";
     		$clients = $app->db->queryAllRecords($sql, $client['client_id']);
    +		$clients = $app->functions->htmlentities($clients);
     		$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']);
     		$client_select = '';
     		if(is_array($clients)) {
    @@ -181,7 +183,7 @@ if(is_array($fields)) {
     		} else {
     			$app->tpl->setVar($field."_VISIBLE", 1);
     			$field = strtolower($field);
    -			$app->tpl->setVar($field, $_POST[$field]);
    +			$app->tpl->setVar($field, $_POST[$field], true);
     		}
     	}
     }
    @@ -463,7 +465,7 @@ $csrf_token = $app->auth->csrf_token_get('dns_wizard');
     $app->tpl->setVar('_csrf_id',$csrf_token['csrf_id']);
     $app->tpl->setVar('_csrf_key',$csrf_token['csrf_key']);
     
    -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dns_wizard.lng';
    +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_dns_wizard.lng';
     include $lng_file;
     $app->tpl->setVar($wb);
     
    diff --git a/interface/web/dns/form/dns_ns.tform.php b/interface/web/dns/form/dns_ns.tform.php
    index 063a896de3719f8c9bd6da4543383dcfa5720f88..e20a7892bfce61b2ed904f7fcfe782c9ca7c41f9 100644
    --- a/interface/web/dns/form/dns_ns.tform.php
    +++ b/interface/web/dns/form/dns_ns.tform.php
    @@ -86,7 +86,7 @@ $form["tabs"]['dns'] = array (
     					'type' => 'TOLOWER')
     			),
     			'validators' => array (  0 => array ( 'type' => 'REGEX',
    -					'regex' => '/^[a-zA-Z0-9\.\-]{0,255}$/',
    +					'regex' => '/^[_a-zA-Z0-9\.\-]{0,255}$/',
     					'errmsg'=> 'name_error_regex'),
     			),
     			'default' => '',
    diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php
    index d76c403447c9224baa6062c561481318a5564786..6fab657baac1f601aab737bcd446d7c0e6e43329 100644
    --- a/interface/web/dns/form/dns_soa.tform.php
    +++ b/interface/web/dns/form/dns_soa.tform.php
    @@ -253,6 +253,12 @@ $form["tabs"]['dns_soa'] = array (
     		'update_acl' => array (
     			'datatype' => 'VARCHAR',
     			'formtype' => 'TEXT',
    +			'filters'   => array(
    +					0 => array( 'event' => 'SAVE',
    +					'type' => 'STRIPTAGS'),
    +					1 => array( 'event' => 'SAVE',
    +					'type' => 'STRIPNL')
    +			),
     			'default' => '',
     			'value'  => '',
     			'width'  => '30',
    @@ -273,6 +279,10 @@ $form["tabs"]['dns_soa'] = array (
      		'dnssec_info' => array (
      			'datatype' => 'TEXT',
      			'formtype' => 'TEXTAREA',
    +			'filters'   => array(
    +					0 => array( 'event' => 'SAVE',
    +					'type' => 'STRIPTAGS')
    +			),
      			'default' => '',
      			'value'  => '',
      			'width'  => '30',
    @@ -309,6 +319,7 @@ $form["tabs"]['dns_records'] = array (
     	)
     );
     
    -
    +// show update acl to admins only.
    +if(!$app->auth->is_admin()) unset($form["tabs"]['dns_soa']['fields']['update_acl']);
     
     ?>
    diff --git a/interface/web/dns/lib/lang/ar_dns_soa.lng b/interface/web/dns/lib/lang/ar_dns_soa.lng
    index 98b79d5861391fcb6f9776ee82feb70af06d5c4e..257275eb9ec7d2162336b246b752466f012e0305 100644
    --- a/interface/web/dns/lib/lang/ar_dns_soa.lng
    +++ b/interface/web/dns/lib/lang/ar_dns_soa.lng
    @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
     $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.';
     $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
     $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)';
    -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.';
    +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.';
     $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
     $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.';
     $wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
    diff --git a/interface/web/dns/lib/lang/bg_dns_caa.lng b/interface/web/dns/lib/lang/bg_dns_caa.lng
    index 1fa7dcb7d579d3913038504ed9dff698bb747402..d329585d2a8e1a7845817be7879adcda842656a1 100644
    --- a/interface/web/dns/lib/lang/bg_dns_caa.lng
    +++ b/interface/web/dns/lib/lang/bg_dns_caa.lng
    @@ -1,19 +1,19 @@
     
    diff --git a/interface/web/dns/lib/lang/bg_dns_soa.lng b/interface/web/dns/lib/lang/bg_dns_soa.lng
    index fa085211962d31977d08e3037d651a89b28423e7..703ba16adcc764421d7cc88cbdfd3cf2d4314c15 100644
    --- a/interface/web/dns/lib/lang/bg_dns_soa.lng
    +++ b/interface/web/dns/lib/lang/bg_dns_soa.lng
    @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
     $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.';
     $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
     $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)';
    -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.';
    +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.';
     $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
     $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.';
     $wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
    diff --git a/interface/web/dns/lib/lang/br.lng b/interface/web/dns/lib/lang/br.lng
    index 633a0f8a3a032b56331bb8bf4b89dbaf3baa07dc..b45d1575af67fd22a874e0fb3074a343485c90c4 100644
    --- a/interface/web/dns/lib/lang/br.lng
    +++ b/interface/web/dns/lib/lang/br.lng
    @@ -18,6 +18,5 @@ $wb['DNS Wizard'] = 'Assistente dns';
     $wb['Add DNS Zone'] = 'Adicionar nova zona';
     $wb['Import Zone File'] = 'Importar arquivo de zona';
     $wb['Templates'] = 'Gabaritos';
    -$wb['Secondary DNS'] = 'DNS Secundário';
     $wb['Secondary Zones'] = 'Zonas secundárias';
     ?>
    diff --git a/interface/web/dns/lib/lang/br_dns_dkim.lng b/interface/web/dns/lib/lang/br_dns_dkim.lng
    index 9f4a805720b69a065a8678a1e73757a105b3b0a8..1ec851a216b80324f451df216e096d157d032fa3 100644
    --- a/interface/web/dns/lib/lang/br_dns_dkim.lng
    +++ b/interface/web/dns/lib/lang/br_dns_dkim.lng
    @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alc
     $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
     $wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
     $wb['selector_txt'] = 'Seletor DKIM';
    +$wb['data_error_empty'] = 'Public-Key missing';
    +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
     ?>
    diff --git a/interface/web/dns/lib/lang/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng
    index 3928dc6ead8b0b4ce82fdfbf7df8cfaa0f571588..5b7201075fbd364533109bf712812525ea1142c5 100644
    --- a/interface/web/dns/lib/lang/br_dns_dmarc.lng
    +++ b/interface/web/dns/lib/lang/br_dns_dmarc.lng
    @@ -2,7 +2,7 @@
     $wb['data_txt'] = 'Registro DMARC';
     $wb['domain_txt'] = 'Domínio';
     $wb['dmarc_policy_txt'] = 'Política de recepção de e-mails';
    -$wb['dmarc_policy_note_txt'] = 'Como os "ISPs" devem tratar as mensagens SPF ou DKIM com falha (DMARC).';
    +$wb['dmarc_policy_note_txt'] = 'Como os \"ISPs\" devem tratar as mensagens SPF ou DKIM com falha (DMARC).';
     $wb['dmarc_policy_none_txt'] = 'não fazer nada';
     $wb['dmarc_policy_quarantine_txt'] = 'quarentena';
     $wb['dmarc_policy_reject_txt'] = 'rejeitar';
    @@ -11,16 +11,16 @@ $wb['dmarc_rua_note_txt'] = 'Endereços de e-mail para receber relatórios do si
     $wb['dmarc_ruf_txt'] = 'Relatório forense de dados por endereço';
     $wb['dmarc_ruf_note_txt'] = 'Endereços de e-mail para receber amostras de mensagens com falha e controles DMARC do domínio (separados por espaço em branco)';
     $wb['dmarc_fo_txt'] = 'Opções de relatório forense';
    -$wb['dmarc_fo0_txt'] = 'Gerar relatórios se todos os mecanismos de autenticação subjacentes deixarem de produzir um resultado DMARC "pass".';
    +$wb['dmarc_fo0_txt'] = 'Gerar relatórios se todos os mecanismos de autenticação subjacentes deixarem de produzir um resultado DMARC \"pass\".';
     $wb['dmarc_fo1_txt'] = 'Gerar relatório se algum mecanismo falhar.';
     $wb['dmarc_fod_txt'] = 'Gerar relatório se assinatura DKIM falhar na verificação.';
     $wb['dmarc_fos_txt'] = 'Gerar relatório se o SPF falhar.';
     $wb['dmarc_adkim_txt'] = 'Parametrização do identificador DKIM';
    -$wb['dmarc_adkim_note_txt'] = 'Modo "strict" exige combinação exata entre o DKIM do domínio e e-mails';
    +$wb['dmarc_adkim_note_txt'] = 'Modo \"strict\" exige combinação exata entre o DKIM do domínio e e-mails';
     $wb['dmarc_adkim_r_txt'] = 'relaxed';
     $wb['dmarc_adkim_s_txt'] = 'strict';
     $wb['dmarc_aspf_txt'] = 'Parametrização do identificador SPF';
    -$wb['dmarc_aspf_note_txt'] = 'Modo "strict" exige combinação exata entre o SPF do domínio e e-mails';
    +$wb['dmarc_aspf_note_txt'] = 'Modo \"strict\" exige combinação exata entre o SPF do domínio e e-mails';
     $wb['dmarc_aspf_r_txt'] = 'relaxed';
     $wb['dmarc_aspf_s_txt'] = 'strict';
     $wb['dmarc_rf_txt'] = 'Formatação do relatório';
    @@ -37,7 +37,7 @@ $wb['dmarc_sp_quarantine_txt'] = 'quarentena';
     $wb['dmarc_sp_reject_txt'] = 'rejeitar';
     $wb['ttl_txt'] = 'TTL';
     $wb['active_txt'] = 'Ativo';
    -$wb['dmarc_policy_error_txt'] = 'Somente a política "nenhum" é permitida para e-mails sem assinatura DKIM.';
    +$wb['dmarc_policy_error_txt'] = 'Somente a política \"nenhum\" é permitida para e-mails sem assinatura DKIM.';
     $wb['dmarc_no_dkim_txt'] = 'Nenhum registro DKIM ativo.';
     $wb['dmarc_no_spf_txt'] = 'Nenhum registro SPF ativo.';
     $wb['dmarc_more_spf_txt'] = 'Mais de um registro SPF ativo.';
    diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng
    index 61099b0c5d92faec1313a135e253e07c1ec1cc29..0c56cd32ed8a03e7472d75895bbc0007a31500de 100644
    --- a/interface/web/dns/lib/lang/br_dns_spf.lng
    +++ b/interface/web/dns/lib/lang/br_dns_spf.lng
    @@ -23,4 +23,3 @@ $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alc
     $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
     $wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
     ?>
    -
    diff --git a/interface/web/dns/lib/lang/br_dns_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng
    index e20ba1cd6cf5651dead6f65b599956071488e9f4..c78c6fd1904e9192bebecc0ccfa8e326698d71b7 100644
    --- a/interface/web/dns/lib/lang/br_dns_tlsa.lng
    +++ b/interface/web/dns/lib/lang/br_dns_tlsa.lng
    @@ -9,8 +9,8 @@ $wb['active_txt'] = 'Ativo';
     $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.';
     $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
     $wb['name_error_empty'] = 'Descritor de serviço está em branco.';
    -$wb['name_error_regex'] = 'Descritor de serviço é inválido. Formato correto: "_<port>._(tcp|udp).<hostname>".';
    +$wb['name_error_regex'] = 'Descritor de serviço é inválido. Formato correto: \"_<port>._(tcp|udp).<hostname>\".';
     $wb['data_error_empty'] = 'Dados TLSA está em branco.';
    -$wb['data_error_regex'] = 'Dados TLSA são inválidos. Formato correto: "n n n HASH".';
    +$wb['data_error_regex'] = 'Dados TLSA são inválidos. Formato correto: \"n n n HASH\".';
     $wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
     ?>
    diff --git a/interface/web/dns/lib/lang/ca_dns_soa.lng b/interface/web/dns/lib/lang/ca_dns_soa.lng
    index 6ecc2762a33bb66f93d8bf26e4dd1319034c1ac4..14621059e27f476f7416d31491a25df602a2d8ea 100644
    --- a/interface/web/dns/lib/lang/ca_dns_soa.lng
    +++ b/interface/web/dns/lib/lang/ca_dns_soa.lng
    @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'La TTL minimum est 60 secondes.';
     $wb['xfer_error_regex'] = 'A noter également : Veuillez utiliser une adresse IP.';
     $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
     $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)';
    -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.';
    +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.';
     $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
     $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.';
     $wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
    diff --git a/interface/web/dns/lib/lang/dk_dns_soa.lng b/interface/web/dns/lib/lang/dk_dns_soa.lng
    index 193dc9f4a254c3842752de2a87fea5b4228a2b8d..f1fb211b88ac3a2769d6c53911d201f591900f3f 100644
    --- a/interface/web/dns/lib/lang/dk_dns_soa.lng
    +++ b/interface/web/dns/lib/lang/dk_dns_soa.lng
    @@ -37,7 +37,7 @@ $wb['minimum_range_error'] = 'Min. Minimum tid er 60 sekunder.';
     $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.';
     $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
     $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)';
    -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.';
    +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.';
     $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
     $wb['soa_cannot_be_changed_txt'] = 'The Zone (SOA) can not be changed. Please contact your administrator to change the zone.';
     $wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
    diff --git a/interface/web/dns/lib/lang/el_dns_soa.lng b/interface/web/dns/lib/lang/el_dns_soa.lng
    index 773d25ab669c44c8df2d700f35bf6ad54eb083b9..2b1aa9c46a700d0a78be6810c31e345e48b68653 100644
    --- a/interface/web/dns/lib/lang/el_dns_soa.lng
    +++ b/interface/web/dns/lib/lang/el_dns_soa.lng
    @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
     $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.';
     $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry';
     $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)';
    -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.';
    +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.';
     $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.';
     $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.';
     $wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
    diff --git a/interface/web/dns/lib/lang/en_dns_soa.lng b/interface/web/dns/lib/lang/en_dns_soa.lng
    index af1f3db565e6ea6473e0ccd2224b7591c58d1015..82d6589c7cce8ea80d113fae2fe2334bc502b258 100644
    --- a/interface/web/dns/lib/lang/en_dns_soa.lng
    +++ b/interface/web/dns/lib/lang/en_dns_soa.lng
    @@ -13,7 +13,7 @@ $wb["xfer_txt"] = 'Allow zone transfers to 
    these IPs (comma separated list $wb["active_txt"] = 'Active'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb["limit_dns_zone_txt"] = 'The max. number of DNS zones for your account is reached.'; $wb["client_txt"] = 'Client'; $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; diff --git a/interface/web/dns/lib/lang/fi_dns_soa.lng b/interface/web/dns/lib/lang/fi_dns_soa.lng index a33b593e916d3c3d4ef4cc89f25e4ca6c34e69d2..6f6427333556c627071a951d5e87570dee761d3a 100755 --- a/interface/web/dns/lib/lang/fi_dns_soa.lng +++ b/interface/web/dns/lib/lang/fi_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/fr_dns_soa.lng b/interface/web/dns/lib/lang/fr_dns_soa.lng index c20afd3731ddb68cbe32c6b849d59bd99a63e319..3c6f4b4b1dd3ba3b53c0ebd79fdeef4e9a31eb07 100644 --- a/interface/web/dns/lib/lang/fr_dns_soa.lng +++ b/interface/web/dns/lib/lang/fr_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'La TTL minimum est 60 secondes.'; $wb['xfer_error_regex'] = 'A noter également : Veuillez utiliser une adresse IP.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/hr_dns_soa.lng b/interface/web/dns/lib/lang/hr_dns_soa.lng index 5789ace310e24ece23fb75a7e69f410e8bf58d81..3c74f760ce3f61b5c2f2273b730058cfd0ac0185 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; $wb['xfer_error_regex'] = 'Također obavijesti: Koristite IP adresu.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/hu_dns_soa.lng b/interface/web/dns/lib/lang/hu_dns_soa.lng index 8de33c83a4d94ec1766e9b29ce4125eb6f8c1f8d..8a527d00cb9dfbfcb4742330bae88f21468b5f3c 100644 --- a/interface/web/dns/lib/lang/hu_dns_soa.lng +++ b/interface/web/dns/lib/lang/hu_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/id_dns_soa.lng b/interface/web/dns/lib/lang/id_dns_soa.lng index d1eee1c5f83d51961b75fc1d6a4ec540c5820180..37fc44128c6770ffe9390238abd031027ca5f87a 100644 --- a/interface/web/dns/lib/lang/id_dns_soa.lng +++ b/interface/web/dns/lib/lang/id_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/it_dns_soa.lng b/interface/web/dns/lib/lang/it_dns_soa.lng index 9fd7a5aa012bd51d4608ea19572730fbac8c1708..f0218ec0a79ad985ccabbec24cdda0d7828224be 100644 --- a/interface/web/dns/lib/lang/it_dns_soa.lng +++ b/interface/web/dns/lib/lang/it_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time di 60 secondi.'; $wb['xfer_error_regex'] = 'Also notify: Per cortesia utilizzare un indirizzo IP.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/ja_dns_soa.lng b/interface/web/dns/lib/lang/ja_dns_soa.lng index f03be582f60c0058bea619821d540cde33f2f0e4..e5cdc867363fa5365d14e5b8ac0ed1bdde25ed4d 100644 --- a/interface/web/dns/lib/lang/ja_dns_soa.lng +++ b/interface/web/dns/lib/lang/ja_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/nl_dns_caa.lng b/interface/web/dns/lib/lang/nl_dns_caa.lng index bf5b2ac8e1a8a4c34a001ffc843e1338bf54d3ce..82de234d6e545c0912f0694f63b07182429bfa58 100644 --- a/interface/web/dns/lib/lang/nl_dns_caa.lng +++ b/interface/web/dns/lib/lang/nl_dns_caa.lng @@ -6,7 +6,7 @@ $wb['ca_hostname_note_txt'] = '(Sepearated list with commas - empty for all host $wb['ca_options_txt'] = 'Additional Options'; $wb['ca_options_note_txt'] = 'requested by the CA (Sepearated list with commas)'; $wb['ca_wildcard_txt'] = 'Use Wildcard SSL'; -$wb['ca_critical_txt'] = 'Strict check'; //For future use. At this time, CAAs do not recognize any other flag values as described in RFC 6844 +$wb['ca_critical_txt'] = 'Strict check'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['select_txt'] = 'Select Certifiction Authority'; diff --git a/interface/web/dns/lib/lang/nl_dns_soa.lng b/interface/web/dns/lib/lang/nl_dns_soa.lng index 1acf7bd456bf981b8825eb6d37636837d4a1478d..9ea961d84fbee11c0130a6bbe647c59a827deed1 100644 --- a/interface/web/dns/lib/lang/nl_dns_soa.lng +++ b/interface/web/dns/lib/lang/nl_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/pl_dns_soa.lng b/interface/web/dns/lib/lang/pl_dns_soa.lng index dc2780f61832f9fc234775188124dd5c0ba1d1f9..622a80cad42803af37173d6efcfd83e785fd49dd 100644 --- a/interface/web/dns/lib/lang/pl_dns_soa.lng +++ b/interface/web/dns/lib/lang/pl_dns_soa.lng @@ -37,7 +37,7 @@ $wb['minimum_range_error'] = 'Min. czas minimalny wynosi 60 sekund'; $wb['ttl_range_error'] = 'Min. czas TTL wynosi 60 sekund'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/pt_dns_soa.lng b/interface/web/dns/lib/lang/pt_dns_soa.lng index dd443444de6be970a600b7a9cd5e7814c934a791..58efd15c68382df15d06e1af50c9d23bd793e9de 100644 --- a/interface/web/dns/lib/lang/pt_dns_soa.lng +++ b/interface/web/dns/lib/lang/pt_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/ro_dns_soa.lng b/interface/web/dns/lib/lang/ro_dns_soa.lng index 625281f2682a4eecd15b8b1a8a990974aaf80d40..e88e14fda662658137c206472e72ddbf37ca86a9 100644 --- a/interface/web/dns/lib/lang/ro_dns_soa.lng +++ b/interface/web/dns/lib/lang/ro_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/ru.lng b/interface/web/dns/lib/lang/ru.lng index 9afdd9e0eb8d09856c9a10bea3a4dc88b1264d1e..5faccbf414536bcb81a8d839b3c93e2aec95100a 100644 --- a/interface/web/dns/lib/lang/ru.lng +++ b/interface/web/dns/lib/lang/ru.lng @@ -19,5 +19,4 @@ $wb['Add DNS Zone'] = 'Добавить DNS-зону'; $wb['Templates'] = 'Шаблоны'; $wb['Secondary Zones'] = 'Вторичные зоны'; $wb['Import Zone File'] = 'Импорт файла зоны'; -$wb['Secondary DNS'] = 'Вторичные DNS'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_hinfo.lng b/interface/web/dns/lib/lang/ru_dns_hinfo.lng index 82501ab3c0b04953fa4802ffea654ec566344b14..830576fdf6843fe77fc75b601936323849603c79 100644 --- a/interface/web/dns/lib/lang/ru_dns_hinfo.lng +++ b/interface/web/dns/lib/lang/ru_dns_hinfo.lng @@ -11,6 +11,6 @@ $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту за $wb['name_error_empty'] = 'Имя пустое.'; $wb['name_error_regex'] = 'Имя узла имеет неправильный формат.'; $wb['data_error_empty'] = 'Информация об узле отсутсвует'; -$wb['data_error_regex'] = 'Поле "Информация о хосте" имеет неправильный формат'; +$wb['data_error_regex'] = 'Поле \"Информация о хосте\" имеет неправильный формат'; $wb['ttl_range_error'] = 'Мин. время TTL 60 секунд.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_soa.lng b/interface/web/dns/lib/lang/se_dns_soa.lng index 944c9c38f38eef45b62cd5a234009d83dbb25f96..0cf511d7e756fb866ce17849dcc25d26ca0080e4 100644 --- a/interface/web/dns/lib/lang/se_dns_soa.lng +++ b/interface/web/dns/lib/lang/se_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/sk_dns_soa.lng b/interface/web/dns/lib/lang/sk_dns_soa.lng index 176f001395333dd34342a4cd2316e7e6b16a2e28..143e62750987af5cf5f32fea249e3f942c17532d 100644 --- a/interface/web/dns/lib/lang/sk_dns_soa.lng +++ b/interface/web/dns/lib/lang/sk_dns_soa.lng @@ -37,7 +37,7 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/lib/lang/tr_dns_soa.lng b/interface/web/dns/lib/lang/tr_dns_soa.lng index b406e274c53d56227424b7554f2ce8289708ea26..ed3b7b2f5a930a7e09c1812811cabd8834ef4b9b 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa.lng @@ -37,7 +37,7 @@ $wb['minimum_range_error'] = 'En kısa en kısa süre 60 saniyedir.'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Sign zone (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delievered in signed format afterwards.'; +$wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be deleted if DNSSEC was enabled before and keys already have been generated but the zone will no longer be delivered in signed format afterwards.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'The Zone (SOA) can not be changed. Please contact your administrator to change the zone.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php index 22e36200e899454362aa78c10aa0ab49efb316b9..1c6999511d1280b8c015b422bed9435a6cf5485b 100644 --- a/interface/web/dns/list/dns_a.list.php +++ b/interface/web/dns/list/dns_a.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/dns/list/dns_slave.list.php b/interface/web/dns/list/dns_slave.list.php index 529a18966283063ff5e6fae67454ee3768ad62f9..de0fd3a211191fc3c7e8f00446d5de7e49e9dc7c 100644 --- a/interface/web/dns/list/dns_slave.list.php +++ b/interface/web/dns/list/dns_slave.list.php @@ -59,7 +59,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index 2f4233e066ad6b37478095bbd382806029cb50b3..c08a3802cb29a19abab7b61153a303c7790123fe 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -59,7 +59,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/dns/list/dns_template.list.php b/interface/web/dns/list/dns_template.list.php index be5d6934160c223e81dda23fec6399cf32cf6205..534f3eb77d44c93dd365399067bc008f1e58997e 100644 --- a/interface/web/dns/list/dns_template.list.php +++ b/interface/web/dns/list/dns_template.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "visible", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "name", diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm index 88ec0dcb64d71f64f164c68b51a14351b25514ef..482e3a531229887df9a2136d72922ccd2a18d4b9 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_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index 87853d1edefd222aa3f745a931ec378355e237a0..94faec4fa1be9ae01a36e9dd4996f79cbf6b3224 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -120,10 +120,11 @@
    -
    + +
    - +
    diff --git a/interface/web/help/faq_delete.php b/interface/web/help/faq_delete.php index e8f36272786fec032bb0d9d23df22a8258b4199a..c1faed60d99afdad537d4447cd009d2f7e49ff50 100644 --- a/interface/web/help/faq_delete.php +++ b/interface/web/help/faq_delete.php @@ -9,10 +9,7 @@ require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; // Check module permissions -if(!stristr($_SESSION['s']['user']['modules'], 'help')) { - header('Location: ../index.php'); - die; -} +$app->auth->check_module_permissions('admin'); // Load the form $app->uses('tform_actions'); diff --git a/interface/web/help/faq_edit.php b/interface/web/help/faq_edit.php index 629bde88c798f7105ad1b3621ab3cfcfa85fc06f..397f5cccf4233b4a5cefb4485a1f27617d68a1cf 100644 --- a/interface/web/help/faq_edit.php +++ b/interface/web/help/faq_edit.php @@ -8,10 +8,7 @@ require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; // Check the module permissions and redirect if not allowed. -if(!stristr($_SESSION['s']['user']['modules'], 'help')) { - header('Location: ../index.php'); - die; -} +$app->auth->check_module_permissions('admin'); // Load the templating and form classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/help/faq_list.php b/interface/web/help/faq_list.php index 4ea86722cfe07a78b4b8016d9775edc3ac38e952..c647fbf6eb01b8edf65b98ec6dc49ca261845038 100644 --- a/interface/web/help/faq_list.php +++ b/interface/web/help/faq_list.php @@ -11,10 +11,7 @@ require_once '../../lib/classes/parsedown/parsedown_extra.php'; $list_def_file = 'list/faq_list.php'; // Check the module permissions -if(!stristr($_SESSION['s']['user']['modules'], 'help')) { - header('Location: ../index.php'); - die(); -} +$app->auth->check_module_permissions('help'); // Loading the class $app->uses('listform_actions'); @@ -47,7 +44,7 @@ $override->SQLExtWhere = "help_faq.hf_section = $hf_section"; if($hf_section) $res = $app->db->queryOneRecord("SELECT hfs_name FROM help_faq_sections WHERE hfs_id=?", $hf_section); // Start the form rendering and action ahndling -echo "

    FAQ: ".$res['hfs_name']."

    "; -if($hf_section) $override->onLoad(); +echo "

    FAQ: ".$app->functions->htmlentities($res['hfs_name'])."

    "; +if($hf_section) $app->listform_actions->onLoad(); ?> diff --git a/interface/web/help/faq_manage_questions_list.php b/interface/web/help/faq_manage_questions_list.php index e72824458683f78bd7a2c8323049a5c636931bd3..ae29e752fca36db0737c78171658ab5077dda556 100644 --- a/interface/web/help/faq_manage_questions_list.php +++ b/interface/web/help/faq_manage_questions_list.php @@ -6,7 +6,7 @@ require_once '../../lib/app.inc.php'; $list_def_file = "list/faq_manage_questions_list.php"; //* Check permissions for module -$app->auth->check_module_permissions('help'); +$app->auth->check_module_permissions('admin'); //* Loading the class $app->uses('listform_actions'); diff --git a/interface/web/help/faq_sections_delete.php b/interface/web/help/faq_sections_delete.php index adcacf4376233fe21b53068b89986d736282ae68..865071ff252cc507ef6748322f38cfa341e648d9 100644 --- a/interface/web/help/faq_sections_delete.php +++ b/interface/web/help/faq_sections_delete.php @@ -9,10 +9,7 @@ require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; // Check module permissions -if(!stristr($_SESSION['s']['user']['modules'], 'help')) { - header('Location: ../index.php'); - die; -} +$app->auth->check_module_permissions('admin'); // Load the form $app->uses('tform_actions'); diff --git a/interface/web/help/faq_sections_edit.php b/interface/web/help/faq_sections_edit.php index 32f0123466c98c6c80235cf4888a459521569afe..f146db8605dd34e9c9980871f4a88923c431c9b5 100644 --- a/interface/web/help/faq_sections_edit.php +++ b/interface/web/help/faq_sections_edit.php @@ -8,10 +8,7 @@ require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; // Check the module permissions and redirect if not allowed. -if(!stristr($_SESSION['s']['user']['modules'], 'help')) { - header('Location: ../index.php'); - die; -} +$app->auth->check_module_permissions('admin'); // Load the templating and form classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/help/faq_sections_list.php b/interface/web/help/faq_sections_list.php index 4acb4ae20e107942d62815d38d93baa176d39373..7ce9fb0235cba91f44c3930e98b423c0340c1ba2 100644 --- a/interface/web/help/faq_sections_list.php +++ b/interface/web/help/faq_sections_list.php @@ -7,10 +7,7 @@ require_once '../../lib/app.inc.php'; $list_def_file = 'list/faq_sections_list.php'; // Check the module permissions -if(!stristr($_SESSION['s']['user']['modules'], 'help')) { - header('Location: ../index.php'); - die(); -} +$app->auth->check_module_permissions('admin'); // Loading the class $app->uses('listform_actions'); diff --git a/interface/web/help/form/faq.tform.php b/interface/web/help/form/faq.tform.php index e795f3566f034c9f56a2f79f1f221e31b45a2fc2..e440de7e6b87103b3f42e04784192268cf4bb61c 100644 --- a/interface/web/help/form/faq.tform.php +++ b/interface/web/help/form/faq.tform.php @@ -79,6 +79,12 @@ $form['tabs']['message'] = array( 'errmsg'=> 'subject_is_empty' ), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/help/form/faq_sections.tform.php b/interface/web/help/form/faq_sections.tform.php index 1a1076876ee720b2ce11ee564377db65ad96b5ae..86c9520f150464fc3e96845f5bfab287b3a917a0 100644 --- a/interface/web/help/form/faq_sections.tform.php +++ b/interface/web/help/form/faq_sections.tform.php @@ -63,6 +63,12 @@ $form['tabs']['message'] = array( 'errmsg'=> 'subject_is_empty' ), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/help/form/support_message.tform.php b/interface/web/help/form/support_message.tform.php index d80cc158157afa3f8aa6b79fc97dddad9b76a546..caf1a010c60b355acf77a6e79eaca63556bd3bc9 100644 --- a/interface/web/help/form/support_message.tform.php +++ b/interface/web/help/form/support_message.tform.php @@ -100,6 +100,12 @@ $form["tabs"]['message'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'subject_is_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => $sm_default_subject, 'value' => '', 'width' => '30', @@ -111,6 +117,10 @@ $form["tabs"]['message'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'message_is_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index 7071091721c1dd55f7a90be3bb5bacef53e00593..83097915bf345a5cd62ab30fd8debbcc24151e16 100644 --- a/interface/web/help/lib/lang/br_support_message.lng +++ b/interface/web/help/lib/lang/br_support_message.lng @@ -12,5 +12,5 @@ $wb['answer_to_support_request_txt'] = 'Você tem uma nova resposta para requisi $wb['answer_to_support_request_sent_txt'] = 'Sua resposta para requisição de suporte foi enviada. Por favor, não responda esse e-mail.'; $wb['support_request_sent_txt'] = 'Sua requisição de suporte foi enviada. Por favor não responda este e-mail.'; $wb['recipient_or_sender_email_address_not_valid_txt'] = 'A mensagem não foi enviada porque o e-mail do destinatário e/ou remetente não é válido.'; -$wb['subject_is_empty'] = 'Não é permitido o campo "Assunto" em branco.'; +$wb['subject_is_empty'] = 'Não é permitido o campo \"Assunto\" em branco.'; ?> diff --git a/interface/web/help/lib/lang/cz.lng b/interface/web/help/lib/lang/cz.lng index 55279c6a69c9a1e1d57081bbc96b1994db6a3e01..1288ef0fd293e867809b804aa4bf04eedd08b257 100644 --- a/interface/web/help/lib/lang/cz.lng +++ b/interface/web/help/lib/lang/cz.lng @@ -9,6 +9,6 @@ $wb['Version'] = 'Verze'; $wb['Frequently Asked Questions'] = 'Často kladené dotazy'; $wb['FAQ Sections'] = 'Sekce FAQ - Často kladené dotazy'; $wb['Manage Sections'] = 'Spravovat sekce'; -$wb['Manage Questions'] = 'Spravovat dotazy'; $wb['Add a Question & Answer Pair'] = 'Vytvořit otázku a odpověď'; +$wb['Manage Questions'] = 'Spravovat dotazy'; ?> diff --git a/interface/web/help/lib/lang/it_support_message.lng b/interface/web/help/lib/lang/it_support_message.lng index 89e0b91687c35515d5d81855bcf92899faf50af4..60999758fb361a8db894993166acd900301640ac 100644 --- a/interface/web/help/lib/lang/it_support_message.lng +++ b/interface/web/help/lib/lang/it_support_message.lng @@ -12,5 +12,5 @@ $wb['answer_to_support_request_txt'] = 'Hai una risposta alla richiesta di suppo $wb['answer_to_support_request_sent_txt'] = 'La tua richiesta di supporto è stata trasmessa. Non rispondere a questa email.'; $wb['support_request_sent_txt'] = 'La tua richiesta di supporto è stata trasmessa. Non rispondere a questa email.'; $wb['recipient_or_sender_email_address_not_valid_txt'] = 'Impossibile trasmettere il messaggio. Destinatario non valido.'; -$wb['subject_is_empty'] = 'L'oggetto non può essere vuoto.'; +$wb['subject_is_empty'] = 'L\'oggetto non può essere vuoto.'; ?> diff --git a/interface/web/help/templates/help_faq_list.htm b/interface/web/help/templates/help_faq_list.htm index e81dae2e0ba7279ce2c4f5a03203c4e0e04cf15f..28850fe8300e881a6a8407e5e27c516ec48e0ef1 100644 --- a/interface/web/help/templates/help_faq_list.htm +++ b/interface/web/help/templates/help_faq_list.htm @@ -12,5 +12,3 @@
    - - diff --git a/interface/web/index.php b/interface/web/index.php index 4a2103208101e69633d6a18923fc1d81f9137b7e..1bccb1ebe17093938c57fcfadaba577057875ea4 100644 --- a/interface/web/index.php +++ b/interface/web/index.php @@ -41,7 +41,7 @@ if(!isset($_SESSION['s']['module']['name'])) $_SESSION['s']['module']['name'] = $app->uses('tpl'); $app->tpl->newTemplate('main.tpl.htm'); -$app->tpl->setVar('startpage', isset($_SESSION['s']['module']['startpage']) ? $_SESSION['s']['module']['startpage'] : ''); +$app->tpl->setVar('startpage', isset($_SESSION['s']['module']['startpage']) ? $_SESSION['s']['module']['startpage'] : '', true); $app->tpl->setVar('logged_in', ($_SESSION['s']['user']['active'] != 1 ? 'n' : 'y')); // tab change warning? @@ -93,7 +93,7 @@ if(@is_dir($js_d)) { if (!empty($js_d_files)) $app->tpl->setLoop('js_d_includes', $js_d_files); unset($js_d_files); -$app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); +$app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default', true); // Logo $logo = $app->db->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); diff --git a/interface/web/js/mail_domain_dkim.js b/interface/web/js/mail_domain_dkim.js deleted file mode 100755 index 0e9be0aecab976d37fd0dded9827a339d4bf4b52..0000000000000000000000000000000000000000 --- a/interface/web/js/mail_domain_dkim.js +++ /dev/null @@ -1,99 +0,0 @@ -/* -Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh -Copyright (c) 2013, Florian Schaal, info@schaal-24.de -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. - -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 -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -This Javascript is invoked by - * mail/templates/mail_domain_edit.htm to show and/or create the key-pair -*/ - -var request = false; - -//function setRequest(action) { -function setRequest() { - if (window.XMLHttpRequest) { - request = new XMLHttpRequest(); - } else if (window.ActiveXObject) { - try { - request = new ActiveXObject('Msxml2.XMLHTTP'); - } - catch (e) { - try { - request = new ActiveXObject('Microsoft.XMLHTTP'); - } - catch (e) {} - } - } - if (!request) { - alert("Error creating XMLHTTP-instance"); - return false; - } else { - // jQuery depends on domain-module active / inactive - var check = jQuery('#domain_module').val(); - if ( check == "1" ) { - var skillsSelect = document.getElementById("domain"); - var domain = skillsSelect.options[skillsSelect.selectedIndex].text; - } else { - var domain = jQuery('#domain').val(); - } - - // we nedd the client-id to get the dkim-strength of the right mail-server - try { - var clientid = document.getElementById("client_group_id").selectedIndex; // admin and reseller - } - catch (e) { - var clientid = jQuery('#client_id').val();; // user - } - - var selector=jQuery('#dkim_selector').val(); - var publickey=jQuery('#dkim_public').val(); - request.open('POST', 'mail/mail_domain_dkim_create.php', true); - request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - request.send('domain='+domain+'&dkim_selector='+selector+'&dkim_public='+publickey+'&client_id='+clientid); - request.onreadystatechange = interpretRequest; - } -} - -function interpretRequest() { - switch (request.readyState) { - case 4: - if ( request.status != 200 ) { - alert("Request done but NOK\nError:"+request.status); - } else { - document.getElementsByName('dkim_selector')[0].value = request.responseXML.getElementsByTagName('selector')[0].firstChild.nodeValue; - document.getElementsByName('dkim_private')[0].value = request.responseXML.getElementsByTagName('privatekey')[0].firstChild.nodeValue; - document.getElementsByName('dkim_public')[0].value = request.responseXML.getElementsByTagName('publickey')[0].firstChild.nodeValue; - document.getElementsByName('dns_record')[0].value = request.responseXML.getElementsByTagName('dns_record')[0].firstChild.nodeValue; - } - break; - default: - break; - } -} - -//setRequest('show'); diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php index 7c6bf31cbf4dcf4fa56f26afd9f53e7eb05170be..4022454f5b4b3a395d3425f9c5af3755b04f1a0e 100644 --- a/interface/web/js/scrigo.js.php +++ b/interface/web/js/scrigo.js.php @@ -3,6 +3,7 @@ include '../../lib/config.inc.php'; header('Content-Type: text/javascript; charset=utf-8'); // the config file sets the content type header so we have to override it here! require_once '../../lib/app.inc.php'; $lang = (isset($_SESSION['s']['language']) && $_SESSION['s']['language'] != '')?$_SESSION['s']['language']:'en'; +$lang = $app->functions->check_language($lang); include_once ISPC_ROOT_PATH.'/web/strengthmeter/lib/lang/'.$lang.'_strengthmeter.lng'; $app->uses('ini_parser,getconf'); diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 303e2e88c5a96fc25975d417ecdd2c99d51cd5fc..5fb94d80062b1bfca38ead5d8f0a9518f5965913 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -229,12 +229,12 @@ if(count($_POST) > 0) { if ($loginAs) $_SESSION['s_old'] = $oldSession; // keep the way back! $_SESSION['s']['user'] = $user; $_SESSION['s']['user']['theme'] = isset($user['app_theme']) ? $user['app_theme'] : 'default'; - $_SESSION['s']['language'] = $user['language']; + $_SESSION['s']['language'] = $app->functions->check_language($user['language']); $_SESSION["s"]['theme'] = $_SESSION['s']['user']['theme']; if ($loginAs) $_SESSION['s']['plugin_cache'] = $_SESSION['s_old']['plugin_cache']; if(is_file(ISPC_WEB_PATH . '/' . $_SESSION['s']['user']['startmodule'].'/lib/module.conf.php')) { - include_once ISPC_WEB_PATH . '/' . $_SESSION['s']['user']['startmodule'].'/lib/module.conf.php'; + include_once $app->functions->check_include_path(ISPC_WEB_PATH . '/' . $_SESSION['s']['user']['startmodule'].'/lib/module.conf.php'); $menu_dir = ISPC_WEB_PATH.'/' . $_SESSION['s']['user']['startmodule'] . '/lib/menu.d'; if (is_dir($menu_dir)) { if ($dh = opendir($menu_dir)) { @@ -347,7 +347,7 @@ $app->tpl->setVar('login_button_txt', $app->lng('login_button_txt')); $app->tpl->setVar('session_timeout', $server_config_array['session_timeout']); $app->tpl->setVar('session_allow_endless', $server_config_array['session_allow_endless']); //$app->tpl->setInclude('content_tpl', 'login/templates/index.htm'); -$app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); +$app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default', true); //die(isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); // Logo diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 8fc0d1c1c3ce0ebe0e51cb64aeb0adf6f09ff16b..e57ba4e188f6ed0f867d4ab11e6c8f493ef95b5a 100644 --- a/interface/web/login/lib/lang/br_login_as.lng +++ b/interface/web/login/lib/lang/br_login_as.lng @@ -1,6 +1,6 @@ Výchozí motiv byl aktivován automaticky.'; $wb['back_txt'] = 'Zpět'; -$wb['email_error'] = 'E-mail obsahuje nepovolené znaky nebo má neplatný formát.'; +$wb['error_maintenance_mode'] = 'V současné době probíhá údržba systému ISPConfig. Přihlášení zkuste prosím později. Děkujeme Vám za trpělivost.'; +$wb['theme_not_compatible'] = 'Zvolené téma není kompatibilní s aktuální verzí ISPConfig. Zkontrolujte prosím, zda není nová verze tématu.
    Výchozí motiv byl aktivován automaticky.'; $wb['stay_logged_in_txt'] = 'Zapamatovat si přihlášení'; -$wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.'; -$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_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'] = 'Resetování hesla není pro tento účet možné.'; +$wb['lost_password_function_wait_txt'] = 'Nyní nemůžete požádat o resetování hesla. Prosím, vyčkejte několik minut.'; +$wb['lost_password_function_expired_txt'] = 'Tento aktivační odkaz již vypršel. Zažádejte, prosím o nový.'; +$wb['lost_password_function_denied_txt'] = 'Tento aktivační odkaz není platný.'; ?> diff --git a/interface/web/login/lib/lang/nl_login_as.lng b/interface/web/login/lib/lang/nl_login_as.lng index 1952618e0e5565bc2c0100bd8776f0a9be08f757..1710f0e4f875b070b55e7eb2802087dddb68ad9c 100644 --- a/interface/web/login/lib/lang/nl_login_as.lng +++ b/interface/web/login/lib/lang/nl_login_as.lng @@ -11,4 +11,4 @@ $wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Al $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; $wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; $wb['btn_nologout_txt'] = 'No, logout'; -?> \ No newline at end of file +?> diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng index 2fdafc39802f61bc8cb1b5ba569d58cc144db0dc..6f35237f5fee96ec05626de55aa9873605f96976 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 @@ \ No newline at end of file diff --git a/interface/web/login/login_as.php b/interface/web/login/login_as.php index 4b78c6c41b530b1a9a3b10842b53e9e12e6c084a..159f15b77ea390805c8f4f8ba3e5a855cb421459 100644 --- a/interface/web/login/login_as.php +++ b/interface/web/login/login_as.php @@ -83,7 +83,7 @@ $dbData = $app->db->queryOneRecord( * TODO: move the login_as form to a template file -> themeability */ -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_login_as.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_login_as.lng'; include $lng_file; echo ' diff --git a/interface/web/login/logout.php b/interface/web/login/logout.php index db5f3adbcc39396ee054a77a2bd48eb5c937b850..931b66931f51e07284208b63601fd310e24aa08b 100644 --- a/interface/web/login/logout.php +++ b/interface/web/login/logout.php @@ -43,7 +43,7 @@ if (isset($_GET['l']) && ($_GET['l']== 1)) $forceLogout = true; if ((isset($_SESSION['s_old']) && ($_SESSION['s_old']['user']['typ'] == 'admin' || $app->auth->has_clients($_SESSION['s_old']['user']['userid']))) && (!$forceLogout)){ $utype = ($_SESSION['s_old']['user']['typ'] == 'admin' ? 'admin' : 'reseller'); - $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_login_as.lng'; + $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_login_as.lng'; include $lng_file; echo '



    diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php index c0d454cd326fce1f1e6ae5d72b55bcf5675cfbb2..02c71f2948383a02202dfc4b53e83f2a5a2bbc46 100644 --- a/interface/web/login/password_reset.php +++ b/interface/web/login/password_reset.php @@ -43,7 +43,7 @@ $app->tpl->setInclude('content_tpl', 'templates/password_reset.htm'); $app->tpl_defaults(); -include ISPC_ROOT_PATH.'/web/login/lib/lang/'.$_SESSION['s']['language'].'.lng'; +include ISPC_ROOT_PATH.'/web/login/lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; $app->tpl->setVar($wb); $continue = true; @@ -156,7 +156,7 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != ' if(isset($_POST) && count($_POST) > 0) $app->tpl->setVar("msg", $wb['pw_error_noinput']); } -$app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); +$app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default', true); // Logo $logo = $app->db->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php new file mode 100644 index 0000000000000000000000000000000000000000..2a1a7561677d8195e823e0ed487f8d71447d7c75 --- /dev/null +++ b/interface/web/mail/ajax_get_json.php @@ -0,0 +1,118 @@ +auth->check_module_permissions('mail'); + +$type = $_GET['type']; +$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; + $rec = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = ?", $domain); + $server_id = $rec['server_id']; + $maildomain = $rec['domain']; + unset($rec); + $mail_config = $app->getconf->get_server_config($server_id, 'mail'); + $dkim_strength = $app->functions->intval($mail_config['dkim_strength']); + 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); + unlink("../../temp/random-data.bin"); + $dkim_private=''; + foreach($privkey as $values) $dkim_private=$dkim_private.$values."\n"; + + if ($dkim_public != '' && $maildomain != '') { + if (validate_domain($domain) && validate_selector($dkim_selector) ) { + //* get active selectors from dns + $soa_rec = $app->db->queryOneRecord("SELECT origin FROM dns_soa WHERE active = 'Y' AND origin = ?", $domain.'.'); + if (isset($soa_rec) && !empty($soa_rec)) { + //* check for a dkim-record in the dns? + $dns_data = $app->db->queryOneRecord("SELECT name FROM dns_rr WHERE name = ? AND active = 'Y'", $dkim_selector.'._domainkey.'.$domain.'.'); + if (!empty($dns_data)){ + $selector = str_replace( '._domainkey.'.$domain.'.', '', $dns_data['name']); + } else { + } + } + if ($dkim_selector == $selector || !isset($selector)) { + $selector = substr($old_selector,0,53).time(); //* add unix-timestamp to delimiter to allow old and new key in the dns + } + } else { + $selector = 'invalid domain or selector'; + } + unset($dkim_public); + exec('echo '.escapeshellarg($dkim_private).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result); + 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); + foreach($pubkey as $values) $dkim_public=$dkim_public.$values."\n"; + $selector = $dkim_selector; + } + + $dns_record=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$dkim_public); + $dns_record = str_replace(array("\r\n", "\n", "\r"),'',$dns_record); + + $dkim_private=json_encode($dkim_private); + $dkim_private=substr($dkim_private, 1, -1); + + $dkim_public=json_encode($dkim_public); + $dkim_public=substr($dkim_public, 1, -1); + + $json = '{'; + $json .= '"dkim_private":"'.$dkim_private.'"'; + $json .= ',"dkim_public":"'.$dkim_public.'"'; + $json .= ',"dkim_selector":"'.$selector.'"'; + $json .= ',"dns_record":"'.$dns_record.'"'; + $json .= ',"domain":"'.$domain.'"'; + $json .= '}'; +} +header('Content-type: application/json'); +echo $json; + +function validate_domain($domain) { + $regex = '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/'; + if ( preg_match($regex, $domain) === 1 ) return true; else return false; +} + +function validate_selector($selector) { + $regex = '/^[a-z0-9]{0,63}$/'; + if ( preg_match($regex, $selector) === 1 ) return true; else return false; +} + +?> diff --git a/interface/web/mail/backup_stats.php b/interface/web/mail/backup_stats.php index ec32d35f8e3955c137c15974c4a8b71f4344c7db..f3e0c7a6f009216c538bbe32efedbf988061884d 100644 --- a/interface/web/mail/backup_stats.php +++ b/interface/web/mail/backup_stats.php @@ -21,16 +21,19 @@ class list_action extends listform_actions { $app->uses('functions'); $rec = parent::prepareDataRow($rec); - - $rec['active'] = "
    Yes
    "; - if ($rec['backup_interval'] === 'none') { - $rec['active'] = "
    No
    "; + //var_dump($rec); + $rec['active'] = $app->lng('yes_txt'); + if ($rec['backup_interval'] === 'none' || $rec['backup_interval'] === '') { + $rec['backup_interval'] = strtolower($app->lng('None')); + $rec['active'] = $app->lng('no_txt'); $rec['backup_copies'] = 0; } + $rec['interval_sort'] = $rec['type'] . $rec['backup_interval']; $recBackup = $app->db->queryOneRecord('SELECT COUNT(backup_id) AS backup_count FROM mail_backup WHERE mailuser_id = ?', $rec['mailuser_id']); $rec['backup_copies_exists'] = $recBackup['backup_count']; unset($recBackup); $recBackup = $app->db->queryOneRecord('SELECT SUM(filesize) AS backup_size FROM mail_backup WHERE mailuser_id = ?', $rec['mailuser_id']); + $rec['backup_size_sort'] = $recBackup['backup_size']; $rec['backup_size'] = $app->functions->formatBytes($recBackup['backup_size']); return $rec; diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php index 64c5992483e7f78cc514ec9bd7c67f812f3e1e0e..66db01e5aa51c5823670826acae8398372239036 100644 --- a/interface/web/mail/form/mail_aliasdomain.tform.php +++ b/interface/web/mail/form/mail_aliasdomain.tform.php @@ -103,7 +103,11 @@ $form["tabs"]['alias'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), 'default' => '', 'value' => '', diff --git a/interface/web/mail/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php index f0b35d21cec335be34b0cb205ab7e6bacd428ba2..8b268147fb0a18301d33da51722729f7585187c4 100644 --- a/interface/web/mail/form/mail_blacklist.tform.php +++ b/interface/web/mail/form/mail_blacklist.tform.php @@ -76,6 +76,12 @@ $form["tabs"]['blacklist'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'source_error_notempty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '30', 'maxlength' => '255' diff --git a/interface/web/mail/form/mail_forward.tform.php b/interface/web/mail/form/mail_forward.tform.php index 3c891506b9e69a64abb916c9ddd3662bea4b6730..3c902b4221f717c456133c748238c8e1d77304cd 100644 --- a/interface/web/mail/form/mail_forward.tform.php +++ b/interface/web/mail/form/mail_forward.tform.php @@ -98,7 +98,9 @@ $form["tabs"]['forward'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') ), 'default' => '', 'value' => '', diff --git a/interface/web/mail/form/mail_get.tform.php b/interface/web/mail/form/mail_get.tform.php index 4521e4002882f1ad6c9902f7740bc029da282149..9f7de76e013273ad615082307b38f2b518c4a09b 100644 --- a/interface/web/mail/form/mail_get.tform.php +++ b/interface/web/mail/form/mail_get.tform.php @@ -109,6 +109,12 @@ $form["tabs"]['mailget'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'source_username_error_isempty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/mail_mailinglist.tform.php b/interface/web/mail/form/mail_mailinglist.tform.php index 643961861bcdf8d1549d47ed1bbbb5837ba76684..2914e42f833091731a6c92e146b6709a6f0f070c 100644 --- a/interface/web/mail/form/mail_mailinglist.tform.php +++ b/interface/web/mail/form/mail_mailinglist.tform.php @@ -107,6 +107,12 @@ $form["tabs"]['mailinglist'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'listname_error_unique'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/mail_relay_recipient.tform.php b/interface/web/mail/form/mail_relay_recipient.tform.php index 4c5b2b1db1656d4fcad9531f45f216733bf997f7..34c23861e47fbfd5f8b01fded64c9f62f643c4b4 100644 --- a/interface/web/mail/form/mail_relay_recipient.tform.php +++ b/interface/web/mail/form/mail_relay_recipient.tform.php @@ -76,6 +76,12 @@ $form["tabs"]['relay_recipient'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'source_error_notempty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -83,6 +89,12 @@ $form["tabs"]['relay_recipient'] = array ( 'access' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'OK', 'value' => 'OK', 'width' => '30', diff --git a/interface/web/mail/form/mail_spamfilter.tform.php b/interface/web/mail/form/mail_spamfilter.tform.php index fe3f6c0f2695f6f77e3f94105fd10dd60e546a06..fb9a3c311be5679cc1f2d963cf4e16d00da2ceca 100644 --- a/interface/web/mail/form/mail_spamfilter.tform.php +++ b/interface/web/mail/form/mail_spamfilter.tform.php @@ -108,6 +108,12 @@ $form["tabs"]['spamfilter'] = array ( 'spam_rewrite_subject' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '***SPAM***', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php index 000584246bbd0b8999832707ab5360732ab4cdb9..f55541346ce171beba72964a13499e4a248c3722 100644 --- a/interface/web/mail/form/mail_transport.tform.php +++ b/interface/web/mail/form/mail_transport.tform.php @@ -68,7 +68,7 @@ $form["tabs"]['transport'] = array ( 'formtype' => 'SELECT', 'default' => '', 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND mail_server = 1 AND {AUTHSQL} ORDER BY server_name', 'keyfield'=> 'server_id', 'valuefield'=> 'server_name' ), @@ -82,7 +82,11 @@ $form["tabs"]['transport'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), 'default' => '', 'value' => '', @@ -93,6 +97,12 @@ $form["tabs"]['transport'] = array ( 'transport' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 3d2b66daac0e56cedcc605db22a30261bc067938..631c507f900be8866843cb02c9d2bb509fcea648 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -211,6 +211,12 @@ $form["tabs"]['mailuser'] = array( 'maildir' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -219,6 +225,12 @@ $form["tabs"]['mailuser'] = array( 'maildir_format' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -227,6 +239,12 @@ $form["tabs"]['mailuser'] = array( 'homedir' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -310,6 +328,12 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') { 'autoresponder_subject' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'Out of office reply', 'value' => '', 'width' => '30', @@ -318,6 +342,10 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') { 'autoresponder_text' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index 341f8ad857d5061f6417543bfb4002d1edd7b69f..02dfa59b470e459f6436cc4d49a5e8de75ead280 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -73,6 +73,12 @@ $form["tabs"]['filter'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'rulename_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -82,7 +88,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', 'Detail'=>'detail_txt') ), 'op' => array ( 'datatype' => 'VARCHAR', @@ -97,6 +103,10 @@ $form["tabs"]['filter'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'searchterm_is_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php index ce8f954e5be9b6510144d7cdff0d578bd258702c..00fc971647ef9c87fea815e4f2fb958d03f182c0 100644 --- a/interface/web/mail/form/mail_whitelist.tform.php +++ b/interface/web/mail/form/mail_whitelist.tform.php @@ -76,6 +76,12 @@ $form["tabs"]['whitelist'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'source_error_notempty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -83,6 +89,12 @@ $form["tabs"]['whitelist'] = array ( 'access' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'OK', 'value' => 'OK', 'width' => '30', diff --git a/interface/web/mail/form/spamfilter_blacklist.tform.php b/interface/web/mail/form/spamfilter_blacklist.tform.php index a6637473eba94f8dee3374506326d1c161858fee..3514eed4344fa049149bc32ec96d9dd40addffb9 100644 --- a/interface/web/mail/form/spamfilter_blacklist.tform.php +++ b/interface/web/mail/form/spamfilter_blacklist.tform.php @@ -72,6 +72,12 @@ $form["tabs"]['blacklist'] = array ( 'wb' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'B', 'value' => array('W' => 'blacklist', 'B' => 'Blacklist') ), @@ -90,6 +96,17 @@ $form["tabs"]['blacklist'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'email_error_notempty'), ), diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php index da63732c80a24a3a5e6695980c9fcc767e4bb09b..31e8b8092a0833023f677dc7ea9a6ccef7e40a0a 100644 --- a/interface/web/mail/form/spamfilter_policy.tform.php +++ b/interface/web/mail/form/spamfilter_policy.tform.php @@ -65,6 +65,12 @@ $form["tabs"]['policy'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'policyname_error_notempty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '30', 'maxlength' => '255' @@ -129,6 +135,12 @@ $form["tabs"]['quarantine'] = array ( 'virus_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -137,6 +149,12 @@ $form["tabs"]['quarantine'] = array ( 'spam_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -145,6 +163,12 @@ $form["tabs"]['quarantine'] = array ( 'banned_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -153,6 +177,12 @@ $form["tabs"]['quarantine'] = array ( 'bad_header_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -161,6 +191,12 @@ $form["tabs"]['quarantine'] = array ( 'clean_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -169,6 +205,12 @@ $form["tabs"]['quarantine'] = array ( 'other_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -237,6 +279,12 @@ $form["tabs"]['taglevel'] = array ( 'spam_subject_tag' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -245,6 +293,12 @@ $form["tabs"]['taglevel'] = array ( 'spam_subject_tag2' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -268,6 +322,12 @@ $form["tabs"]['other'] = array ( 'addr_extension_virus' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -276,6 +336,12 @@ $form["tabs"]['other'] = array ( 'addr_extension_spam' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -284,6 +350,12 @@ $form["tabs"]['other'] = array ( 'addr_extension_banned' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -292,6 +364,12 @@ $form["tabs"]['other'] = array ( 'addr_extension_bad_header' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -318,6 +396,12 @@ $form["tabs"]['other'] = array ( 'newvirus_admin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -326,6 +410,12 @@ $form["tabs"]['other'] = array ( 'virus_admin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -334,6 +424,12 @@ $form["tabs"]['other'] = array ( 'banned_admin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -342,6 +438,12 @@ $form["tabs"]['other'] = array ( 'bad_header_admin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -350,6 +452,12 @@ $form["tabs"]['other'] = array ( 'spam_admin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -367,6 +475,12 @@ $form["tabs"]['other'] = array ( 'banned_rulenames' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/form/spamfilter_users.tform.php b/interface/web/mail/form/spamfilter_users.tform.php index 0eba0bbefbcc228b29b4f5102f49122b0bd4eb0a..8ef3c4e131872ca1bba7cc0458ca133d71d4e870 100644 --- a/interface/web/mail/form/spamfilter_users.tform.php +++ b/interface/web/mail/form/spamfilter_users.tform.php @@ -91,7 +91,15 @@ $form["tabs"]['users'] = array ( 'formtype' => 'TEXT', 'default' => '', 'filters' => array( 0 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 2 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL'), + 3 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 4 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8') ), 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'email_error_notempty'), @@ -107,6 +115,12 @@ $form["tabs"]['users'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'fullname_error_notempty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'value' => '', 'width' => '30', 'maxlength' => '255' diff --git a/interface/web/mail/form/spamfilter_whitelist.tform.php b/interface/web/mail/form/spamfilter_whitelist.tform.php index 5f8a176be715b1e60e14da5d799a6f8fadb7d4e1..f0802fa4912c2e8f298f221e3387470f963bc0f8 100644 --- a/interface/web/mail/form/spamfilter_whitelist.tform.php +++ b/interface/web/mail/form/spamfilter_whitelist.tform.php @@ -72,6 +72,12 @@ $form["tabs"]['whitelist'] = array ( 'wb' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'W', 'value' => array('W' => 'Whitelist', 'B' => 'Blacklist') ), @@ -95,7 +101,11 @@ $form["tabs"]['whitelist'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'email_error_notempty'), diff --git a/interface/web/mail/form/xmpp_domain.tform.php b/interface/web/mail/form/xmpp_domain.tform.php index 095c72fba2317415284885be53849b5fa03f02c8..b39d199df0cddd138ae1a37718ec2927640e22d8 100644 --- a/interface/web/mail/form/xmpp_domain.tform.php +++ b/interface/web/mail/form/xmpp_domain.tform.php @@ -55,10 +55,10 @@ $form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete -$muc_available = $muc_pastebin_available = $muc_httparchive_available = $anon_available = $vjud_available = $proxy_available = $status_available = true; +$muc_available = $muc_pastebin_available = $muc_httparchive_available = $anon_available = $vjud_available = $proxy_available = $status_available = $webpresence_available = $http_upload_available = true; if(!$app->auth->is_admin()) { $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT limit_xmpp_muc, limit_xmpp_anon, limit_xmpp_vjud, limit_xmpp_proxy, limit_xmpp_status, limit_xmpp_pastebin, limit_xmpp_httparchive FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + $client = $app->db->queryOneRecord("SELECT limit_xmpp_muc, limit_xmpp_anon, limit_xmpp_vjud, limit_xmpp_proxy, limit_xmpp_status, limit_xmpp_pastebin, limit_xmpp_httparchive, limit_xmpp_webpresence, limit_xmpp_http_upload FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); if($client['limit_xmpp_muc'] != 'y') $muc_available = false; if($client['limit_xmpp_pastebin'] != 'y' || $client['limit_xmpp_muc'] != 'y') $muc_pastebin_available = false; @@ -67,8 +67,14 @@ if(!$app->auth->is_admin()) { if($client['limit_xmpp_vjud'] != 'y') $vjud_available = false; if($client['limit_xmpp_proxy'] != 'y') $proxy_available= false; if($client['limit_xmpp_status'] != 'y') $status_available = false; + if($client['limit_xmpp_webpresence'] != 'y') $webpresence_available = false; + if($client['limit_xmpp_http_upload'] != 'y') $http_upload_available = false; } +$app->uses('getconf'); +$xmpp_config = $app->getconf->get_global_config('xmpp'); + + $form["tabs"]['domain'] = array ( 'title' => "Domain", 'width' => 100, @@ -139,12 +145,22 @@ $form["tabs"]['domain'] = array ( 'registration_message' => array( 'datatype' => 'TEXT', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => "", 'value' => '' ), 'domain_admins' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '15', @@ -219,6 +235,22 @@ if($status_available) 'value' => array(0 => 'n', 1 => 'y') ); +if($webpresence_available) + $form['tabs']['features']['fields']['use_webpresence'] = array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ); + +if($http_upload_available) + $form['tabs']['features']['fields']['use_http_upload'] = array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ); + if($muc_available) $form["tabs"]['muc'] = array ( @@ -243,8 +275,8 @@ if($muc_available) 'muc_restrict_room_creation' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', - 'default' => '1', - 'value' => array(0 => 'Everyone', 1 => 'Members', 2 => 'Admins') + 'default' => 'm', + 'value' => array('n' => 'Everyone', 'm' => 'Members', 'y' => 'Admins') ), 'muc_admins' => array( 'datatype' => 'VARCHAR', diff --git a/interface/web/mail/lib/lang/br.lng b/interface/web/mail/lib/lang/br.lng index dbd930fe584d1262eba15fcab057a2bae0d981fd..3ae45b5db0c1c101eb97653392d025b27fa2d361 100644 --- a/interface/web/mail/lib/lang/br.lng +++ b/interface/web/mail/lib/lang/br.lng @@ -12,8 +12,6 @@ $wb['Get Email'] = 'Busca de e-mail'; $wb['Spamfilter'] = 'Filtro anti-spam'; $wb['Email Routing'] = 'Transportes'; $wb['Email transport'] = 'Transportes'; -$wb['Mailing List'] = 'Lista de e-mails'; -$wb['Mailing List'] = 'Lista de e-mails'; $wb['Mailbox'] = 'Contas de e-mail'; $wb['Autoresponder'] = 'Resposta automática'; $wb['Mail Filter'] = 'Filtros'; @@ -37,9 +35,6 @@ $wb['Email Accounts'] = 'Contas de e-mail'; $wb['User / Domain'] = 'Usuário/domínio'; $wb['Server Settings'] = 'Configurações do servidor'; $wb['Fetchmail'] = 'Contas de busca'; -$wb['XMPP Domain'] = 'Domínios xmpp'; -$wb['XMPP Account'] = 'Contas xmpp'; -$wb['Backup Stats'] = 'Estatísticas de backup'; $wb['Mailbox traffic'] = 'Tráfego'; $wb['Statistics'] = 'Estatísticas'; $wb['Postfix Whitelist'] = 'Postfix (lista branca)'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 4407e22adc21fbcf169aafd32ba3249521abf4e7..a786566277f1b6ef13de16713847e8b2e27c839c 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -35,7 +35,7 @@ $wb['name_txt'] = 'Nome real'; $wb['name_optional_txt'] = '(Opcional)'; $wb['autoresponder_active'] = 'Ativar autoresposta'; $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['cc_error_isemail'] = 'O campo \"Enviar cópia para\" deve conter um endereço de e-mail válido'; $wb['domain_txt'] = 'Domínio'; $wb['now_txt'] = 'Agora'; $wb['login_error_unique'] = 'O acesso já está em uso.'; @@ -48,7 +48,7 @@ $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['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.'; diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng index d0f6157cb4291c525d8b049a249fc664a5c63792..6b9deb3a9be2824a99b7c0f25d4a6b236cff25df 100644 --- a/interface/web/mail/lib/lang/cz.lng +++ b/interface/web/mail/lib/lang/cz.lng @@ -37,12 +37,12 @@ $wb['User / Domain'] = 'Uživatel / Doména'; $wb['Server Settings'] = 'Nastavení serveru'; $wb['Fetchmail'] = 'Externí získávání e-mailů'; $wb['Mailbox traffic'] = 'Přenesená data'; +$wb['Statistics'] = 'Statistiky'; $wb['Postfix Whitelist'] = 'Postfix bílá listina'; $wb['Postfix Blacklist'] = 'Postfix černá listina'; $wb['Content Filter'] = 'Obsahový filtr'; $wb['Global Filters'] = 'Globální filtry'; $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'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_user_filter.lng b/interface/web/mail/lib/lang/de_mail_user_filter.lng index e951d18c6bdb33a96ec2a2868075b778a7d32eaf..d789c025d758318e7983aaa19bb968423754643f 100644 --- a/interface/web/mail/lib/lang/de_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/de_mail_user_filter.lng @@ -27,4 +27,5 @@ $wb['reject_txt'] = 'Abweisen'; $wb['stop_txt'] = 'Stop'; $wb['move_to_txt'] = 'Verschiebe nach'; $wb['mark_read_txt'] = 'Als gelesen markieren'; +$wb['detail_txt'] = 'Detail-Angabe des Empfängers (user+detail@domain.com)'; ?> diff --git a/interface/web/mail/lib/lang/en.lng b/interface/web/mail/lib/lang/en.lng index e5f9e678c79eda6a4741562f06f1b337cfedeaef..e320511bbc699447217f94ff444f09945ca7ce30 100644 --- a/interface/web/mail/lib/lang/en.lng +++ b/interface/web/mail/lib/lang/en.lng @@ -20,7 +20,6 @@ $wb['Email filter'] = 'Email filter'; $wb['Email Whitelist'] = 'Email Whitelist'; $wb['Whitelist'] = 'Whitelist'; $wb['Spamfilter blacklist'] = 'Spamfilter blacklist'; -$wb['Blacklist'] = 'Blacklist'; $wb['Spamfilter Config'] = 'Spamfilter Config'; $wb['Server'] = 'Server'; $wb['Spamfilter policy'] = 'Spamfilter policy'; @@ -31,13 +30,11 @@ $wb['Other'] = 'Other'; $wb['Spamfilter users'] = 'Spamfilter users'; $wb['Users'] = 'Users'; $wb['Spamfilter Whitelist'] = 'Spamfilter Whitelist'; -$wb['Whitelist'] = 'Whitelist'; $wb['Email'] = 'Email'; $wb['Email Mailbox'] = 'Email Mailbox'; $wb['Email Accounts'] = 'Email Accounts'; $wb['User / Domain'] = 'User / Domain'; $wb['Server Settings'] = 'Server Settings'; -$wb['Spamfilter'] = 'Spamfilter'; $wb['Fetchmail'] = 'Fetchmail'; $wb['Mailbox traffic'] = 'Mailbox traffic'; $wb['Statistics'] = 'Statistics'; @@ -48,4 +45,4 @@ $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 +?> 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 6bec7601c32f7c0277a0c4b44baf90167233cad2..6f1a62ae138021047a00abd20d9f6407232ec0c4 100644 --- a/interface/web/mail/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/en_mail_user_filter.lng @@ -27,4 +27,5 @@ $wb['reject_txt'] = 'Reject'; $wb['stop_txt'] = 'Stop'; $wb['move_to_txt'] = 'Move to'; $wb['mark_read_txt'] = 'Mark as read'; +$wb['detail_txt'] = 'Detail part in recipient (user+detail@domain.com)'; ?> diff --git a/interface/web/mail/lib/lang/en_xmpp_domain.lng b/interface/web/mail/lib/lang/en_xmpp_domain.lng index f1da77ba2982cd082929d00250decf05d4bff728..70afe1e878e5d4023a1165847092dabcc8a9c788 100644 --- a/interface/web/mail/lib/lang/en_xmpp_domain.lng +++ b/interface/web/mail/lib/lang/en_xmpp_domain.lng @@ -26,6 +26,8 @@ $wb["use_http_archive_txt"] = 'Enable HTTP chatroom archive'; $wb["http_archive_show_join_txt"] = 'Show join messages in archive'; $wb["http_archive_show_status_txt"] = 'Show status changes in archive'; $wb["use_status_host_txt"] = 'Enable XML Status host'; +$wb["use_webpresence_txt"] = 'Enable Webpresence'; +$wb["use_http_upload_txt"] = 'Enable HTTP Upload'; $wb["cant_change_domainname_txt"] = 'The Domain name of existing XMPP domain cannot be changed.'; $wb["about_registration_url_txt"] = 'Link to your registration form.'; $wb["about_registration_message_txt"] = 'Description about your account registration process.'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index fa8ac6defaeb6aa04993b2661ed1cf11bafabc88..93c2095e1c75f5bc208a7288ef46ba35b973896b 100755 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -58,7 +58,7 @@ $wb['quota_txt'] = 'Cuota (0 para ilimitada)'; $wb['repeat_password_txt'] = 'Repetir contraseña'; $wb['sender_cc_error_isemail'] = 'El campo -Enviar copia a- no contiene una dirección de correo válida'; $wb['sender_cc_note_txt'] = '(Separe múltiples cuentas de correo con comas)'; -$wb['sender_cc_txt'] = 'Enviar copia a'; +$wb['sender_cc_txt'] = 'Enviar copia saliente a'; $wb['server_id_txt'] = 'id_del_servidor'; $wb['weekly_backup_txt'] = 'Semanalmente'; $wb['password_click_to_set_txt'] = 'Click to set'; diff --git a/interface/web/mail/lib/lang/nl_imail_ml_membership_list.lng b/interface/web/mail/lib/lang/nl_imail_ml_membership_list.lng new file mode 100755 index 0000000000000000000000000000000000000000..a145fb9e5cdd6648f0a9263d91cee436692eb87e --- /dev/null +++ b/interface/web/mail/lib/lang/nl_imail_ml_membership_list.lng @@ -0,0 +1,5 @@ + diff --git a/interface/web/mail/lib/lang/nl_mail_mailinglist.lng b/interface/web/mail/lib/lang/nl_mail_mailinglist.lng index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..5a27977df55de1eb0454b1af1490bdc6e09f01ed 100644 --- a/interface/web/mail/lib/lang/nl_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/nl_mail_mailinglist.lng @@ -19,4 +19,40 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['listname_error_unique'] = 'There is already a mailinglist with name on the server. Please choose a different listname.'; $wb['email_error_isemail'] = 'Email address is invalid.'; $wb['mailinglist_txt'] = 'Mailing list'; +$wb['heading_general_txt'] = 'General'; +$wb['heading_subscription_txt'] = 'Subscription'; +$wb['heading_removal_txt'] = 'Removal'; +$wb['admins_txt'] = 'Admin\'s email'; +$wb['admins_desc_txt'] = 'The additional email addresses that get mails to list name+admin@listdomain.ltd'; +$wb['subscribers_txt'] = 'Membership'; +$wb['subscribers_desc_txt'] = 'The email addresses subscribed to the list'; +$wb['prefix_txt'] = 'Subject prefix'; +$wb['prefix_desc_txt'] = 'This will alter the Subject: line, and add a prefix if it\'s not present elsewhere'; +$wb['mail_footer_txt'] = 'Footer text'; +$wb['mail_footer_desc_txt'] = 'This content is appended to mail sent to the list'; +$wb['subscribe_policy_txt'] = 'Subscribe policy'; +$wb['sub_disabled_txt'] = 'Disabled'; +$wb['sub_confirm_txt'] = 'Confirm'; +$wb['sub_approval_txt'] = 'Require approval'; +$wb['sub_both_txt'] = 'Confirm and approve'; +$wb['sub_none_txt'] = 'Limitless'; +$wb['posting_policy_txt'] = 'posting policy'; +$wb['post_free_txt'] = 'Free'; +$wb['post_closed_txt'] = 'Closed'; +$wb['post_moderated_txt'] = 'Moderated'; +$wb['list_type_txt'] = 'List type'; +$wb['type_open_txt'] = 'Open'; +$wb['type_closed_txt'] = 'Closed'; +$wb['digestsub_txt'] = 'Enable'; +$wb['digesttext_txt'] = 'Thread summary'; +$wb['digestinterval_txt'] = 'Interval'; +$wb['digestinterval_desc_txt'] = 'Specifies how many days will pass before the next digest is sent. Defaults is 7 days'; +$wb['digestmaxmails_txt'] = 'Max mails'; +$wb['digestmaxmails_desc_txt'] = 'Specifies how many mails can accumulate before digest sending is triggered. Defaults to 50 mails, meaning that if 50 mails arrive to the list before digestinterval have passed, the digest is delivered'; +$wb['archive_txt'] = 'Archive'; +$wb['archive_desc_txt'] = 'If checked, the mail will be saved in the archive and not simply deleted'; +$wb['welcomeMsg_txt'] = 'Welcome message'; +$wb['goodbyeMsg_txt'] = 'Goodbye message'; +$wb['open_list_txt'] = 'Open'; +$wb['closed_list_txt'] = 'Closed'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_ml_membership.lng b/interface/web/mail/lib/lang/nl_mail_ml_membership.lng new file mode 100755 index 0000000000000000000000000000000000000000..39235450778f5b8ebb0e76f504dde42f2496b384 --- /dev/null +++ b/interface/web/mail/lib/lang/nl_mail_ml_membership.lng @@ -0,0 +1,9 @@ + diff --git a/interface/web/mail/lib/lang/nl_mail_ml_membership_list.lng b/interface/web/mail/lib/lang/nl_mail_ml_membership_list.lng new file mode 100755 index 0000000000000000000000000000000000000000..33d286ed14e5173f00f15848c12a27a378084e10 --- /dev/null +++ b/interface/web/mail/lib/lang/nl_mail_ml_membership_list.lng @@ -0,0 +1,5 @@ + 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 d7165f3cafbbf493a4c7c5223e963814e33722d0..a5ecf1affed049aa32f1bcbed3c67e8c45ab5529 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_filter.lng @@ -27,4 +27,5 @@ $wb['reject_txt'] = 'Reject'; $wb['stop_txt'] = 'Stop'; $wb['move_to_txt'] = 'Move to'; $wb['mark_read_txt'] = 'Mark as read'; +$wb['detail_txt'] = 'Detail part in recipient (user+detail@domain.com)'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_get.lng b/interface/web/mail/lib/lang/ru_mail_get.lng index 541d019d14a1a3f336ce8683b32b7b748de6978f..0ce613cd0538cd1f020b538c1b1a111c5e7edc51 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 94193b5bd6c71bc367ce3e767dcba403b087bbe4..ecc2d25b9de7fad9ee7bc584aea3c7ec8013c1f4 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/list/backup_stats.list.php b/interface/web/mail/list/backup_stats.list.php index 22b87b3b1cb07e3dd332fe36f953dfc653b949ff..7a80a972353558a3d18e86454da22cfdac393b69 100644 --- a/interface/web/mail/list/backup_stats.list.php +++ b/interface/web/mail/list/backup_stats.list.php @@ -29,7 +29,7 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('used_sort', 'files'); +$liste["phpsort"] = array('active', 'interval_sort', 'backup_size_sort', 'backup_copies_exists'); /***************************************************** @@ -52,3 +52,14 @@ $liste['item'][] = array ( 'valuefield' => 'server_name' ) ); +$liste["item"][] = array( 'field' => "email", + 'datatype' => "VARCHAR", + 'filters' => array( 0 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8') + ), + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); diff --git a/interface/web/mail/list/mail_alias.list.php b/interface/web/mail/list/mail_alias.list.php index 044fc84baad24b5db048730d34730f0327cb1091..97716401f12097e3b50292e733e57a5a34dd9a84 100644 --- a/interface/web/mail/list/mail_alias.list.php +++ b/interface/web/mail/list/mail_alias.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "source", diff --git a/interface/web/mail/list/mail_aliasdomain.list.php b/interface/web/mail/list/mail_aliasdomain.list.php index b97d265e48345287c2f8ee15138e3dfcf37d30cd..b2cb315394b30b98962ac2030c61d05901b78a77 100644 --- a/interface/web/mail/list/mail_aliasdomain.list.php +++ b/interface/web/mail/list/mail_aliasdomain.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "source", diff --git a/interface/web/mail/list/mail_blacklist.list.php b/interface/web/mail/list/mail_blacklist.list.php index 45a3a9987c05d1cd219add6014a9b51fe80776a0..a2f3997fd7aaa5c080c8d1072aca29030c08659f 100644 --- a/interface/web/mail/list/mail_blacklist.list.php +++ b/interface/web/mail/list/mail_blacklist.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); diff --git a/interface/web/mail/list/mail_content_filter.list.php b/interface/web/mail/list/mail_content_filter.list.php index c585a1601a0ad602a173b2dc70365a3023cdef4c..53767a153c40911ff5b90fe122ae8492d2d09a68 100644 --- a/interface/web/mail/list/mail_content_filter.list.php +++ b/interface/web/mail/list/mail_content_filter.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); diff --git a/interface/web/mail/list/mail_domain.list.php b/interface/web/mail/list/mail_domain.list.php index 7946f4c51ab4fa375c38f4b9f4859567e05f89fe..5304ab622665fee3f185ed303cc033953cafb712 100644 --- a/interface/web/mail/list/mail_domain.list.php +++ b/interface/web/mail/list/mail_domain.list.php @@ -59,7 +59,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); if($_SESSION['s']['user']['typ'] == 'admin') { diff --git a/interface/web/mail/list/mail_domain_catchall.list.php b/interface/web/mail/list/mail_domain_catchall.list.php index e2aa2d63aa28913e1e0b630157e26fa714000c7b..0f179ead7707b4c8ede24ed3b6fddac9295ab748 100644 --- a/interface/web/mail/list/mail_domain_catchall.list.php +++ b/interface/web/mail/list/mail_domain_catchall.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "source", diff --git a/interface/web/mail/list/mail_forward.list.php b/interface/web/mail/list/mail_forward.list.php index bd334d74347eaf01b4814a44032a9e33c82c9884..decf14c37eb0ed3525fbf72e87339902c1935160 100644 --- a/interface/web/mail/list/mail_forward.list.php +++ b/interface/web/mail/list/mail_forward.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "source", diff --git a/interface/web/mail/list/mail_get.list.php b/interface/web/mail/list/mail_get.list.php index 3163f4e10867ba4040ba51ea7d0d232b248d65a7..0a8c0dcc88332f2631a64b189afc865a18b715de 100644 --- a/interface/web/mail/list/mail_get.list.php +++ b/interface/web/mail/list/mail_get.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/mail_relay_recipient.list.php b/interface/web/mail/list/mail_relay_recipient.list.php index 3e3fd91012c5235c3faf89148c68f2fddf0e8c0b..af00d7c90c633cdb5d451f2e0a9c6a43b63be485 100644 --- a/interface/web/mail/list/mail_relay_recipient.list.php +++ b/interface/web/mail/list/mail_relay_recipient.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/mail_spamfilter.list.php b/interface/web/mail/list/mail_spamfilter.list.php index f1f4e612c28576d84c12cb9c4a1411e3c4afb278..09d3292bc73289677011f0d9112f38dbabacdc43 100644 --- a/interface/web/mail/list/mail_spamfilter.list.php +++ b/interface/web/mail/list/mail_spamfilter.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('1' => "
    ".$app->lng('yes_txt')."
    ", '0' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('1' => $app->lng('yes_txt'), '0' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/mail_transport.list.php b/interface/web/mail/list/mail_transport.list.php index 9124b937fdc7504e676c50d5531c2bf55c7aa3d9..3dd87e17105e129c109dd3562580f38f5ae4ddcb 100644 --- a/interface/web/mail/list/mail_transport.list.php +++ b/interface/web/mail/list/mail_transport.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/mail_user.list.php b/interface/web/mail/list/mail_user.list.php index 1c56140cb24e0a685472df6fe430d1ad323027c9..4513a516c910cb05cdc6bb7d36388240e7afe818 100644 --- a/interface/web/mail/list/mail_user.list.php +++ b/interface/web/mail/list/mail_user.list.php @@ -87,7 +87,7 @@ $liste["item"][] = array( 'field' => "autoresponder", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "postfix", 'datatype' => "VARCHAR", @@ -96,7 +96,7 @@ $liste["item"][] = array( 'field' => "postfix", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "disablesmtp", 'datatype' => "VARCHAR", @@ -105,7 +105,7 @@ $liste["item"][] = array( 'field' => "disablesmtp", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('n' => "
    ".$app->lng('yes_txt')."
    ", 'y' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('n' => $app->lng('yes_txt'), 'y' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "disableimap", 'datatype' => "VARCHAR", @@ -114,7 +114,7 @@ $liste["item"][] = array( 'field' => "disableimap", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('n' => "
    ".$app->lng('yes_txt')."
    ", 'y' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('n' => $app->lng('yes_txt'), 'y' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "disablepop3", 'datatype' => "VARCHAR", @@ -123,6 +123,6 @@ $liste["item"][] = array( 'field' => "disablepop3", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('n' => "
    ".$app->lng('yes_txt')."
    ", 'y' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('n' => $app->lng('yes_txt'), 'y' => $app->lng('no_txt'))); ?> diff --git a/interface/web/mail/list/mail_user_stats.list.php b/interface/web/mail/list/mail_user_stats.list.php index cfbafe11b63b7a64f938e9919100fe9034ddc225..783d2e78072f19ce7cd462cba3deb90c090be5e4 100644 --- a/interface/web/mail/list/mail_user_stats.list.php +++ b/interface/web/mail/list/mail_user_stats.list.php @@ -43,7 +43,7 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('this_month', 'last_month', 'this_year', 'last_year'); +$liste["phpsort"] = array('this_month_sort', 'last_month_sort', 'this_year_sort', 'last_year_sort'); /***************************************************** * Suchfelder diff --git a/interface/web/mail/list/mail_whitelist.list.php b/interface/web/mail/list/mail_whitelist.list.php index 321db859926c97488e78759ed44c7ce1ab2bd4f6..e27edad6dabee79f085dc64b67a96eabad31723c 100644 --- a/interface/web/mail/list/mail_whitelist.list.php +++ b/interface/web/mail/list/mail_whitelist.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/spamfilter_blacklist.list.php b/interface/web/mail/list/spamfilter_blacklist.list.php index b4be804fbe4f15dea44aa13516661f90f0411e76..33e0b433a3e43d9d19964e85dcb92ae85aaaf2b6 100644 --- a/interface/web/mail/list/spamfilter_blacklist.list.php +++ b/interface/web/mail/list/spamfilter_blacklist.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/spamfilter_policy.list.php b/interface/web/mail/list/spamfilter_policy.list.php index e7e0def6824b13163a662eb6b481cdba70b8caf0..646a45c87044ee700126ff2e07cef8d580886138 100644 --- a/interface/web/mail/list/spamfilter_policy.list.php +++ b/interface/web/mail/list/spamfilter_policy.list.php @@ -65,7 +65,7 @@ $liste["item"][] = array( 'field' => "virus_lover", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "spam_lover", @@ -75,7 +75,7 @@ $liste["item"][] = array( 'field' => "spam_lover", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "banned_files_lover", @@ -85,7 +85,7 @@ $liste["item"][] = array( 'field' => "banned_files_lover", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "bad_header_lover", @@ -95,7 +95,7 @@ $liste["item"][] = array( 'field' => "bad_header_lover", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); diff --git a/interface/web/mail/list/spamfilter_users.list.php b/interface/web/mail/list/spamfilter_users.list.php index e9d703b94295eba400fded746be7ca93c8493847..d952640283469e8e5aa95459e04c35d4e1a0dd76 100644 --- a/interface/web/mail/list/spamfilter_users.list.php +++ b/interface/web/mail/list/spamfilter_users.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "local", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('Y' => "
    ".$app->lng('yes_txt')."
    ", 'N' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('Y' => $app->lng('yes_txt'), 'N' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/spamfilter_whitelist.list.php b/interface/web/mail/list/spamfilter_whitelist.list.php index 713187e0080c220ca31981df73a46fa9eaa45d59..0cd3333e6963e5b7caf43c9381b40601e53057c5 100644 --- a/interface/web/mail/list/spamfilter_whitelist.list.php +++ b/interface/web/mail/list/spamfilter_whitelist.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/mail/list/user_quota_stats.list.php b/interface/web/mail/list/user_quota_stats.list.php index e8faae36340d654ab2545669c21c378858920f4c..79111c154dfe44efde488a622169dc8cd2da0074 100644 --- a/interface/web/mail/list/user_quota_stats.list.php +++ b/interface/web/mail/list/user_quota_stats.list.php @@ -42,7 +42,6 @@ $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) $liste["phpsort"] = array('used_sort', 'percentage_sort'); - /***************************************************** * Suchfelder *****************************************************/ diff --git a/interface/web/mail/list/xmpp_domain.list.php b/interface/web/mail/list/xmpp_domain.list.php index be87ec735ea2387241bbbac6120fa0aed8a135ce..191508db3919a67f8ec480eefc9bda476b068758 100644 --- a/interface/web/mail/list/xmpp_domain.list.php +++ b/interface/web/mail/list/xmpp_domain.list.php @@ -59,7 +59,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); if($_SESSION['s']['user']['typ'] == 'admin') { diff --git a/interface/web/mail/mail_alias_edit.php b/interface/web/mail/mail_alias_edit.php index 4292f8f4c2e405c45256a8cdf35000c9eefe8f3c..8f5b27dd2a6954d3ba67c66c47d642995f404e62 100644 --- a/interface/web/mail/mail_alias_edit.php +++ b/interface/web/mail/mail_alias_edit.php @@ -76,14 +76,14 @@ class page_action extends tform_actions { // Getting Domains of the user // $sql = "SELECT domain FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain'; - $sql = "SELECT domain FROM mail_domain WHERE domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') AND ".$app->tform->getAuthSQL('r')." ORDER BY domain"; + $sql = "SELECT domain FROM mail_domain WHERE (".$app->tform->getAuthSQL('r').") AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') ORDER BY domain"; $domains = $app->db->queryAllRecords($sql); $domain_select = ''; if(is_array($domains)) { foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); $selected = ($domain["domain"] == @$email_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } } $app->tpl->setVar("email_domain", $domain_select); diff --git a/interface/web/mail/mail_aliasdomain_edit.php b/interface/web/mail/mail_aliasdomain_edit.php index 918a5f3a05b47a9e3a16a328c030e4d8eaafa35d..ef3b16275c5bf4bf69e5df1de50aa10150cd1d41 100644 --- a/interface/web/mail/mail_aliasdomain_edit.php +++ b/interface/web/mail/mail_aliasdomain_edit.php @@ -82,9 +82,9 @@ class page_action extends tform_actions { foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); $selected = ($domain["domain"] == @$source_domain)?'SELECTED':''; - $source_select .= "\r\n"; + $source_select .= "\r\n"; $selected = ($domain["domain"] == @$destination_domain)?'SELECTED':''; - $destination_select .= "\r\n"; + $destination_select .= "\r\n"; } } $app->tpl->setVar("source_domain", $source_select); diff --git a/interface/web/mail/mail_domain_catchall_edit.php b/interface/web/mail/mail_domain_catchall_edit.php index 60da619e14363aaaa6903febdb4ec81df3e7ed76..4ef18d45e7c8fee393a5b0666c8e5bf6cf6a1bba 100644 --- a/interface/web/mail/mail_domain_catchall_edit.php +++ b/interface/web/mail/mail_domain_catchall_edit.php @@ -82,7 +82,7 @@ class page_action extends tform_actions { foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); $selected = (isset($email_parts[1]) && $domain["domain"] == $email_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } } $app->tpl->setVar("email_domain", $domain_select); diff --git a/interface/web/mail/mail_domain_dkim_create.php b/interface/web/mail/mail_domain_dkim_create.php deleted file mode 100644 index 940c110240dea82c61386a254f0da47532d2eb52..0000000000000000000000000000000000000000 --- a/interface/web/mail/mail_domain_dkim_create.php +++ /dev/null @@ -1,163 +0,0 @@ -auth->check_module_permissions('mail'); - -header('Content-Type: text/xml; charset=utf-8'); -header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); - -function validate_domain($domain) { - $regex = '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/'; - if ( preg_match($regex, $domain) === 1 ) return true; else return false; -} - -function validate_selector($selector) { - $regex = '/^[a-z0-9]{0,63}$/'; - if ( preg_match($regex, $selector) === 1 ) return true; else return false; -} - -/** - * This function formats the public-key - * @param array $pubkey - * @return string public-key - */ -function pub_key($pubkey) { - $public_key=''; - foreach($pubkey as $values) $public_key=$public_key.$values."\n"; - return $public_key; -} - -function get_public_key($private_key, $dkim_strength) { - $validate_dkim=new validate_dkim (); - if($validate_dkim->validate_post('private', $private_key, $dkim_strength)) { /* validate the $_POST-value */ - exec('echo '.escapeshellarg($private_key).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result); - $public_key=pub_key($pubkey); - } else { - $public_key='invalid key'; - } - return $public_key; -} - -/** - * This function updates the selector if a new key-pair was created - * and the selector is already used in the dns-record - * @param string $old_selector - * @return string selector - */ -function new_selector ($old_selector, $domain, $client_id = -1) { - global $app; - //* validate post-values - if ( validate_domain($domain) && validate_selector($old_selector) ) { - //* get active selectors from dns - $soa_rec = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE active = 'Y' AND origin = ?", $domain.'.'); - if ( isset($soa_rec) && !empty($soa_rec) ) { - //* check for a dkim-record in the dns? - $dns_data = $app->db->queryOneRecord("SELECT name FROM dns_rr WHERE name = ? AND active = 'Y'", $old_selector.'._domainkey.'.$domain.'.'); - if ( !empty($dns_data) ){ - $selector = str_replace( '._domainkey.'.$domain.'.', '', $dns_data['name']); - } else { - } - } else { //* no dns-zone found - check for existing mail-domain to create a new selector (we need this if a external dns is used) - if ( $client_id >= 0 ) { - $sql = "SELECT * from mail_domain WHERE dkim = 'y' AND domain = ? AND dkim_selector = ?"; - $maildomain = $app->db->queryOneRecord($sql, $domain, $old_selector); - if ( !empty($maildomain) ) { - $selector = $maildomain['selector']; - } - } - } - if ( $old_selector == $selector) { - $selector = substr($old_selector, 0, 53) . time(); //* add unix-timestamp to delimiter to allow old and new key in the dns - } else { - $selector = $old_selector; - } - } else { - $selector = 'invalid domain or selector'; - } - return $selector; -} - -$client_id = $app->functions->intval($_POST['client_id']); - -//* get dkim-strength for server_id -$sql = "SELECT server_id from mail_domain WHERE domain = ?"; -$mail_server = $app->db->queryOneRecord($sql, $_POST['domain']); -if ( is_array($mail_server) ) { //* we are adding an existing mail-domain - $mail_server_id = $app->functions->intval( $mail_server['server_id'] ); -} else { - $sql = "SELECT default_mailserver FROM client WHERE client_id = ?"; - $mail_server = $app->db->queryOneRecord($sql, $client_id); - $mail_server_id = $app->functions->intval( $mail_server['default_mailserver'] ); -} -unset($mail_server); -$mail_config = $app->getconf->get_server_config($mail_server_id, 'mail'); -$dkim_strength = $app->functions->intval($mail_config['dkim_strength']); -unset($mail_config); - -if ( empty($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); -unlink("../../temp/random-data.bin"); -foreach($privkey as $values) $private_key=$private_key.$values."\n"; -//* check the selector for updated dkim-settings only -if ( isset($_POST['dkim_public']) && !empty($_POST['dkim_public']) ) $selector = new_selector($_POST['dkim_selector'], $_POST['domain'], $client_id); - -if ( !isset($public_key) ) $public_key=get_public_key($private_key, $dkim_strength); - -$dns_record=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$public_key); - -if ( !isset($selector) ) { - if ( validate_selector($_POST['dkim_selector']) ) $selector=$_POST['dkim_selector']; -} -echo "\n"; -echo "\n"; -echo "".$selector."\n"; -echo "".$private_key."\n"; -echo "".$public_key."\n"; -if ( validate_domain($_POST['domain']) ) { - echo ''.$selector.'._domainkey.'.$_POST['domain'].'. 3600 TXT "v=DKIM1; t=s; p='.$dns_record.'"'; -} -echo "\n"; -?> diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index ad383c474bc7ad45204e48acd7d5592624791a64..d7d6ea4c6862bda5ff179078ae38f8efb3474c28 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -80,6 +80,7 @@ class page_action extends tform_actions { $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ''; if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= ""; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -96,16 +97,18 @@ class page_action extends tform_actions { // Get the limits of the client $client_group_id = $_SESSION["s"]["user"]["default_group"]; $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, client.default_mailserver, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ? order by client.contact_name", $client_group_id); + $client = $app->functions->htmlentities($client); // Set the mailserver to the default server of the client $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $client['default_mailserver']); - $app->tpl->setVar("server_id", ""); + $app->tpl->setVar("server_id", ""); unset($tmp); if ($settings['use_domain_module'] != 'y') { // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql, $client['client_id']); + $clients = $app->functions->htmlentities($clients); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -139,7 +142,7 @@ class page_action extends tform_actions { $options_mail_servers = ""; foreach ($mail_servers as $mail_server) { - $options_mail_servers .= ''; + $options_mail_servers .= ''; } $app->tpl->setVar("client_server_id", $options_mail_servers); @@ -164,7 +167,7 @@ class page_action extends tform_actions { if ($domain['domain'] == $this->dataRecord["domain"]) { $domain_select .= " selected"; } - $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "\r\n"; + $domain_select .= ">" . $app->functions->htmlentities($app->functions->idn_decode($domain['domain'])) . "\r\n"; } } else { @@ -190,7 +193,7 @@ class page_action extends tform_actions { if(is_array($policys)) { foreach( $policys as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; - $policy_select .= "\r\n"; + $policy_select .= "\r\n"; } } $app->tpl->setVar("policy", $policy_select); @@ -201,7 +204,7 @@ class page_action extends tform_actions { if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]); + $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true); } else { $app->tpl->setVar("edit_disabled", 0); } @@ -211,10 +214,10 @@ class page_action extends tform_actions { $rec = $app->db->queryOneRecord($sql, $app->functions->intval($_GET['id'])); $dns_key = str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$rec['dkim_public']); $dns_record = $rec['dkim_selector'] . '._domainkey.' . $rec['domain'] . '. 3600 TXT v=DKIM1; t=s; p=' . $dns_key; - $app->tpl->setVar('dkim_selector', $rec['dkim_selector']); - $app->tpl->setVar('dkim_private', $rec['dkim_private']); - $app->tpl->setVar('dkim_public', $rec['dkim_public']); - if (!empty($rec['dkim_public'])) $app->tpl->setVar('dns_record', $dns_record); + $app->tpl->setVar('dkim_selector', $rec['dkim_selector'], true); + $app->tpl->setVar('dkim_private', $rec['dkim_private'], true); + $app->tpl->setVar('dkim_public', $rec['dkim_public'], true); + if (!empty($rec['dkim_public'])) $app->tpl->setVar('dns_record', $dns_record, true); parent::onShowEnd(); } diff --git a/interface/web/mail/mail_forward_edit.php b/interface/web/mail/mail_forward_edit.php index 17ce213cb2a31a511bf09173a55493497b0b305f..e783ad98a9e390363a8b32c34660027ff4c7203b 100644 --- a/interface/web/mail/mail_forward_edit.php +++ b/interface/web/mail/mail_forward_edit.php @@ -76,13 +76,13 @@ class page_action extends tform_actions { // Getting Domains of the user //$sql = "SELECT domain FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain'; - $sql = "SELECT domain FROM mail_domain WHERE domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') AND ".$app->tform->getAuthSQL('r')." ORDER BY domain"; + $sql = "SELECT domain FROM mail_domain WHERE (".$app->tform->getAuthSQL('r').") AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') ORDER BY domain"; $domains = $app->db->queryAllRecords($sql); $domain_select = ''; foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); $selected = (isset($email_parts[1]) && $domain["domain"] == $email_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } $app->tpl->setVar("email_domain", $domain_select); diff --git a/interface/web/mail/mail_mailinglist_edit.php b/interface/web/mail/mail_mailinglist_edit.php index 96706b3271f9231f1bcd3a465da737038f42f2f7..73680c8a189078b8677dbff570e2367c78ebe8c9 100644 --- a/interface/web/mail/mail_mailinglist_edit.php +++ b/interface/web/mail/mail_mailinglist_edit.php @@ -74,6 +74,7 @@ class page_action extends tform_actions { // Getting Clients of the user $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ''; if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= ""; $tmp_data_record = $app->tform->getDataRecord($this->id); @@ -90,10 +91,12 @@ class page_action extends tform_actions { // Get the limits of the client $client_group_id = $_SESSION["s"]["user"]["default_group"]; $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, client.default_mailserver, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ? order by contact_name", $client_group_id); + $client = $app->functions->htmlentities($client); // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql, $client['client_id']); + $clients = $app->functions->htmlentities($clients); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; $tmp_data_record = $app->tform->getDataRecord($this->id); @@ -113,7 +116,7 @@ class page_action extends tform_actions { if(is_array($domains)) { foreach( $domains as $domain) { $selected = ($domain["domain"] == $this->dataRecord["domain"])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } } $app->tpl->setVar("domain_option", $domain_select); @@ -121,9 +124,9 @@ class page_action extends tform_actions { if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("listname_value", $this->dataRecord["listname"]); - $app->tpl->setVar("domain_value", $this->dataRecord["domain"]); - $app->tpl->setVar("email_value", $this->dataRecord["email"]); + $app->tpl->setVar("listname_value", $this->dataRecord["listname"], true); + $app->tpl->setVar("domain_value", $this->dataRecord["domain"], true); + $app->tpl->setVar("email_value", $this->dataRecord["email"], true); } else { $app->tpl->setVar("edit_disabled", 0); } diff --git a/interface/web/mail/mail_spamfilter_edit.php b/interface/web/mail/mail_spamfilter_edit.php index 6282a38b0ff85596a30322381133af5f9a8772ca..c47ec8b41a72072a94a670cd8702e1b051f735d3 100644 --- a/interface/web/mail/mail_spamfilter_edit.php +++ b/interface/web/mail/mail_spamfilter_edit.php @@ -67,7 +67,7 @@ class page_action extends tform_actions { $domain_select = ''; foreach( $domains as $domain) { $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } $app->tpl->setVar("email_domain", $domain_select); diff --git a/interface/web/mail/mail_transport_edit.php b/interface/web/mail/mail_transport_edit.php index 9707d2fce018433c4e8c0c84a61ba9649548d06a..3923d9c48764bdeecd1a61b6364267e2d98e5cae 100644 --- a/interface/web/mail/mail_transport_edit.php +++ b/interface/web/mail/mail_transport_edit.php @@ -70,6 +70,7 @@ class page_action extends tform_actions { function onShowEnd() { global $app, $conf; + $rec = array(); $types = array('smtp' => 'smtp', 'uucp' => 'uucp', 'slow' => 'slow', 'error' => 'error', 'custom' => 'custom', '' => 'null'); $tmp_parts = explode(":", $this->dataRecord["transport"]); if(!empty($this->id) && !stristr($this->dataRecord["transport"], ':')) { diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 87d3be66bbf2f4a21b0dbf12d7de76f5ab3cf34d..910d7a096a5f1acb49c3e231d1966895a2eeac45 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -77,14 +77,14 @@ class page_action extends tform_actions { // Getting Domains of the user // $sql = "SELECT domain, server_id FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain'; - $sql = "SELECT domain, server_id FROM mail_domain WHERE domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') AND ".$app->tform->getAuthSQL('r')." ORDER BY domain"; + $sql = "SELECT domain, server_id FROM mail_domain WHERE (".$app->tform->getAuthSQL('r').") AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') ORDER BY domain"; $domains = $app->db->queryAllRecords($sql); $domain_select = ''; if(is_array($domains)) { foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); $selected = ($domain["domain"] == @$email_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } } $app->tpl->setVar("email_domain", $domain_select); @@ -100,7 +100,7 @@ class page_action extends tform_actions { if(is_array($policys)) { foreach( $policys as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; - $policy_select .= "\r\n"; + $policy_select .= "\r\n"; } } $app->tpl->setVar("policy", $policy_select); @@ -121,7 +121,7 @@ class page_action extends tform_actions { if($this->dataRecord['autoresponder_subject'] == '') { $app->tpl->setVar('autoresponder_subject', $app->tform->lng('autoresponder_subject')); } else { - $app->tpl->setVar('autoresponder_subject', $this->dataRecord['autoresponder_subject']); + $app->tpl->setVar('autoresponder_subject', $this->dataRecord['autoresponder_subject'], true); } $app->uses('getconf'); diff --git a/interface/web/mail/mail_user_stats.php b/interface/web/mail/mail_user_stats.php index abb5461e541ca7c02866d21c290d303778cfa5d0..55810edcfb3ca7679980389391f50fe128a05c27 100644 --- a/interface/web/mail/mail_user_stats.php +++ b/interface/web/mail/mail_user_stats.php @@ -35,116 +35,31 @@ class list_action extends listform_actions { //** Traffic of the current month $tmp_date = date('Y-m'); $tmp_rec = $app->db->queryOneRecord("SELECT traffic as t FROM mail_traffic WHERE mailuser_id = ? AND month = ?", $rec['mailuser_id'], $tmp_date); -// $rec['this_month'] = number_format($app->functions->intval($tmp_rec['t'])/1024/1024, 0, '.', ' '); + $rec['this_month_sort'] = $tmp_rec['t']; $rec['this_month'] = $app->functions->formatBytes($tmp_rec['t']); - if ($rec['this_month'] == 'NAN') $rec['this_month'] = '0 KB'; //** Traffic of the current year $tmp_date = date('Y'); $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic) as t FROM mail_traffic WHERE mailuser_id = ? AND month like ?", $rec['mailuser_id'], $tmp_date . '%'); -// $rec['this_year'] = number_format($app->functions->intval($tmp_rec['t'])/1024/1024, 0, '.', ' '); + $rec['this_year_sort'] = $tmp_rec['t']; $rec['this_year'] = $app->functions->formatBytes($tmp_rec['t']); - if ($rec['this_year'] == 'NAN') $rec['this_year'] = '0 KB'; //** Traffic of the last month $tmp_date = date('Y-m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); $tmp_rec = $app->db->queryOneRecord("SELECT traffic as t FROM mail_traffic WHERE mailuser_id = ? AND month = ?", $rec['mailuser_id'], $tmp_date); -// $rec['last_month'] = number_format($app->functions->intval($tmp_rec['t'])/1024/1024, 0, '.', ' '); + $rec['last_month_sort'] = $tmp_rec['t']; $rec['last_month'] = $app->functions->formatBytes($tmp_rec['t']); - if ($rec['last_month'] == 'NAN') $rec['last_month'] = '0 KB'; //** Traffic of the last year $tmp_date = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic) as t FROM mail_traffic WHERE mailuser_id = ? AND month like ?", $rec['mailuser_id'], $tmp_date . '%'); -// $rec['last_year'] = number_format($app->functions->intval($tmp_rec['t'])/1024/1024, 0, '.', ' '); + $rec['last_year_sort'] = $tmp_rec['t']; $rec['last_year'] = $app->functions->formatBytes($tmp_rec['t']); - if ($rec['last_year'] == 'NAN') $rec['last_year'] = '0 KB'; //* The variable "id" contains always the index variable $rec['id'] = $rec[$this->idx_key]; return $rec; } - - function getQueryString($no_limit = false) { - global $app; - $sql_where = ''; - - //* Generate the search sql - if($app->listform->listDef['auth'] != 'no') { - if($_SESSION['s']['user']['typ'] == "admin") { - $sql_where = ''; - } else { - $sql_where = $app->tform->getAuthSQL('r', $app->listform->listDef['table']).' and'; - //$sql_where = $app->tform->getAuthSQL('r').' and'; - } - } - if($this->SQLExtWhere != '') { - $sql_where .= ' '.$this->SQLExtWhere.' and'; - } - - $sql_where = $app->listform->getSearchSQL($sql_where); - if($app->listform->listDef['join_sql']) $sql_where .= ' AND '.$app->listform->listDef['join_sql']; - $app->tpl->setVar($app->listform->searchValues); - - $order_by_sql = $this->SQLOrderBy; - - //* Generate SQL for paging - $limit_sql = $app->listform->getPagingSQL($sql_where); - $app->tpl->setVar('paging', $app->listform->pagingHTML); - - $extselect = ''; - $join = ''; - - if(!empty($_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order'])){ - $order = str_replace(' DESC', '', $_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order']); - list($tmp_table, $order) = explode('.', $order); - if($order == 'mail_traffic_last_month'){ - $tmp_date = date('Y-m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $join .= ' INNER JOIN mail_traffic as mt ON '.$app->listform->listDef['table'].'.mailuser_id = mt.mailuser_id '; - $sql_where .= " AND mt.month like '$tmp_date%'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.mail_traffic_last_month', 'traffic', $order_by_sql); - } elseif($order == 'mail_traffic_this_month'){ - $tmp_date = date('Y-m'); - $join .= ' INNER JOIN mail_traffic as mt ON '.$app->listform->listDef['table'].'.mailuser_id = mt.mailuser_id '; - $sql_where .= " AND mt.month like '$tmp_date%'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.mail_traffic_this_month', 'traffic', $order_by_sql); - } elseif($order == 'mail_traffic_last_year'){ - $tmp_date = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(mt.traffic) as calctraffic'; - $join .= ' INNER JOIN mail_traffic as mt ON '.$app->listform->listDef['table'].'.mailuser_id = mt.mailuser_id '; - $sql_where .= " AND mt.month like '$tmp_date%'";; - $order_by_sql = str_replace($app->listform->listDef['table'].'.mail_traffic_last_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY mailuser_id ".$order_by_sql; - } elseif($order == 'mail_traffic_this_year'){ - $tmp_date = date('Y'); - $extselect .= ', SUM(mt.traffic) as calctraffic'; - $join .= ' INNER JOIN mail_traffic as mt ON '.$app->listform->listDef['table'].'.mailuser_id = mt.mailuser_id '; - $sql_where .= " AND mt.month like '$tmp_date%'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.mail_traffic_this_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY mailuser_id ".$order_by_sql; - } - } - - if($this->SQLExtSelect != '') { - if(substr($this->SQLExtSelect, 0, 1) != ',') $this->SQLExtSelect = ','.$this->SQLExtSelect; - $extselect .= $this->SQLExtSelect; - } - - $table_selects = array(); - $table_selects[] = trim($app->listform->listDef['table']).'.*'; - $app->listform->listDef['additional_tables'] = trim($app->listform->listDef['additional_tables']); - if($app->listform->listDef['additional_tables'] != ''){ - $additional_tables = explode(',', $app->listform->listDef['additional_tables']); - foreach($additional_tables as $additional_table){ - $table_selects[] = trim($additional_table).'.*'; - } - } - $select = implode(', ', $table_selects); - - $sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql $limit_sql"; - return $sql; - } - } $list = new list_action; diff --git a/interface/web/mail/templates/backup_stats_list.htm b/interface/web/mail/templates/backup_stats_list.htm index 285246c5e8f56d9e6fec546625b9828c3f85f0f6..8e3e7a16f9055fa8bece1ead5bd7b9100d9e3944 100644 --- a/interface/web/mail/templates/backup_stats_list.htm +++ b/interface/web/mail/templates/backup_stats_list.htm @@ -9,13 +9,24 @@ - - - - - - + + + + + + + + + + + + + + + diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm index 960f4462bc38836e9c2dfa477cb50cca71521cb0..71a6655e80850a7bc1a733856ac20c1635f1301c 100644 --- a/interface/web/mail/templates/mail_domain_edit.htm +++ b/interface/web/mail/templates/mail_domain_edit.htm @@ -101,7 +101,7 @@
    - {tmpl_var name='dkim_generate_txt'} + {tmpl_var name='dkim_generate_txt'}
    @@ -121,4 +121,26 @@ - + + + diff --git a/interface/web/mail/templates/mail_user_stats_list.htm b/interface/web/mail/templates/mail_user_stats_list.htm index 0718cc8aed3444b41da4532da67488f9353e2b3f..f832633315ab76db499dd320b1870b664cded5b6 100644 --- a/interface/web/mail/templates/mail_user_stats_list.htm +++ b/interface/web/mail/templates/mail_user_stats_list.htm @@ -9,11 +9,11 @@
         + +
    - - - - - + + + + + diff --git a/interface/web/mail/templates/user_quota_stats_list.htm b/interface/web/mail/templates/user_quota_stats_list.htm index 4b4b831aab7cc4bbc066d85d4671e249cfbf3395..6d6c007bf7eaf2291ad439a1531c49589debc443 100644 --- a/interface/web/mail/templates/user_quota_stats_list.htm +++ b/interface/web/mail/templates/user_quota_stats_list.htm @@ -8,18 +8,18 @@
    {tmpl_var name='search_limit'}
    - - - - - - + + + + + + - + - - + diff --git a/interface/web/mail/templates/xmpp_domain_edit_modules.htm b/interface/web/mail/templates/xmpp_domain_edit_modules.htm index 8efcf509760b533849287d79e2894d4ce0d57c49..576e16043807c820e678c5df733433a856046770 100644 --- a/interface/web/mail/templates/xmpp_domain_edit_modules.htm +++ b/interface/web/mail/templates/xmpp_domain_edit_modules.htm @@ -49,6 +49,25 @@ + +
    + +
    + {tmpl_var name='use_webpresence'} + {tmpl_var name='xmpp_daemon'} +
    +
    +
    + + +
    + +
    + {tmpl_var name='use_http_upload'} +
    +
    +
    + diff --git a/interface/web/mail/templates/xmpp_user_list.htm b/interface/web/mail/templates/xmpp_user_list.htm index 68668b4928975cc2ac21081e8b38de5fe95a6ce1..1878ed98b6f0c76ba9f92f427870745ff807ad72 100644 --- a/interface/web/mail/templates/xmpp_user_list.htm +++ b/interface/web/mail/templates/xmpp_user_list.htm @@ -50,8 +50,10 @@
    + + diff --git a/interface/web/mail/user_quota_stats.php b/interface/web/mail/user_quota_stats.php index 90a92558fa03871336c6396fe2dee241ab1e724b..f55b5dd11b812dccfd9071dba916c8ef86e1207f 100644 --- a/interface/web/mail/user_quota_stats.php +++ b/interface/web/mail/user_quota_stats.php @@ -53,25 +53,23 @@ class list_action extends listform_actions { if($rec['quota'] == 0){ $rec['quota'] = $app->lng('unlimited'); - $rec['percentage'] = ''; + $rec['percentage'] = '0%'; $rec['percentage_sort'] = 0; + $rec['progressbar'] = -1; } else { $rec['percentage'] = round(100 * $rec['used'] / $rec['quota']) . '%'; $rec['percentage_sort'] = round(100 * $rec['used'] / $rec['quota']); $rec['quota'] = round($rec['quota'] / 1048576, 4).' MB'; + if($rec['percentage_sort'] > 100) { + $rec['progressbar'] = 100; + } else { + $rec['progressbar'] = $rec['percentage_sort']; + } } - + //echo 'progressbar: ' . $rec['progressbar'] . '
    '; $rec['used_sort'] = $rec['used']; -/* - if($rec['used'] < 1544000) { - $rec['used'] = round($rec['used'] / 1024, 4).' KB'; - } else { - $rec['used'] = round($rec['used'] / 1048576, 4).' MB'; - } -*/ $rec['used']=$app->functions->formatBytes($rec['used']); - if ($rec['used'] == 'NAN') $rec['used']='0 KB'; //* The variable "id" contains always the index variable $rec['id'] = $rec[$this->idx_key]; diff --git a/interface/web/mail/xmpp_domain_edit.php b/interface/web/mail/xmpp_domain_edit.php index 7109329f326bd2393cdc71440a5c17e812bec912..aff4c292326642a874f75d063c8ea00dc3204f5f 100644 --- a/interface/web/mail/xmpp_domain_edit.php +++ b/interface/web/mail/xmpp_domain_edit.php @@ -87,12 +87,12 @@ class page_action extends tform_actions { } function onShowEnd() { - global $app, $conf; + global $app; $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); - $read_limits = array('limit_xmpp_pastebin', 'limit_xmpp_httparchive', 'limit_xmpp_anon', 'limit_xmpp_vjud', 'limit_xmpp_proxy', 'limit_xmpp_status'); + $read_limits = array('limit_xmpp_pastebin', 'limit_xmpp_httparchive', 'limit_xmpp_anon', 'limit_xmpp_vjud', 'limit_xmpp_proxy', 'limit_xmpp_status', 'limit_xmpp_webpresence', 'limit_xmpp_http_upload'); if($_SESSION["s"]["user"]["typ"] != 'admin') { $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $client = $app->db->queryOneRecord("SELECT client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); @@ -108,6 +108,7 @@ class page_action extends tform_actions { $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ''; if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= ""; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -124,11 +125,13 @@ class page_action extends tform_actions { // Get the limits of the client $client_group_id = $_SESSION["s"]["user"]["default_group"]; $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ? order by client.contact_name", $client_group_id); + $client = $app->functions->htmlentities($client); if ($settings['use_domain_module'] != 'y') { // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql, $client['client_id']); + $clients = $app->functions->htmlentities($clients); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -162,7 +165,7 @@ class page_action extends tform_actions { $options_xmpp_servers = ""; foreach ($xmpp_servers as $xmpp_server) { - $options_xmpp_servers .= ""; + $options_xmpp_servers .= ""; } $app->tpl->setVar("client_server_id", $options_xmpp_servers); @@ -187,7 +190,7 @@ class page_action extends tform_actions { if ($domain['domain'] == $this->dataRecord["domain"]) { $domain_select .= " selected"; } - $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "\r\n"; + $domain_select .= ">" . $app->functions->htmlentities($app->functions->idn_decode($domain['domain'])) . "\r\n"; } } else { @@ -208,7 +211,7 @@ class page_action extends tform_actions { if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]); + $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true); } else { $app->tpl->setVar("edit_disabled", 0); } @@ -218,7 +221,7 @@ class page_action extends tform_actions { } function onSubmit() { - global $app, $conf; + global $app; /* check if the domain module is used - and check if the selected domain can be used! */ $app->uses('ini_parser,getconf'); @@ -291,19 +294,6 @@ class page_action extends tform_actions { // vjud opt mode if(isset($this->dataRecord["vjud_opt_mode"])) $this->dataRecord["vjud_opt_mode"] = $this->dataRecord["vjud_opt_mode"] == 0 ? 'in' : 'out'; - if(isset($this->dataRecord["muc_restrict_room_creation"])){ - switch($this->dataRecord["muc_restrict_room_creation"]){ - case 0: - $this->dataRecord["muc_restrict_room_creation"] = 'false'; - break; - case 1: - $this->dataRecord["muc_restrict_room_creation"] = 'member'; - break; - case 2: - $this->dataRecord["muc_restrict_room_creation"] = 'true'; - break; - } - } // Reset public registration to 'n', is not yet supported $this->dataRecord["public_registration"] = 'n'; @@ -429,7 +419,7 @@ class page_action extends tform_actions { // purge old rr-record $sql = "SELECT * FROM dns_rr WHERE zone = ? AND (name IN ? AND type = 'CNAME' OR name LIKE ? AND type = 'SRV') AND " . $app->tform->getAuthSQL('r') . " ORDER BY serial DESC"; - $rec = $app->db->queryAllRecords($sql, $new_rr['zone'], array('xmpp', 'pubsub', 'proxy', 'anon', 'vjud', 'muc'), '_xmpp-%'); + $rec = $app->db->queryAllRecords($sql, $new_rr['zone'], array('xmpp', 'pubsub', 'proxy', 'anon', 'vjud', 'muc', 'upload'), '_xmpp-%'); if (is_array($rec[1])) { for ($i=0; $i < count($rec); ++$i) $app->db->datalogDelete('dns_rr', 'id', $rec[$i]['id']); diff --git a/interface/web/mail/xmpp_user_edit.php b/interface/web/mail/xmpp_user_edit.php index 16d440a9f1a5419a968765eb602d077b43b3504e..188de01ae240d7f3331509e581c82df5df0b1494 100644 --- a/interface/web/mail/xmpp_user_edit.php +++ b/interface/web/mail/xmpp_user_edit.php @@ -83,7 +83,7 @@ class page_action extends tform_actions { foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); $selected = ($domain["domain"] == @$jid_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; + $domain_select .= "\r\n"; } } $app->tpl->setVar("jid_domain", $domain_select); diff --git a/interface/web/mailuser/form/mail_user_autoresponder.tform.php b/interface/web/mailuser/form/mail_user_autoresponder.tform.php index 44ce15cd5c9bc2830c8da3a4305fd6eb617449ad..e642534c13fbf34250aedf51ba88173395857f93 100644 --- a/interface/web/mailuser/form/mail_user_autoresponder.tform.php +++ b/interface/web/mailuser/form/mail_user_autoresponder.tform.php @@ -62,6 +62,12 @@ $form["tabs"]['autoresponder'] = array ( 'autoresponder_subject' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => 'Out of office reply', 'value' => '', 'width' => '30', @@ -70,6 +76,10 @@ $form["tabs"]['autoresponder'] = array ( 'autoresponder_text' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', diff --git a/interface/web/mailuser/index.php b/interface/web/mailuser/index.php index b7748ac1ccac8602b806abfc655ef75db125e2b5..c9541df2bd1919395946bcd1379cd16727cbeeb9 100644 --- a/interface/web/mailuser/index.php +++ b/interface/web/mailuser/index.php @@ -13,7 +13,7 @@ $msg = ''; $error = ''; //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_index.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_index.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng index 1665ba14d22763412387e00b009f445090e78d4b..ac4016713bf20014df5e9e7b4b15bfb580500779 100644 --- a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng @@ -18,4 +18,5 @@ $wb['begins_with_txt'] = 'Startet mit'; $wb['ends_with_txt'] = 'Endet mit'; $wb['move_to_txt'] = 'Verschieben nach'; $wb['delete_txt'] = 'Löschen'; +$wb['detail_txt'] = 'Detail-Angabe des Empfängers (user+detail@domain.com)'; ?> 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..652d509741db3269dce302c97268cf66ee8d4ae5 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng @@ -18,4 +18,5 @@ $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; $wb['delete_txt'] = 'Delete'; +$wb['detail_txt'] = 'Detail part in recipient (user+detail@domain.com)'; ?> diff --git a/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng index caaac2e7c4d116ec1da199d82a8e9831fa60c8fa..c4a98624d5f887cea87885509e4f08902e47acf2 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng @@ -1,13 +1,13 @@ diff --git a/interface/web/mailuser/lib/lang/it_mail_user_cc.lng b/interface/web/mailuser/lib/lang/it_mail_user_cc.lng index 01f22f5fc856ca905f89ad73304796b5d8225639..30805635dd18a97be325c441677daf68c0413f8b 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_cc.lng @@ -1,9 +1,9 @@ diff --git a/interface/web/mailuser/lib/lang/it_mail_user_password.lng b/interface/web/mailuser/lib/lang/it_mail_user_password.lng index b5c3af195b36a1fb1be26dce3adada5e0aa4e09f..ef05d564009225674bc34161d38cc65ef4165527 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_password.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng index 9d4c5496ea57b829cbbcc4e00b1ef1f6994c3d9e..a0f889d860c4a5a7d7e86ba36a0058aa5c66a508 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng @@ -1,7 +1,7 @@ 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..2bafccc641f959ea8a5f5988f6f6e0616941c7da 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,22 @@ 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 099fd2f0005d3af0e5ec0a5460dcb001e6c28116..f10dd4ddb24e7abead46488aa725e142b5f93dba 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/mail_user_autoresponder_edit.php b/interface/web/mailuser/mail_user_autoresponder_edit.php index 8007c0fd814ee934db7d7b08f43d18321fcffc41..d93151bf24094f72829e2da89dcfb5321b6ee413 100644 --- a/interface/web/mailuser/mail_user_autoresponder_edit.php +++ b/interface/web/mailuser/mail_user_autoresponder_edit.php @@ -84,7 +84,7 @@ class page_action extends tform_actions { if($this->dataRecord['autoresponder_subject'] == '') { $app->tpl->setVar('autoresponder_subject', $app->tform->lng('autoresponder_subject')); } else { - $app->tpl->setVar('autoresponder_subject', $this->dataRecord['autoresponder_subject']); + $app->tpl->setVar('autoresponder_subject', $this->dataRecord['autoresponder_subject'], true); } parent::onShowEnd(); diff --git a/interface/web/mailuser/mail_user_cc_edit.php b/interface/web/mailuser/mail_user_cc_edit.php index 39e5bdf6f95b01fdf1d865aca92b70138ac5186e..778be781ece87a4d7ee5f35bc715c96aafb2cc01 100644 --- a/interface/web/mailuser/mail_user_cc_edit.php +++ b/interface/web/mailuser/mail_user_cc_edit.php @@ -75,7 +75,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($this->id); - $app->tpl->setVar("email", $rec['email']); + $app->tpl->setVar("email", $rec['email'], true); parent::onShowEnd(); } diff --git a/interface/web/mailuser/mail_user_password_edit.php b/interface/web/mailuser/mail_user_password_edit.php index 07a19259ea0d045e4d3d65ac939d32453dfb6b2f..5c5706177a6b2d0fa41b7a9edd386546764ed688 100644 --- a/interface/web/mailuser/mail_user_password_edit.php +++ b/interface/web/mailuser/mail_user_password_edit.php @@ -63,7 +63,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($_SESSION['s']['user']['mailuser_id']); - $app->tpl->setVar("email", $rec['email']); + $app->tpl->setVar("email", $rec['email'], true); parent::onShowEnd(); } diff --git a/interface/web/mailuser/mail_user_spamfilter_edit.php b/interface/web/mailuser/mail_user_spamfilter_edit.php index 9d3735672184d0d3c3596c0e7eb19fc59a6a27f8..abbea219376204ce922762129849da67122a4738 100644 --- a/interface/web/mailuser/mail_user_spamfilter_edit.php +++ b/interface/web/mailuser/mail_user_spamfilter_edit.php @@ -112,7 +112,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($this->id); - $app->tpl->setVar("email", $rec['email']); + $app->tpl->setVar("email", $rec['email'], true); // Get the spamfilter policys for the user $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", $rec['email']); @@ -122,7 +122,7 @@ class page_action extends tform_actions { if(is_array($policys)) { foreach( $policys as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; - $policy_select .= "\r\n"; + $policy_select .= "\r\n"; } } $app->tpl->setVar("policy", $policy_select); diff --git a/interface/web/monitor/lib/lang/ar.lng b/interface/web/monitor/lib/lang/ar.lng index 7b7f7415981b8d8559e661149789531822a86a81..e00287a8e75da8aade3675ae8ff9b6d0100092cb 100644 --- a/interface/web/monitor/lib/lang/ar.lng +++ b/interface/web/monitor/lib/lang/ar.lng @@ -65,6 +65,7 @@ $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_nosupportedraid1_txt'] = 'At the moment, we support mdadm or mpt-status for monitoring the RAID.
    We cant find any of them at your server.

    This means we can not support your RAID yet.'; $wb['monitor_norkhunter_txt'] = 'RKHunter is not installed, so there is no log data'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'State'; $wb['monitor_serverstate_unknown_txt'] = 'unknown'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/bg.lng b/interface/web/monitor/lib/lang/bg.lng index 526646bb5fbf157e88ccb5b2da0e122161cb4143..0db4623d03fc374f1f6388ef5c4aac55c4912054 100644 --- a/interface/web/monitor/lib/lang/bg.lng +++ b/interface/web/monitor/lib/lang/bg.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_norkhunter_txt'] = 'RKHunter is not installed, so there is no log data'; $wb['monitor_serverstate_server_txt'] = 'Сървър'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Статус'; $wb['monitor_serverstate_unknown_txt'] = 'неизвестно'; $wb['monitor_serverstate_info_txt'] = 'инфо'; diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng index 7dad489c1bd85cf42da92ffac717318d3e38d25a..048fec64be5cbfac4bbcd8175b298cc5bf792552 100644 --- a/interface/web/monitor/lib/lang/br.lng +++ b/interface/web/monitor/lib/lang/br.lng @@ -32,7 +32,6 @@ $wb['Show Update State'] = 'Exibir estado atual'; $wb['Show RAID state'] = 'Exibir estado do RAID'; $wb['Show Server load'] = 'Exibir carga do servidor'; $wb['Show Disk usage'] = 'Exibir uso do disco'; -$wb['Show MySQL Database size'] = 'Exibir tamanho do banco de dados MySQL'; $wb['Show Memory usage'] = 'Exibir uso da memória'; $wb['Show Services'] = 'Exibir serviços'; $wb['Show Mail-Queue'] = 'Exibir fila de e-mails'; @@ -65,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Log do clamav '; $wb['monitor_logs_ispc_txt'] = 'Log do ispconfig'; $wb['monitor_norkhunter_txt'] = 'RKHunter não está instalado, então não existem logs a exibir'; $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)'; diff --git a/interface/web/monitor/lib/lang/ca.lng b/interface/web/monitor/lib/lang/ca.lng index 29859cfae4a56e5e1b70ff9bad1bdccabe64e96f..4575be2ff1f54a8584363c49e8e1e869157d197c 100644 --- a/interface/web/monitor/lib/lang/ca.lng +++ b/interface/web/monitor/lib/lang/ca.lng @@ -68,6 +68,7 @@ $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_nosupportedraid1_txt'] = 'Pour le moment, seuls mdadm ou mpt-status sont supportés pour surveiller le RAID.
    Aucun des deux n\'a été trouvé sur votre serveur.

    Nous ne supportons donc pas votre RAID.'; $wb['monitor_norkhunter_txt'] = 'RKHunter nest pas installé, il ny a donc pas de logs'; $wb['monitor_serverstate_server_txt'] = 'Serveur'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Etat'; $wb['monitor_serverstate_unknown_txt'] = 'inconnu'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng index a4e670df63693505fae2f8b4873fe9e41935bb4d..19a924b6f8988f170487bbde16136fbb32b4e96c 100644 --- a/interface/web/monitor/lib/lang/cz.lng +++ b/interface/web/monitor/lib/lang/cz.lng @@ -10,6 +10,7 @@ $wb['Memory usage'] = 'Využití paměti'; $wb['no_data_serverload_txt'] = 'Nejsou k dispozici žádná data o zatížení serveru. Prosím zkuste to později znova.'; $wb['no_data_memusage_txt'] = 'Nejsou k dispozici žádná data o využití paměti. Prosím zkuste to později znova.'; $wb['no_data_diskusage_txt'] = 'Nejsou k dispozici žádná data o využití disku. Prosím zkuste to později znova.'; +$wb['no_data_database_size_txt'] = 'Nejsou k dispozici žádná data o využití databáze. Prosím zkuste to později znova'; $wb['no_data_cpuinfo_txt'] = 'Nejsou k dispozici žádná data o CPU. Prosím zkuste to později znova.'; $wb['no_data_services_txt'] = 'Nejsou k dispozici žádná data o službách. Prosím zkuste to později znova.'; $wb['no_data_updates_txt'] = 'Nejsou k dispozici žádná data o aktualizacích. Prosím zkuste to později znova.'; @@ -45,6 +46,10 @@ $wb['Show Clamav-Log'] = 'Zobrazit Clamav log'; $wb['Show ISPConfig-Log'] = 'Zobrazit ISPConfig log'; $wb['Show RKHunter-Log'] = 'Zobrazit RKHunter log'; $wb['Show Jobqueue'] = 'Zobrazit frontu úloh'; +$wb['Show fail2ban-Log'] = 'Zobrazit Fail2Ban Log'; +$wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; +$wb['Show IPTables'] = 'Zobrazit IPTables pravidla'; +$wb['Show OpenVz VE BeanCounter'] = 'Zobrazit OpenVz VE BeanCounter'; $wb['monitor_general_serverstate_txt'] = 'Stav serveru'; $wb['monitor_general_systemstate_txt'] = 'Stav systému'; $wb['monitor_diskusage_filesystem_txt'] = 'Souborový systém'; @@ -54,6 +59,10 @@ $wb['monitor_diskusage_used_txt'] = 'Užito'; $wb['monitor_diskusage_available_txt'] = 'Volné'; $wb['monitor_diskusage_usage_txt'] = 'Užití%'; $wb['monitor_diskusage_mounted_txt'] = 'Připojeno na'; +$wb['monitor_database_name_txt'] = 'Databáze'; +$wb['monitor_database_size_txt'] = 'Velikost'; +$wb['monitor_database_client_txt'] = 'Klient'; +$wb['monitor_database_domain_txt'] = 'Doména'; $wb['monitor_logs_mail_txt'] = 'E-mail - Log'; $wb['monitor_logs_mailwarn_txt'] = 'E-mail - Varování - Log'; $wb['monitor_logs_mailerr_txt'] = 'E-mail - Chyby - Log'; @@ -62,8 +71,10 @@ $wb['monitor_logs_ispccron_txt'] = 'ISPConfig cron - Log'; $wb['monitor_logs_freshclam_txt'] = 'Freshclam - Log'; $wb['monitor_logs_clamav_txt'] = 'ClamAV - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; +$wb['monitor_nosupportedraid1_txt'] = 'V současné době, podporujeme nástroje mdadm nebo MPT-stav pro sledování sofwarových RAID polí.
    Nemůžeme najít žádné z nich na serveru.

    To znamená, že nemůžeme monitorovat váš RAID.'; $wb['monitor_norkhunter_txt'] = 'RKHunter není nainstalován, proto zde nejsou žádna data'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Stav'; $wb['monitor_serverstate_unknown_txt'] = 'neznámý'; $wb['monitor_serverstate_info_txt'] = 'info'; @@ -114,6 +125,11 @@ $wb['monitor_serverstate_syslogunknown_txt'] = 'Systémový log: ???'; $wb['monitor_serverstate_updatesok_txt'] = 'Systém je aktuální.'; $wb['monitor_serverstate_updatesneeded_txt'] = 'Jedna nebo více komponent potřebují zaktualizovat'; $wb['monitor_serverstate_updatesunknown_txt'] = 'Systémová aktualizace: ???'; +$wb['monitor_serverstate_beancounterok_txt'] = 'Soubor čítačů (limitů) je v pořádku'; +$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existuje několik málo selhání čítačů (limitů)'; +$wb['monitor_serverstate_beancounterwarning_txt'] = 'Některé čítače (limity) vykazují selhání.'; +$wb['monitor_serverstate_beancountercritical_txt'] = 'Existuje mnoho selhání čítačů (limitů)'; +$wb['monitor_serverstate_beancountererror_txt'] = 'Existuje příliš mnoho selhání čítačů (limitů)'; $wb['monitor_services_online_txt'] = 'Běží'; $wb['monitor_services_offline_txt'] = 'Neběží'; $wb['monitor_services_web_txt'] = 'Web-Server:'; @@ -122,6 +138,7 @@ $wb['monitor_services_smtp_txt'] = 'SMTP-Server:'; $wb['monitor_services_pop_txt'] = 'POP3-Server:'; $wb['monitor_services_imap_txt'] = 'IMAP-Server:'; $wb['monitor_services_mydns_txt'] = 'DNS-Server:'; +$wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_services_mysql_txt'] = 'mySQL-Server:'; $wb['monitor_settings_datafromdate_txt'] = 'Data z: '; $wb['monitor_settings_datetimeformat_txt'] = 'Y-d-m H:i'; @@ -133,31 +150,19 @@ $wb['monitor_title_mailq_txt'] = 'E-mailová fronta'; $wb['monitor_title_raidstate_txt'] = 'Stav pole RAID'; $wb['monitor_title_rkhunterlog_txt'] = 'RKHunter log'; $wb['monitor_title_fail2ban_txt'] = 'Fail2Ban log'; -$wb['monitor_updates_nosupport_txt'] = 'Vaše distribuce nepodporuje toto monitorování'; -$wb['monitor_nosupportedraid1_txt'] = 'V současné době, podporujeme nástroje mdadm nebo MPT-stav pro sledování sofwarových RAID polí.
    Nemůžeme najít žádné z nich na serveru.

    To znamená, že nemůžeme monitorovat váš RAID.'; -$wb['monitor_serverstate_beancounterok_txt'] = 'Soubor čítačů (limitů) je v pořádku'; -$wb['monitor_serverstate_beancounterinfo_txt'] = 'There are vew failure in the beancounter'; -$wb['monitor_serverstate_beancounterwarning_txt'] = 'Některé čítače (limity) vykazují selhání.'; -$wb['monitor_serverstate_beancountercritical_txt'] = 'Existuje mnoho selhání čítačů (limitů)'; -$wb['monitor_serverstate_beancountererror_txt'] = 'Existuje příliš mnoho selhání čítačů (limitů)'; +$wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['monitor_title_iptables_txt'] = 'IPTables Pravidla'; $wb['monitor_title_beancounter_txt'] = 'OpenVz VE čítače (limity)'; +$wb['monitor_updates_nosupport_txt'] = 'Vaše distribuce nepodporuje toto monitorování'; $wb['monitor_beancounter_nosupport_txt'] = 'Tento server nemá nainstalován VE OpenVZ a proto nemá beancounter informace'; -$wb['monitor_title_iptables_txt'] = 'IPTables Pravidla'; -$wb['Show fail2ban-Log'] = 'Zobrazit Fail2Ban Log'; -$wb['Show IPTables'] = 'Zobrazit IPTables pravidla'; -$wb['Show OpenVz VE BeanCounter'] = 'Zobrazit OpenVz VE BeanCounter'; $wb['Show Monit'] = 'Zobrazit Monit'; $wb['no_monit_url_defined_txt'] = 'Monit URL adresa není nastavena.'; -$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['no_permissions_to_view_monit_txt'] = 'Nemáte oprávnění přistoupit k Monit.'; $wb['Show Munin'] = 'Zobrazit Munin'; $wb['no_munin_url_defined_txt'] = 'Munin URL adresa není nastavena.'; -$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; -$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'] = 'Databáze'; -$wb['monitor_database_size_txt'] = 'Velikost'; -$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['no_permissions_to_view_munin_txt'] = 'Nemáte oprávnění přistoupit k Munin.'; +$wb['Show Nagios/Check_MK'] = 'Zobrazit Nagios'; +$wb['no_nagios_url_defined_txt'] = 'Nejsou definovány žádné Nagios URL.'; +$wb['no_permissions_to_view_nagios_txt'] = 'Nejste oprávnění přistoupit k Nagios/Check_MK.'; +$wb['go_to_nagios_txt'] = 'Otevřít nové okno s tímto pohledem'; ?> diff --git a/interface/web/monitor/lib/lang/de.lng b/interface/web/monitor/lib/lang/de.lng index ec5b6382120b9cd399354cefd997f7e5ded29357..8e70741ef97864b85b05417f6a966bbaf328c741 100644 --- a/interface/web/monitor/lib/lang/de.lng +++ b/interface/web/monitor/lib/lang/de.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'ClamAV Protokoll'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig Protokoll'; $wb['monitor_norkhunter_txt'] = 'RKHunter ist nicht installiert, deshalb gibt es keine Protokolldatei'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Status'; $wb['monitor_serverstate_unknown_txt'] = 'unbekannt'; $wb['monitor_serverstate_info_txt'] = 'Info'; diff --git a/interface/web/monitor/lib/lang/dk.lng b/interface/web/monitor/lib/lang/dk.lng index da8aa1122ce0ca075c5731ffc89b7d38e608270b..dc43c1306fcbf486e6e2462142848ee8ff2e9049 100644 --- a/interface/web/monitor/lib/lang/dk.lng +++ b/interface/web/monitor/lib/lang/dk.lng @@ -68,6 +68,7 @@ $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_nosupportedraid1_txt'] = 'I øjeblikket støtter vi \'mdadm\' eller \'mpt-status\' til overvågning af RAID.
    Vi kan ikke finde nogen af dem på din server.

    Det betyder, at vi ikke kan støtte din RAID endnu.'; $wb['monitor_norkhunter_txt'] = 'RKHunter er ikke installeret, så der er ingen log data'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Status'; $wb['monitor_serverstate_unknown_txt'] = 'ukendt'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/el.lng b/interface/web/monitor/lib/lang/el.lng index 1df16520473b3f1ead768bf7b3d67e8731df365f..414642e2e359fa1fe4c3b3ad416691d569e4169f 100644 --- a/interface/web/monitor/lib/lang/el.lng +++ b/interface/web/monitor/lib/lang/el.lng @@ -65,6 +65,7 @@ $wb['monitor_logs_ispc_txt'] = 'Αρχείο καταγραφής ISPConfig'; $wb['monitor_nosupportedraid1_txt'] = 'Προς το παρόν υποστηρίζουμε mdadm ή mpt-status για την εποπτεία του RAID.
    Δεν μπορούμε να βρούμε κάποιο από αυτά στον server σας.

    Αυτό σημαίνει ότι δεν μπορούμε να υποστηρίξουμε το RAID σας ακόμη.'; $wb['monitor_norkhunter_txt'] = 'Το RKHunter δεν είναι εγκατεστημένο, οπότε δεν υπάρχουν δεδομένα'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Κατάσταση'; $wb['monitor_serverstate_unknown_txt'] = 'άγνωστη'; $wb['monitor_serverstate_info_txt'] = 'πληροφορία'; diff --git a/interface/web/monitor/lib/lang/en.lng b/interface/web/monitor/lib/lang/en.lng index c76caefbcee886137ae61790f0010686c11d8183..3721f692e735f35911c42873525b18bdf8d8dbba 100644 --- a/interface/web/monitor/lib/lang/en.lng +++ b/interface/web/monitor/lib/lang/en.lng @@ -74,6 +74,7 @@ $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_nosupportedraid1_txt'] = "At the moment, we support 'mdadm' or 'mpt-status' for monitoring the RAID.
    We can't find any of them at your server.

    This means we can not support your RAID yet."; $wb['monitor_norkhunter_txt'] = 'RKHunter is not installed, so there is no log data'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'State'; $wb['monitor_serverstate_unknown_txt'] = 'unknown'; $wb['monitor_serverstate_info_txt'] = 'info'; @@ -125,7 +126,7 @@ $wb['monitor_serverstate_updatesok_txt'] = 'Your system is up to date.'; $wb['monitor_serverstate_updatesneeded_txt'] = 'One or more components needs an update'; $wb['monitor_serverstate_updatesunknown_txt'] = 'System Update: ???'; $wb['monitor_serverstate_beancounterok_txt'] = 'The beancounter is ok'; -$wb['monitor_serverstate_beancounterinfo_txt'] = 'There are vew failure in the beancounter'; +$wb['monitor_serverstate_beancounterinfo_txt'] = 'There are few failure in the beancounter'; $wb['monitor_serverstate_beancounterwarning_txt'] = 'There are some failure in the beancounter'; $wb['monitor_serverstate_beancountercritical_txt'] = 'There are many failure in the beancounter'; $wb['monitor_serverstate_beancountererror_txt'] = 'There are too much failure in the beancounter'; diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index 023a2ea0e4d43e071ff8a15d3841149f85e9924e..8cc87b4801809002201cb6f6e9b929a59edf86d9 100755 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -74,6 +74,7 @@ $wb['monitor_serverstate_server_txt'] = 'Servidor'; $wb['monitor_serverstate_servicesoffline_txt'] = 'Uno o más servicios necesarios no están funcionando'; $wb['monitor_serverstate_servicesonline_txt'] = 'Todos los servicios necesarios están funcionando'; $wb['monitor_serverstate_servicesunknown_txt'] = 'Servicios: ¿?'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Estado'; $wb['monitor_serverstate_syslogerror_txt'] = 'Hay errores en su registro del sistema'; $wb['monitor_serverstate_syslogok_txt'] = 'El registro del sistema está bien'; diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng index 73653e84b7f0170c9c30103018f7a6c84c997a38..44143f3d207ced3c6086a8f6a90a65a1b1508b59 100755 --- a/interface/web/monitor/lib/lang/fi.lng +++ b/interface/web/monitor/lib/lang/fi.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav-päivitysloki'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig-pääloki'; $wb['monitor_norkhunter_txt'] = 'RKHunter ei ole asennettuna, joten siitä ei ole tulostietoja.'; $wb['monitor_serverstate_server_txt'] = 'Palvelin'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Tila'; $wb['monitor_serverstate_unknown_txt'] = 'tuntematonta'; $wb['monitor_serverstate_info_txt'] = 'viestiä'; diff --git a/interface/web/monitor/lib/lang/fr.lng b/interface/web/monitor/lib/lang/fr.lng index 49d118f34d8564a1427c04372fa2697885a5551a..9fb2ab5e8c41de82de381d5724b97bcd067c82c1 100644 --- a/interface/web/monitor/lib/lang/fr.lng +++ b/interface/web/monitor/lib/lang/fr.lng @@ -68,6 +68,7 @@ $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_nosupportedraid1_txt'] = 'Pour le moment, seuls mdadm ou mpt-status sont supportés pour surveiller le RAID.
    Aucun des deux n’a été trouvé sur votre serveur.

    Nous ne supportons donc pas votre RAID.'; $wb['monitor_norkhunter_txt'] = 'RKHunter nest pas installé, il ny a donc pas de logs'; $wb['monitor_serverstate_server_txt'] = 'Serveur'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Etat'; $wb['monitor_serverstate_unknown_txt'] = 'inconnu'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/hr.lng b/interface/web/monitor/lib/lang/hr.lng index 923b68d006a8a74b5344155c093aa0e62958c8ad..d878568104d37fd8c9700d1c1d3f09325bca0db6 100644 --- a/interface/web/monitor/lib/lang/hr.lng +++ b/interface/web/monitor/lib/lang/hr.lng @@ -65,6 +65,7 @@ $wb['monitor_logs_ispc_txt'] = 'Control panel log-ovi'; $wb['monitor_nosupportedraid1_txt'] = 'Trenutno je podržan samo mdadm ili mpt-status za nadzor RAID-a.
    Ne možemo pronaći niti jedan na vašem serveru.

    To znači da ne možemo podržati vaš RAID.'; $wb['monitor_norkhunter_txt'] = 'RKHunter nije instaliran, stoga nema log podataka.'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Stanje'; $wb['monitor_serverstate_unknown_txt'] = 'nepoznatih'; $wb['monitor_serverstate_info_txt'] = 'informacija'; diff --git a/interface/web/monitor/lib/lang/hu.lng b/interface/web/monitor/lib/lang/hu.lng index acf7b40b402288a0436b410d54027b4ac9f2b078..85fda979087b48f424ea1f3d828b90a3bebfb781 100644 --- a/interface/web/monitor/lib/lang/hu.lng +++ b/interface/web/monitor/lib/lang/hu.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_norkhunter_txt'] = 'RKHunter is not installed, so there is no log data'; $wb['monitor_serverstate_server_txt'] = 'Szerver'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Státusz'; $wb['monitor_serverstate_unknown_txt'] = 'ismeretlen'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/id.lng b/interface/web/monitor/lib/lang/id.lng index ffb5a79c33ced2ddc40faff056b421dcdea3bfc6..d77f1456496bc650db3e2ff4c6ebaf554d574d53 100644 --- a/interface/web/monitor/lib/lang/id.lng +++ b/interface/web/monitor/lib/lang/id.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Log - ClamAV'; $wb['monitor_logs_ispc_txt'] = 'Log - ISPConfig'; $wb['monitor_norkhunter_txt'] = 'RKHunter tidak terpasang, hingga tidak ada data log'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Kondisi'; $wb['monitor_serverstate_unknown_txt'] = 'tak diketahui'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/it.lng b/interface/web/monitor/lib/lang/it.lng index 47d9c4da026f799db33041b8c3c4c61ac769b354..c7a6823683d4c32d2ce8f92e257317ccd0f9eb25 100644 --- a/interface/web/monitor/lib/lang/it.lng +++ b/interface/web/monitor/lib/lang/it.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_norkhunter_txt'] = 'RKHunter non è installato, non sono disponibili dati nel log '; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Stato'; $wb['monitor_serverstate_unknown_txt'] = 'sconosciuto'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/ja.lng b/interface/web/monitor/lib/lang/ja.lng index 22d3b272eb61e5fb5ac9684f73e707708d276227..bc2c7d2b5c2cf2fb5068934db32e3c428a1ac251 100644 --- a/interface/web/monitor/lib/lang/ja.lng +++ b/interface/web/monitor/lib/lang/ja.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - ログ'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - ログ'; $wb['monitor_norkhunter_txt'] = 'RKHunterがインストールされていないため、データが存在しません。'; $wb['monitor_serverstate_server_txt'] = 'サーバー'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = '状態'; $wb['monitor_serverstate_unknown_txt'] = '不明'; $wb['monitor_serverstate_info_txt'] = '情報'; diff --git a/interface/web/monitor/lib/lang/nl.lng b/interface/web/monitor/lib/lang/nl.lng index 760803a5d538f3d0e28ca4dc0a3a0759030e73b2..7d2f518fae38f4ca42e2ff22a2f141e3097c4873 100644 --- a/interface/web/monitor/lib/lang/nl.lng +++ b/interface/web/monitor/lib/lang/nl.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_norkhunter_txt'] = 'RKHunter is niet geïnstalleerd. Hierdoor is er geen informatie beschikbaar.'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'status'; $wb['monitor_serverstate_unknown_txt'] = 'onbekend'; $wb['monitor_serverstate_info_txt'] = 'info'; @@ -160,4 +161,8 @@ $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 Nagios/Check_MK'] = 'Show Nagios'; +$wb['no_nagios_url_defined_txt'] = 'No Nagios URL defined.'; +$wb['no_permissions_to_view_nagios_txt'] = 'You are not allowed to access Nagios/Check_MK.'; +$wb['go_to_nagios_txt'] = 'Open a new window containing this view'; ?> diff --git a/interface/web/monitor/lib/lang/pl.lng b/interface/web/monitor/lib/lang/pl.lng index 647e7b8be0795c77861e2b88f6313b8c85cfa34f..77258acad19e00958535ab63da9a635a16a6409c 100644 --- a/interface/web/monitor/lib/lang/pl.lng +++ b/interface/web/monitor/lib/lang/pl.lng @@ -65,6 +65,7 @@ $wb['monitor_logs_clamav_txt'] = 'Log Clamav'; $wb['monitor_logs_ispc_txt'] = 'Log ISPConfig'; $wb['monitor_norkhunter_txt'] = 'RKHunter nie jest zainstalowany, więc nie ma Log-u'; $wb['monitor_serverstate_server_txt'] = 'Serwer'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Status'; $wb['monitor_serverstate_unknown_txt'] = 'nieznany'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/pt.lng b/interface/web/monitor/lib/lang/pt.lng index 6ad8038b95438c95625a6f3bf891d826e8608d29..2218ede892b5a89f327d54cc49f61bcc38791587 100644 --- a/interface/web/monitor/lib/lang/pt.lng +++ b/interface/web/monitor/lib/lang/pt.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Log do Clamav '; $wb['monitor_logs_ispc_txt'] = 'Log do ISPConfig'; $wb['monitor_norkhunter_txt'] = 'RKHunter não está instalado, então não existem logs a exibir'; $wb['monitor_serverstate_server_txt'] = 'Servidor'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Estado'; $wb['monitor_serverstate_unknown_txt'] = 'desconhecido'; $wb['monitor_serverstate_info_txt'] = 'informações'; diff --git a/interface/web/monitor/lib/lang/ro.lng b/interface/web/monitor/lib/lang/ro.lng index 85063a047d6cf74c6c07b0d40a7499b69681666e..7b06c4ba0c37b9b65d1c39b85d8230979babdac5 100644 --- a/interface/web/monitor/lib/lang/ro.lng +++ b/interface/web/monitor/lib/lang/ro.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'ClamAV - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_norkhunter_txt'] = 'RKHunter is not installed, so there is no log data'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'State'; $wb['monitor_serverstate_unknown_txt'] = 'unknown'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/ru.lng b/interface/web/monitor/lib/lang/ru.lng index dbac69a86f00d80d0f4fd790c8c8fd42646aa308..49e9d4604d6cd1bb8a8c525c6b41c537f2da6ed8 100644 --- a/interface/web/monitor/lib/lang/ru.lng +++ b/interface/web/monitor/lib/lang/ru.lng @@ -7,7 +7,6 @@ $wb['System load 15 minutes'] = 'Загрузка системы за 15 мин $wb['Server Load'] = 'Загрузка сервера'; $wb['Disk usage'] = 'Использование диска'; $wb['Memory usage'] = 'Использование памяти'; -$wb['Database size'] = 'Размер базы данных'; $wb['no_data_serverload_txt'] = ' Нет данных по загрузке сервера в данный момент. Пожалуйста, проверьте позже.'; $wb['no_data_memusage_txt'] = 'Нет данных по загрузке памяти в данный момент. Пожалуйста, проверьте позже.'; $wb['no_data_diskusage_txt'] = 'Нет данных по загрузке HDD в данный момент. Пожалуйста, проверьте позже.'; @@ -29,7 +28,6 @@ $wb['Show Update State'] = 'Показать состояние обновлен $wb['Show RAID state'] = 'Показать состояние RAID'; $wb['Show Server load'] = 'Показать загрузку сервера'; $wb['Show Disk usage'] = 'Показать использование диска'; -$wb['Show MySQL Database size'] = 'Показать размер базы данных MySQL'; $wb['Show Memory usage'] = 'Показать использование памяти'; $wb['Show Services'] = 'Показать службы'; $wb['Show Mail-Queue'] = 'Показать очередь почты'; @@ -66,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - журнал'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - журнал'; $wb['monitor_norkhunter_txt'] = 'RKHunter не установлен, поэтому нет логов'; $wb['monitor_serverstate_server_txt'] = 'Сервер'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Состояние'; $wb['monitor_serverstate_unknown_txt'] = 'неизвестных'; $wb['monitor_serverstate_info_txt'] = 'информации'; @@ -163,8 +162,3 @@ $wb['Show MongoDB-Log'] = 'Показать журнал MongoDB'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-сервер:'; $wb['monitor_title_mongodb_txt'] = 'Журнал MongoDB'; ?> - - - - - diff --git a/interface/web/monitor/lib/lang/se.lng b/interface/web/monitor/lib/lang/se.lng index 4d3e8d7277fce0a319b04301a5145b32dc5d48d3..732805d2a633d2c37ff15be6ef40ee2d424853b7 100644 --- a/interface/web/monitor/lib/lang/se.lng +++ b/interface/web/monitor/lib/lang/se.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - logg'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - logg'; $wb['monitor_norkhunter_txt'] = 'RKHunter är inte installerat så det finns ingen loggdata'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Status'; $wb['monitor_serverstate_unknown_txt'] = 'okänd'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/sk.lng b/interface/web/monitor/lib/lang/sk.lng index c74508a1ff11acfb2538fedab0b15ff9f9643c25..7697242386a4cd279ae2f0b5be354d6e1e5b421b 100644 --- a/interface/web/monitor/lib/lang/sk.lng +++ b/interface/web/monitor/lib/lang/sk.lng @@ -64,6 +64,7 @@ $wb['monitor_logs_clamav_txt'] = 'Clamav - Log'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig - Log'; $wb['monitor_norkhunter_txt'] = 'RKHunter is not installed, so there is no log data'; $wb['monitor_serverstate_server_txt'] = 'Server'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'State'; $wb['monitor_serverstate_unknown_txt'] = 'unknown'; $wb['monitor_serverstate_info_txt'] = 'info'; diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng index 091b95900f9ac6c51459ae8693bdda6b6fd85a1e..00beedb1dc2d54f704d0cb848a0ddee746ce332d 100644 --- a/interface/web/monitor/lib/lang/tr.lng +++ b/interface/web/monitor/lib/lang/tr.lng @@ -68,6 +68,7 @@ $wb['monitor_logs_ispc_txt'] = 'ISPConfig Günlüğü'; $wb['monitor_nosupportedraid1_txt'] = 'Şimdilik RAID durumunu izlemek için mdadm ya da mpt-status destekleniyor.
    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_serverstate_server_txt'] = 'Sunucu'; +$wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Durum'; $wb['monitor_serverstate_unknown_txt'] = 'bilinmiyor'; $wb['monitor_serverstate_info_txt'] = 'bilgi'; diff --git a/interface/web/monitor/show_sys_state.php b/interface/web/monitor/show_sys_state.php index 904519f892e61a97173aeba39bad344117f01856..0d02b61961a580c02f7c4c81f39d163cae3cca5b 100644 --- a/interface/web/monitor/show_sys_state.php +++ b/interface/web/monitor/show_sys_state.php @@ -195,6 +195,7 @@ function _getServerState($serverId, $serverName) { $osData = null; $veInfo = null; $ispcData = null; + $kernelInfo = null; foreach($records as $record) { /* get the state from the db-data */ $tmp = _processDbState($record['type'], $serverId, $serverState, $messages); @@ -209,6 +210,10 @@ function _getServerState($serverId, $serverName) { if ($record['type'] == 'ispc_info') { $ispcData = unserialize($record['data']); } + /* if we have the kernel-info, get it */ + if ($record['type'] == 'kernel_info') { + $kernelInfo = unserialize($record['data']); + } /* if we have the ve-info, get it */ if ($record['type'] == 'openvz_veinfo') { $veInfo = unserialize($record['data']); @@ -248,6 +253,7 @@ function _getServerState($serverId, $serverName) { else { $html_ve .= ''; } + $html_ve .= '

    ' . $app->lng("monitor_serverstate_kernel_txt") . ': ' . $kernelInfo['version'] . '

    '; $html_ve .= '

    ' . $app->lng("monitor_serverstate_state_txt") . ': ' . $serverState . '

    '; /* @@ -294,7 +300,7 @@ function _getServerState($serverId, $serverName) { else { $html_server .= ''; } - + $html_server .= '

    ' . $app->lng("monitor_serverstate_kernel_txt") . ': ' . $kernelInfo['version'] . '

    '; $html_server .= '

    ' . $app->lng("monitor_serverstate_state_txt") . ': ' . $serverState . ' ('; $html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listunknown_txt")]) ? $messages[$app->lng("monitor_serverstate_listunknown_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_unknown_txt") . ', '; $html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listinfo_txt")]) ? $messages[$app->lng("monitor_serverstate_listinfo_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_info_txt") . ', '; diff --git a/interface/web/nav.php b/interface/web/nav.php index 68ceb898beafb15248fa6232b149f1236c8417ee..1091276b86153638719e3c248bb10dfca91d85ff 100644 --- a/interface/web/nav.php +++ b/interface/web/nav.php @@ -75,7 +75,7 @@ if(isset($_GET['nav']) && $_GET['nav'] == 'top') { } include_once $mt.'/lib/module.conf.php'; - $language = (isset($_SESSION['s']['user']['language']))?$_SESSION['s']['user']['language']:$conf['language']; + $language = $app->functions->check_language((isset($_SESSION['s']['user']['language']))?$_SESSION['s']['user']['language']:$conf['language']); $app->load_language_file('web/'.$mt.'/lib/'.$language.'.lng'); $active = ($module['name'] == $_SESSION['s']['module']['name']) ? 1 : 0; $topnav[$module['order'].'-'.$module['name']] = array( 'title' => $app->lng($module['title']), diff --git a/interface/web/remote/index.php b/interface/web/remote/index.php index 3e111394a365541e0f4ef5cbe764d7e110f8d49d..670a9db13b41b62daf99ab425174ac2d9cd03a7f 100644 --- a/interface/web/remote/index.php +++ b/interface/web/remote/index.php @@ -1,5 +1,7 @@ db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ?".$sql_where, $server_id); + $php_records = $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 = ? AND active = 'y' ORDER BY name".$sql_where, $server_id); } elseif($php_type == 'fast-cgi'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?".$sql_where, $server_id); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND active = 'y' ORDER BY name".$sql_where, $server_id); } + $php_records[]=array('name' => $app->functions->htmlentities($web_config['php_default_name'])); + uasort($php_records, 'sort_php'); $php_select = ""; if(is_array($php_records) && !empty($php_records)) { foreach( $php_records as $php_record) { @@ -105,7 +107,11 @@ if($type == 'getphpfastcgi'){ } else { $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; } - $json .= '"'.$php_version.'": "'.$php_record['name'].'",'; + if($php_record['name'] != $web_config['php_default_name']) { + $json .= '"'.$php_version.'": "'.$php_record['name'].'",'; + } else { + $json .= '"": "'.$php_record['name'].'",'; + } } } unset($php_records); @@ -243,4 +249,9 @@ if($type == 'getclientssldata'){ header('Content-type: application/json'); echo $json; + +function sort_php($a, $b) { + return strcmp($a['name'], $b['name']); +} + ?> diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php index 19ab785c957d5df02db5f7ceb0275832fe524c84..4739e25b8a69798e2d253a059e10a12f0e2652c3 100644 --- a/interface/web/sites/aps_install_package.php +++ b/interface/web/sites/aps_install_package.php @@ -42,7 +42,7 @@ $app->tpl->newTemplate("form.tpl.htm"); $app->tpl->setInclude('content_tpl', 'templates/aps_install_package.htm'); // Load the language file -$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng'; +$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); diff --git a/interface/web/sites/aps_packagedetails_show.php b/interface/web/sites/aps_packagedetails_show.php index 1723ffbff207708acaf10077502f690dddc7c14e..d0503bf9f03faea2f1226cb2c7f5273d90427b1c 100644 --- a/interface/web/sites/aps_packagedetails_show.php +++ b/interface/web/sites/aps_packagedetails_show.php @@ -42,7 +42,7 @@ $app->tpl->newTemplate("listpage.tpl.htm"); $app->tpl->setInclude('content_tpl', 'templates/aps_packagedetails_show.htm'); // Load the language file -$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng'; +$lngfile = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_aps.lng'; require_once $lngfile; $app->tpl->setVar($wb); diff --git a/interface/web/sites/aps_update_packagelist.php b/interface/web/sites/aps_update_packagelist.php index a1278d0ebe318fdb0b9ed5e836f62ad14ec79bd6..821da77bb9558f45ee545eb7b8219d5450824187 100644 --- a/interface/web/sites/aps_update_packagelist.php +++ b/interface/web/sites/aps_update_packagelist.php @@ -41,7 +41,7 @@ $msg = ''; $error = ''; //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_aps_update_packagelist.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_aps_update_packagelist.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/sites/backup_stats.php b/interface/web/sites/backup_stats.php index 640b0c17bb925fd5c47c35499739582615826ff6..b49f477cb8d8834fbddf84117e5ea1cf8185e619 100644 --- a/interface/web/sites/backup_stats.php +++ b/interface/web/sites/backup_stats.php @@ -22,16 +22,18 @@ class list_action extends listform_actions { $rec = parent::prepareDataRow($rec); - $rec['active'] = "

    Yes
    "; - if ($rec['backup_interval'] === 'none') { - $rec['active'] = "
    No
    "; + $rec['active'] = $app->lng('yes_txt'); + if ($rec['backup_interval'] === 'none' || $rec['backup_interval'] === '') { + $rec['active'] = $app->lng('no_txt'); $rec['backup_copies'] = 0; + $rec['backup_interval'] = 'none'; } - + $rec['interval_sort'] = $rec['type'] . $rec['backup_interval']; $recBackup = $app->db->queryOneRecord('SELECT COUNT(backup_id) AS backup_count FROM web_backup WHERE parent_domain_id = ?', $rec['domain_id']); $rec['backup_copies_exists'] = $recBackup['backup_count']; unset($recBackup); $recBackup = $app->db->queryOneRecord('SELECT SUM(filesize) AS backup_size FROM web_backup WHERE parent_domain_id = ?', $rec['domain_id']); + $rec['backup_size_sort'] = $recBackup['backup_size']; $rec['backup_size'] = $app->functions->formatBytes($recBackup['backup_size']); return $rec; diff --git a/interface/web/sites/cron_edit.php b/interface/web/sites/cron_edit.php index a8326493cad61e5537b3ed134fab4a737c3d8cdd..62f338f33f30f6e60502cd9e02398fb2f7e961e8 100644 --- a/interface/web/sites/cron_edit.php +++ b/interface/web/sites/cron_edit.php @@ -73,7 +73,7 @@ class page_action extends tform_actions { if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("parent_domain_id_value", $this->dataRecord["parent_domain_id"]); + $app->tpl->setVar("parent_domain_id_value", $this->dataRecord["parent_domain_id"], true); } else { $app->tpl->setVar("edit_disabled", 0); } diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php index 213063ae89bdb70c495e630a345caa52e73987cc..71e5acaf27c120d8d332485e494de8af8fd1689a 100644 --- a/interface/web/sites/database_edit.php +++ b/interface/web/sites/database_edit.php @@ -89,7 +89,7 @@ class page_action extends tform_actions { } foreach ($tmp as $db_server) { - $options_db_servers .= ''; + $options_db_servers .= ''; } $app->tpl->setVar("server_id", $options_db_servers); @@ -112,7 +112,7 @@ class page_action extends tform_actions { } foreach ($tmp as $db_server) { - $options_db_servers .= ''; + $options_db_servers .= ''; } $app->tpl->setVar("server_id", $options_db_servers); @@ -143,22 +143,22 @@ class page_action extends tform_actions { if ($this->dataRecord['database_name'] != ""){ /* REMOVE the restriction */ - $app->tpl->setVar("database_name", $app->tools_sites->removePrefix($this->dataRecord['database_name'], $this->dataRecord['database_name_prefix'], $dbname_prefix)); + $app->tpl->setVar("database_name", $app->tools_sites->removePrefix($this->dataRecord['database_name'], $this->dataRecord['database_name_prefix'], $dbname_prefix), true); } if($this->dataRecord['database_name'] == "") { - $app->tpl->setVar("database_name_prefix", $dbname_prefix); + $app->tpl->setVar("database_name_prefix", $dbname_prefix, true); } else { - $app->tpl->setVar("database_name_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_name_prefix'], $dbname_prefix, $global_config['dbname_prefix'])); + $app->tpl->setVar("database_name_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_name_prefix'], $dbname_prefix, $global_config['dbname_prefix']), true); } if($this->id > 0) { //* we are editing a existing record $edit_disabled = @($_SESSION["s"]["user"]["typ"] == 'admin')? 0 : 1; //* admin can change the database-name $app->tpl->setVar("edit_disabled", $edit_disabled); - $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]); - $app->tpl->setVar("database_charset_value", $this->dataRecord["database_charset"]); - $app->tpl->setVar("limit_database_quota", $this->dataRecord["database_quota"]); + $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true); + $app->tpl->setVar("database_charset_value", $this->dataRecord["database_charset"], true); + $app->tpl->setVar("limit_database_quota", $this->dataRecord["database_quota"], true); } else { $app->tpl->setVar("edit_disabled", 0); } diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php index 148aa127ae493be1fdced8804f96276dc2c321c9..900322c8176e082616c9d8a3ce1d1be27bd4ecea 100644 --- a/interface/web/sites/database_quota_stats.php +++ b/interface/web/sites/database_quota_stats.php @@ -69,14 +69,23 @@ class list_action extends listform_actions { $rec['server_name'] = $tmp['server_name']; unset($tmp); $rec['used'] = $monitor_data[$rec['server_id'].'.'.$database_name]['used']; + $rec['used_sort'] = $rec['used']; $rec['quota'] = $monitor_data[$rec['server_id'].'.'.$database_name]['quota']; + $rec['quota_sort'] = $rec['quota']; + $rec['percentage_sort'] = 0; if($rec['quota'] == 0){ $rec['quota'] = $app->lng('unlimited'); - $rec['percentage'] = ''; + $rec['percentage'] = 'n/a'; + $rec['progressbar'] = -1; } else { - if ($rec['used'] > 0 ) $rec['percentage'] = round(100 * intval($rec['used']) / ( intval($rec['quota'])*1024*1024) ).'%'; - $rec['quota'] .= ' MB'; + if ($rec['used'] > 0 ) { + $rec['percentage'] = round(100 * intval($rec['used']) / ( intval($rec['quota'])*1024*1024) ); + $rec['percentage_sort'] = $rec['percentage']; + $rec['progressbar'] = $rec['percentage'] > 100 ? 100 : $rec['percentage']; + $rec['percentage'] = $rec['percentage'].'%'; + } + $rec['quota'] = $app->functions->formatBytes($rec['quota']*1024*1024); } if ($rec['used'] > 0) $rec['used'] = $app->functions->formatBytes($rec['used']); @@ -92,7 +101,7 @@ class list_action extends listform_actions { $rec['quota'] = $rec['database_quota']; } $rec['id'] = $rec[$this->idx_key]; - + if ($rec['used'] == 0) $rec['used'] = $app->functions->formatBytes($rec['used']); return $rec; } diff --git a/interface/web/sites/database_user_edit.php b/interface/web/sites/database_user_edit.php index 5224cc50a8cca00470c69c3800dbbd9b50e61e29..07fa1315f062960e5f214aefdaa3eebb19f8837b 100644 --- a/interface/web/sites/database_user_edit.php +++ b/interface/web/sites/database_user_edit.php @@ -87,6 +87,7 @@ class page_action extends tform_actions { // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $records = $app->db->queryAllRecords($sql, $client['client_id']); + $records = $app->functions->htmlentities($records); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -101,6 +102,7 @@ class page_action extends tform_actions { // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ""; //$tmp_data_record = $app->tform->getDataRecord($this->id); if(is_array($clients)) { @@ -116,13 +118,13 @@ class page_action extends tform_actions { if ($this->dataRecord['database_user'] != ""){ /* REMOVE the restriction */ - $app->tpl->setVar("database_user", $app->tools_sites->removePrefix($this->dataRecord['database_user'], $this->dataRecord['database_user_prefix'], $dbuser_prefix)); + $app->tpl->setVar("database_user", $app->tools_sites->removePrefix($this->dataRecord['database_user'], $this->dataRecord['database_user_prefix'], $dbuser_prefix), true); } if($this->dataRecord['database_user'] == "") { - $app->tpl->setVar("database_user_prefix", $dbuser_prefix); + $app->tpl->setVar("database_user_prefix", $dbuser_prefix, true); } else { - $app->tpl->setVar("database_user_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_user_prefix'], $dbuser_prefix, $global_config['dbuser_prefix'])); + $app->tpl->setVar("database_user_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_user_prefix'], $dbuser_prefix, $global_config['dbuser_prefix']), true); } parent::onShowEnd(); diff --git a/interface/web/sites/form/web_childdomain.tform.php b/interface/web/sites/form/web_childdomain.tform.php index 02480db42879a97058306114b8771f7cdd0ff9b2..6cfaa38c2a5188f1441d8f3db59d44bea4a1f3be 100644 --- a/interface/web/sites/form/web_childdomain.tform.php +++ b/interface/web/sites/form/web_childdomain.tform.php @@ -125,7 +125,7 @@ $form["tabs"]['domain'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '@^(([\.]{0})|((ftp|https?)://([-\w\.]+)+(:\d+)?(/([\w/_\.\-\,\+\?\~!:%]*(\?\S+)?)?)?)|(\[scheme\]://([-\w\.]+)+(:\d+)?(/([\w/_\.\-\,\+\?\~!:%]*(\?\S+)?)?)?)|(/(?!.*\.\.)[\w/_\.\-]{1,255}/))$@', + 'regex' => '@^(([\.]{0})|((ftp|https?|\[scheme\])://([-\w\.]+)+(:\d+)?(/([\w/_\.\,\-\+\?\~!:%]*(\?\S+)?)?)?)(?:#\S*)?|(/(?!.*\.\.)[\w/_\.\-]{1,255}/))$@', 'errmsg'=> 'redirect_error_regex'), ), 'default' => '', diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 4b709eeda40bd92441e52b167a0bf63201dabb6e..f47fe709fc6fbaa3d57433517a79516073bac6b0 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -349,6 +349,9 @@ if($vhostdomain_type == 'domain') { 'regex' => '@^((?!(.*\.\.)|(.*\./)|(.*//))[^/][\w/_\.\-]{1,100})?$@', 'errmsg'=> 'web_folder_error_regex'), ), + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), 'formtype' => 'TEXT', 'default' => '', 'value' => '', @@ -368,6 +371,9 @@ if($vhostdomain_type == 'domain') { 'regex' => '@^((?!(.*\.\.)|(.*\./)|(.*//))[^/][\w/_\.\-]{1,100})?$@', 'errmsg'=> 'web_folder_error_regex'), ), + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), 'formtype' => 'TEXT', 'default' => '', 'value' => '', @@ -396,7 +402,7 @@ $form["tabs"]['redirect'] = array ( 'redirect_path' => array ( 'datatype' => 'VARCHAR', 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '@^(([\.]{0})|((ftp|https?)://([-\w\.]+)+(:\d+)?(/([\w/_\.\,\-\+\?\~!:%]*(\?\S+)?)?)?)|(\[scheme\]://([-\w\.]+)+(:\d+)?(/([\w/_\.\-\,\+\?\~!:%]*(\?\S+)?)?)?)|(/(?!.*\.\.)[\w/_\.\-]{1,255}/))$@', + 'regex' => '@^(([\.]{0})|((ftp|https?|\[scheme\])://([-\w\.]+)+(:\d+)?(/([\w/_\.\,\-\+\?\~!:%]*(\?\S+)?)?)?)(?:#\S*)?|(/(?!.*\.\.)[\w/_\.\-]{1,255}/))$@', 'errmsg'=> 'redirect_error_regex'), ), 'formtype' => 'TEXT', @@ -520,6 +526,12 @@ if($ssl_available) { 'ssl_domain' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -528,6 +540,10 @@ if($ssl_available) { 'ssl_key' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', @@ -536,6 +552,10 @@ if($ssl_available) { 'ssl_request' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', @@ -544,6 +564,10 @@ if($ssl_available) { 'ssl_cert' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', @@ -552,6 +576,10 @@ if($ssl_available) { 'ssl_bundle' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'cols' => '30', @@ -744,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', @@ -859,6 +893,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'nginx_directives' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXT', + 'validators' => array ( 0 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_domain', + 'function' => 'web_nginx_directives', + 'errmsg' => 'nginx_directive_blocked_error' + ), + ), 'default' => '', 'value' => '', 'width' => '30', @@ -918,18 +959,18 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'width' => '3', 'maxlength' => '6' ), - 'log_retention' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^([0-9]{1,4})$/', - 'errmsg'=> 'log_retention_error_regex'), - ), - 'default' => '30', - 'value' => '', - 'width' => '4', - 'maxlength' => '4' - ) + 'log_retention' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^([0-9]{1,4})$/', + 'errmsg'=> 'log_retention_error_regex'), + ), + 'default' => '30', + 'value' => '', + 'width' => '4', + 'maxlength' => '4' + ) //################################# // ENDE Datatable fields //################################# diff --git a/interface/web/sites/form/webdav_user.tform.php b/interface/web/sites/form/webdav_user.tform.php index a1bfd3056d6a7479e20034bbeb913db30849d0a1..8d5c0c561f29b4a33db9da70f05367d5163ec21b 100644 --- a/interface/web/sites/form/webdav_user.tform.php +++ b/interface/web/sites/form/webdav_user.tform.php @@ -130,6 +130,12 @@ $form["tabs"]['webdav'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'directory_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/sites/ftp_sites_stats.php b/interface/web/sites/ftp_sites_stats.php index 7ffc3f769d457c5e9000ed332a0d4ec1a422d91f..7efac34d4ae2e18eb59660ce9fd9a8f0378585c8 100644 --- a/interface/web/sites/ftp_sites_stats.php +++ b/interface/web/sites/ftp_sites_stats.php @@ -41,12 +41,14 @@ class list_action extends listform_actions { $tmp_year = date('Y'); $tmp_month = date('m'); $tmp_rec = $app->db->queryOneRecord("SELECT SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE hostname = ? AND YEAR(traffic_date) = ? AND MONTH(traffic_date) = ?", $rec['domain'], $tmp_year, $tmp_month); + $rec['this_month_sort'] = $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; $rec['this_month_in'] = $app->functions->formatBytes($tmp_rec['ftp_in']); $rec['this_month_out'] = $app->functions->formatBytes($tmp_rec['ftp_out']); $this->sum_this_month += $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; //** Traffic of the current year $tmp_rec = $app->db->queryOneRecord("SELECT SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE hostname = ? AND YEAR(traffic_date) = ?", $rec['domain'], $tmp_year); + $rec['this_year_sort'] = $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; $rec['this_year_in'] = $app->functions->formatBytes($tmp_rec['ftp_in']); $rec['this_year_out'] = $app->functions->formatBytes($tmp_rec['ftp_out']); $this->sum_this_year += $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; @@ -55,6 +57,7 @@ class list_action extends listform_actions { $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); $tmp_rec = $app->db->queryOneRecord("SELECT SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE hostname = ? AND YEAR(traffic_date) = ? AND MONTH(traffic_date) = ?", $rec['domain'], $tmp_year, $tmp_month); + $rec['last_month_sort'] = $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; $rec['last_month_in'] = $app->functions->formatBytes($tmp_rec['ftp_in']); $rec['last_month_out'] = $app->functions->formatBytes($tmp_rec['ftp_out']); $this->sum_last_month += $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; @@ -62,6 +65,7 @@ class list_action extends listform_actions { //** Traffic of the last year $tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); $tmp_rec = $app->db->queryOneRecord("SELECT SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE hostname = ? AND YEAR(traffic_date) = ?", $rec['domain'], $tmp_year); + $rec['last_year_sort'] = $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; $rec['last_year_in'] = $app->functions->formatBytes($tmp_rec['ftp_in']); $rec['last_year_out'] = $app->functions->formatBytes($tmp_rec['ftp_out']); $this->sum_last_year += $tmp_rec['ftp_in']+$tmp_rec['ftp_out']; @@ -77,100 +81,19 @@ class list_action extends listform_actions { global $app; $app->tpl->setVar('sum_this_month', $app->functions->formatBytes($this->sum_this_month)); + if ($app->tpl->getVar('sum_this_month') == 'NAN') $app->tpl->setVar('sum_this_month','0 KB'); $app->tpl->setVar('sum_this_year', $app->functions->formatBytes($this->sum_this_year)); + if ($app->tpl->getVar('sum_this_year') == 'NAN') $app->tpl->setVar('sum_this_year','0 KB'); $app->tpl->setVar('sum_last_month', $app->functions->formatBytes($this->sum_last_month)); + if ($app->tpl->getVar('sum_last_month') == 'NAN') $app->tpl->setVar('sum_last_month','0 KB'); $app->tpl->setVar('sum_last_year', $app->functions->formatBytes($this->sum_last_year)); + if ($app->tpl->getVar('sum_last_year') == 'NAN') $app->tpl->setVar('sum_last_year','0 KB'); $app->tpl->setVar('sum_txt', $app->listform->lng('sum_txt')); $app->tpl_defaults(); $app->tpl->pparse(); } - function getQueryString($no_limit = false) { - global $app; - $sql_where = ''; - - //* Generate the search sql - if($app->listform->listDef['auth'] != 'no') { - if($_SESSION['s']['user']['typ'] == "admin") { - $sql_where = ''; - } else { - $sql_where = $app->tform->getAuthSQL('r', $app->listform->listDef['table']).' and'; - //$sql_where = $app->tform->getAuthSQL('r').' and'; - } - } - if($this->SQLExtWhere != '') { - $sql_where .= ' '.$this->SQLExtWhere.' and'; - } - - $sql_where = $app->listform->getSearchSQL($sql_where); - if($app->listform->listDef['join_sql']) $sql_where .= ' AND '.$app->listform->listDef['join_sql']; - $app->tpl->setVar($app->listform->searchValues); - - $order_by_sql = $this->SQLOrderBy; - - //* Generate SQL for paging - $limit_sql = $app->listform->getPagingSQL($sql_where); - $app->tpl->setVar('paging', $app->listform->pagingHTML); - - $extselect = ''; - $join = ''; - - if(!empty($_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order'])){ - $order = str_replace(' DESC', '', $_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order']); - list($tmp_table, $order) = explode('.', $order); - if($order == 'ftp_traffic_last_month'){ - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(ft.in_bytes+out_bytes) as calctraffic'; - $join .= ' INNER JOIN ftp_traffic as ft ON '.$app->listform->listDef['table'].'.domain = ft.hostname '; - $sql_where .= " AND YEAR(ft.traffic_date) = '$tmp_year' AND MONTH(ft.traffic_date) = '$tmp_month'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.ftp_traffic_last_month', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'ftp_traffic_this_month'){ - $tmp_year = date('Y'); - $tmp_month = date('m'); - $extselect .= ', SUM(ft.in_bytes+out_bytes) as calctraffic'; - $join .= ' INNER JOIN ftp_traffic as ft ON '.$app->listform->listDef['table'].'.domain = ft.hostname '; - $sql_where .= " AND YEAR(ft.traffic_date) = '$tmp_year' AND MONTH(ft.traffic_date) = '$tmp_month'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.ftp_traffic_this_month', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'ftp_traffic_last_year'){ - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(ft.in_bytes+out_bytes) as calctraffic'; - $join .= ' INNER JOIN ftp_traffic as ft ON '.$app->listform->listDef['table'].'.domain = ft.hostname '; - $sql_where .= " AND YEAR(ft.traffic_date) = '$tmp_year'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.ftp_traffic_last_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'ftp_traffic_this_year'){ - $tmp_year = date('Y'); - $extselect .= ', SUM(ft.in_bytes+out_bytes) as calctraffic'; - $join .= ' INNER JOIN ftp_traffic as ft ON '.$app->listform->listDef['table'].'.domain = ft.hostname '; - $sql_where .= " AND YEAR(ft.traffic_date) = '$tmp_year'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.ftp_traffic_this_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } - } - - if($this->SQLExtSelect != '') { - if(substr($this->SQLExtSelect, 0, 1) != ',') $this->SQLExtSelect = ','.$this->SQLExtSelect; - $extselect .= $this->SQLExtSelect; - } - - $table_selects = array(); - $table_selects[] = trim($app->listform->listDef['table']).'.*'; - $app->listform->listDef['additional_tables'] = trim($app->listform->listDef['additional_tables']); - if($app->listform->listDef['additional_tables'] != ''){ - $additional_tables = explode(',', $app->listform->listDef['additional_tables']); - foreach($additional_tables as $additional_table){ - $table_selects[] = trim($additional_table).'.*'; - } - } - $select = implode(', ', $table_selects); - - $sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql $limit_sql"; - return $sql; - } } $list = new list_action; @@ -178,4 +101,4 @@ $list->SQLExtWhere = "(web_domain.type = 'vhost' or web_domain.type = 'vhostsubd $list->SQLOrderBy = 'ORDER BY web_domain.domain'; $list->onLoad(); -?> \ No newline at end of file +?> diff --git a/interface/web/sites/ftp_user_edit.php b/interface/web/sites/ftp_user_edit.php index 9de400ce0392fcff585fe6450621d8c15b6d3d14..7fab1e2273e850d9e59fcb7c48bbd0d4186e1f7a 100644 --- a/interface/web/sites/ftp_user_edit.php +++ b/interface/web/sites/ftp_user_edit.php @@ -79,13 +79,13 @@ class page_action extends tform_actions { if ($this->dataRecord['username'] != ""){ /* REMOVE the restriction */ - $app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $ftpuser_prefix)); + $app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $ftpuser_prefix), true); } if($this->dataRecord['username'] == "") { - $app->tpl->setVar("username_prefix", $ftpuser_prefix); + $app->tpl->setVar("username_prefix", $ftpuser_prefix, true); } else { - $app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $ftpuser_prefix, $global_config['ftpuser_prefix'])); + $app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $ftpuser_prefix, $global_config['ftpuser_prefix']), true); } parent::onShowEnd(); diff --git a/interface/web/sites/lib/lang/ar_web_childdomain.lng b/interface/web/sites/lib/lang/ar_web_childdomain.lng index fe6eae507486f1cab06a117dfab93049607ea030..636505f2487e4367810b7e453616ff82d29c30f1 100644 --- a/interface/web/sites/lib/lang/ar_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; $wb['no_redirect_txt'] = 'No redirect'; @@ -115,4 +116,5 @@ $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['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_childdomain_list.lng b/interface/web/sites/lib/lang/ar_web_childdomain_list.lng index 1ce49ba1be6e86b451e04493c0e7f737a09e4939..4dfc97f907e90c569e325ed1c2ee4b4707953c3b 100644 --- a/interface/web/sites/lib/lang/ar_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/ar_web_childdomain_list.lng @@ -7,6 +7,7 @@ $wb['domain_txt'] = 'Subdomain'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; diff --git a/interface/web/sites/lib/lang/ar_web_domain.lng b/interface/web/sites/lib/lang/ar_web_domain.lng index 0b8161e0978acbeab26a2885512e99aa272ca9ec..1ab9c55d3d9f88099cdfb79a0166d46d39189308 100644 --- a/interface/web/sites/lib/lang/ar_web_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 1f01c23704c3791362d3dd99e75fd85eb18b2b00..c2896d02df0f9cf614127a026cdeb074e82a9eeb 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -39,6 +39,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; $wb['error_ssl_state_empty'] = 'SSL State is empty.'; @@ -136,7 +137,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; diff --git a/interface/web/sites/lib/lang/bg_web_childdomain.lng b/interface/web/sites/lib/lang/bg_web_childdomain.lng index 0d185de23869603dafd1a5ddd4711beb693ac072..c7549b76f7ef95a2ce18cae7301a826f375c4029 100644 --- a/interface/web/sites/lib/lang/bg_web_childdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_childdomain_list.lng b/interface/web/sites/lib/lang/bg_web_childdomain_list.lng index 26d6c4881085b34e219a7444d5377a872f7dfd35..d974c9630f0a73bc578f70ab4615ed948faccaf3 100644 --- a/interface/web/sites/lib/lang/bg_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/bg_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_domain.lng b/interface/web/sites/lib/lang/bg_web_domain.lng index cce48221437625978cc7f2884060f57b7f626df8..901c34a6ec85fd026c53c08f3e79b88d2c11d37b 100644 --- a/interface/web/sites/lib/lang/bg_web_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 971ca5d893c646b4ffb2b6d0eb2f4ece4e02fcc1..83828a743d1ed5816b7b7d2d17cd9f67a8bf8632 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng index 6957f0b801b38a7193e5d0bc446327d0dcdb5547..3fdd93585ec8e05b83eb8750964d30e38e2c46d6 100644 --- a/interface/web/sites/lib/lang/br.lng +++ b/interface/web/sites/lib/lang/br.lng @@ -14,10 +14,7 @@ $wb['Shell-User'] = 'Usuários shell'; $wb['Cron Jobs'] = 'Tarefas no cron'; $wb['Statistics'] = 'Estatísticas'; $wb['Web traffic'] = 'Tráfego web'; -$wb['FTP traffic'] = 'Tráfego ftp'; $wb['Website quota (Harddisk)'] = 'Cota para sites (disco)'; -$wb['Database quota'] = 'Cota para banco de dados'; -$wb['Backup Stats'] = 'Estatísticas de backup'; $wb['Cron'] = 'Cron'; $wb['Stats'] = 'Estatísticas'; $wb['Shell'] = 'Shell'; @@ -33,6 +30,6 @@ $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['error_proxy_requires_url'] = 'Tipo de redirecionamento \"proxy\" exige uma url como caminho do redirecionamento.'; $wb['Domain'] = 'Domínio'; ?> diff --git a/interface/web/sites/lib/lang/br_cron.lng b/interface/web/sites/lib/lang/br_cron.lng index 0b8079ac72329ebb905ee6218a61e4b24ee333b9..eab5b9f688c89a6b8efcac26fb39d777592640a4 100644 --- a/interface/web/sites/lib/lang/br_cron.lng +++ b/interface/web/sites/lib/lang/br_cron.lng @@ -19,8 +19,8 @@ $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['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['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'; ?> diff --git a/interface/web/sites/lib/lang/br_database.lng b/interface/web/sites/lib/lang/br_database.lng index 5be0325e123bcb91d2c46275570a32d4ee197774..57b97693eb8a97ebe0afb793ae5d3d2bf0055797 100644 --- a/interface/web/sites/lib/lang/br_database.lng +++ b/interface/web/sites/lib/lang/br_database.lng @@ -23,7 +23,7 @@ $wb['database_remote_error_ips'] = 'Pelo menos um dos endereços IP informados n $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['parent_domain_id_txt'] = 'Site'; -$wb['database_site_error_empty'] = 'Selecione o "site" ao qual o banco de dados pertence.'; +$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'; diff --git a/interface/web/sites/lib/lang/br_database_user.lng b/interface/web/sites/lib/lang/br_database_user.lng index 16f2088f2fe318aaefe4d08d0bac779238a96b75..518f0296e1c28a9fbbc6911fae73a1e74d3de6d8 100644 --- a/interface/web/sites/lib/lang/br_database_user.lng +++ b/interface/web/sites/lib/lang/br_database_user.lng @@ -6,7 +6,7 @@ $wb['client_txt'] = 'Cliente'; $wb['active_txt'] = 'Ativo'; $wb['database_user_error_empty'] = '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. Para configurar um nome exclusivo, use como prefixo o domínio para o nome do usuário.'; -$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 o \'underscore\'. Tamanho: 2 - 64 caracteres.'; +$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 o \'underscore\'. Tamanho: 2 - 64 caracteres.'; $wb['database_user_error_len'] = 'O usuário do banco de dados - {user} - é muito longo. O limite do nome do usuário, incluindo o prefixo, são 16 caracteres.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; diff --git a/interface/web/sites/lib/lang/br_ftp_user.lng b/interface/web/sites/lib/lang/br_ftp_user.lng index a98cae2752d728908088a24ac03eed3516e6b4e5..bb8d99ceb05622cced7949ca108500fe6bfa80e4 100644 --- a/interface/web/sites/lib/lang/br_ftp_user.lng +++ b/interface/web/sites/lib/lang/br_ftp_user.lng @@ -25,8 +25,8 @@ $wb['directory_error_empty'] = 'Diretório está em branco.'; $wb['directory_error_notinweb'] = 'O diretório não está dentro do diretório web principal.'; $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.'; $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['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.'; diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng index 7b4935e0a2af8f991221fb0afb00b2b089087a5b..c92bf5baa4dff9219f43bf4b2c5997a4f2ccda75 100644 --- a/interface/web/sites/lib/lang/br_shell_user.lng +++ b/interface/web/sites/lib/lang/br_shell_user.lng @@ -20,8 +20,8 @@ $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.'; $wb['puser_txt'] = 'Usuário web'; $wb['pgroup_txt'] = 'Grupo web'; $wb['ssh_rsa_txt'] = 'Chave pública SSH-RSA (para acessos baseados em chave)'; -$wb['dir_dot_error'] = 'Não é permitido ".." no caminho.'; -$wb['dir_slashdot_error'] = 'Não é permitido "./" no caminho.'; +$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.'; diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain.lng b/interface/web/sites/lib/lang/br_web_aliasdomain.lng index 971b738c4eabe6aba44ed72df4b341c2a7ebcb99..9d4f1951d8090241d70c361f0dc1d4cbffd464d4 100644 --- a/interface/web/sites/lib/lang/br_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/br_web_aliasdomain.lng @@ -14,7 +14,7 @@ $wb['ssl_bundle_txt'] = 'Pacote'; $wb['ssl_action_txt'] = 'Ação'; $wb['ssl_domain_txt'] = 'Domínio'; $wb['server_id_txt'] = 'Servidor'; -$wb['web_folder_error_regex'] = 'Pasta inválida inserida. Por favor, não use barra "/".'; +$wb['web_folder_error_regex'] = 'Pasta inválida inserida. Por favor, não use barra \"/\".'; $wb['type_txt'] = 'Tipo'; $wb['parent_domain_id_txt'] = 'Site pai'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; @@ -62,7 +62,7 @@ $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São cara $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 máxima de tráfego disponível'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: "/teste/" ou "http://www.dominio.com.br/teste/".'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; $wb['php_open_basedir_txt'] = 'Diretório open_basedir do PHP'; $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida'; $wb['ruby_txt'] = 'Ruby'; diff --git a/interface/web/sites/lib/lang/br_web_childdomain.lng b/interface/web/sites/lib/lang/br_web_childdomain.lng index 651b664fd7d4dffdcdb6fdf2bc9a11c5f65fe620..1c53d165842a693423b8c785152334f48304d366 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -4,8 +4,8 @@ $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'; -$wb['ssl_cert_txt'] = 'Certificado'; +$wb['ssl_request_txt'] = 'Requisição SSL'; +$wb['ssl_cert_txt'] = 'Certificado SSL'; $wb['ssl_bundle_txt'] = 'Pacote'; $wb['ssl_action_txt'] = 'Ação'; $wb['server_id_txt'] = 'Servidor'; @@ -35,19 +35,19 @@ $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'] = 'HostNome do host'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: "/teste/" ou "http://www.dominio.com.br/teste/".'; +$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['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['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['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['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não use uma barra - \"/\".'; $wb['ipv6_address_txt'] = 'Endereço IPv6'; $wb['errordocs_txt'] = 'Pasta personalizada Error-Documents'; $wb['subdomain_txt'] = 'Subdomínio automático'; @@ -98,8 +98,8 @@ $wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve se $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['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'; @@ -115,4 +115,6 @@ $wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código d $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.'; ?> 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 a013454f0ccee2be1c42c61f1782e20ba9d4a1b6..20b559b128ad756ccd55299f2fc15a85b1bdd6f7 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain_list.lng @@ -14,4 +14,5 @@ $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['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 33ea9f35658286ec6c19ef59f791baacb269f8e2..f0fdabb75fc804d157f7fcece4acf9248584d1a4 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -55,7 +55,7 @@ $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São cara $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 máxima de tráfego disponível'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: "/teste/" ou "http://www.dominio.com.br/teste/".'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida'; $wb['backup_interval_txt'] = 'Intervalo de backup'; @@ -84,7 +84,7 @@ $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['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 inteiro positvo.'; $wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.'; @@ -133,4 +133,5 @@ $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:'; ?> diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng index 50fe8b5b6620b790e916d4d8e87cc6edf7d7d925..8abb0504384c4b66164b0dde23a133686dd1d794 100644 --- a/interface/web/sites/lib/lang/br_web_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_subdomain.lng @@ -36,7 +36,7 @@ $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['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. Exemplo de caminho válido: \"/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.'; 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 8628d66264bc0f0804690db425921523cf272a8d..f29396c3963290f50c321fb682cc304dfbf3cd53 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -56,7 +56,7 @@ $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São cara $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'] = 'Limite da cota de tráfego'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: "/teste" ou "http://www.dominio.com.br/teste/".'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplos de caminhos válidos: \"/teste\" ou \"http://www.dominio.com.br/teste/\".'; $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida'; $wb['backup_interval_txt'] = 'Intervalo de backup'; @@ -105,7 +105,7 @@ $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['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:'; @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para est $wb['subdomain_error_empty'] = 'O campo subdomínio está em branco ou contém caracteres inválidos.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['enable_spdy_txt'] = 'Habilitar SPDY'; +$wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Carregas detalhes do cliente'; $wb['load_my_data_txt'] = 'Carregar detalhes do contato'; $wb['reset_client_data_txt'] = 'Limpar dados'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> 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 ef8fb48602fe806dae4ee4fb3dc89f6765748c02..8a0c3e6a1fae58ad51d757c5feb04a2cc1fae92d 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng @@ -19,7 +19,7 @@ $wb['ssl_domain_txt'] = 'Domínio'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'Domínio'; $wb['host_txt'] = 'Hostname'; -$wb['web_folder_error_regex'] = 'Pasta informada é inválida. Por favor, não insira barra - "/".'; +$wb['web_folder_error_regex'] = 'Pasta informada é inválida. Por favor, não insira barra - \"/\".'; $wb['type_txt'] = 'Tipo'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; $wb['redirect_path_txt'] = 'Caminho para redirecionamento'; @@ -60,13 +60,13 @@ $wb['client_group_id_txt'] = 'Cliente'; $wb['stats_password_txt'] = '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. Caracteres válidos são: \'0-9\' e ".,-_".'; +$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. Caracteres válidos são: \'0-9\' e \".,-_\".'; $wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. Caracteres válidos são: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_country_error_regex'] = 'Campo \'País\' é inválido. Caracteres válidos são: \'A-Z\'.'; $wb['limit_traffic_quota_free_txt'] = 'Cota de tráfego'; -$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. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; $wb['php_open_basedir_txt'] = 'Diretório open_basedir do PHP'; $wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida'; $wb['ruby_txt'] = 'Ruby'; @@ -121,9 +121,9 @@ $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_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['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.'; diff --git a/interface/web/sites/lib/lang/br_webdav_user.lng b/interface/web/sites/lib/lang/br_webdav_user.lng index 67f494d5742011709673190927d7de0e5952a7ff..b135d5e0faa3b5b318d73441c6ee07093600306e 100644 --- a/interface/web/sites/lib/lang/br_webdav_user.lng +++ b/interface/web/sites/lib/lang/br_webdav_user.lng @@ -12,8 +12,8 @@ $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['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['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.'; diff --git a/interface/web/sites/lib/lang/ca_web_childdomain.lng b/interface/web/sites/lib/lang/ca_web_childdomain.lng index 6ff34de1a44f864a9498870151a1860cbf33d5bc..762acfe244fe2f8c158625c679821afe56d7740d 100644 --- a/interface/web/sites/lib/lang/ca_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; @@ -115,4 +116,5 @@ $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['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/ca_web_childdomain_list.lng b/interface/web/sites/lib/lang/ca_web_childdomain_list.lng index f06935bf0ee7098dce0816fb3d7da1886363a15b..246fb2b1d191a9f95f844053af0953460f76ff6f 100644 --- a/interface/web/sites/lib/lang/ca_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/ca_web_childdomain_list.lng @@ -9,6 +9,7 @@ $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; diff --git a/interface/web/sites/lib/lang/ca_web_domain.lng b/interface/web/sites/lib/lang/ca_web_domain.lng index fc680dfd1a56e8b525e864595dac746a8ab3ab4a..a3475c43c2d58dd7b3e2232032926af144882c71 100644 --- a/interface/web/sites/lib/lang/ca_web_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 83538dc778d95776ae89083b3fbf36bf46e0709a..d9563e0f975c8b1023c7884aff324d8df0a509c4 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -43,6 +43,7 @@ $wb['apache_directives_txt'] = 'Apache Directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; @@ -135,7 +136,7 @@ $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'; +$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'; diff --git a/interface/web/sites/lib/lang/cz.lng b/interface/web/sites/lib/lang/cz.lng index 4c16438e345c5b9eb50bf05ddb7716f094f5761f..9cf64fca7769bb61e4ea77b51fc6111436392cee 100644 --- a/interface/web/sites/lib/lang/cz.lng +++ b/interface/web/sites/lib/lang/cz.lng @@ -4,6 +4,7 @@ $wb['Website'] = 'Webové stránky'; $wb['Subdomain'] = 'Subdomény pro webové stránky'; $wb['Aliasdomain'] = 'Přezdívky domén webové stránky'; $wb['Database'] = 'Databáze'; +$wb['Database User'] = 'Uživatelé databáze'; $wb['Web Access'] = 'Webové přístupy'; $wb['FTP-User'] = 'FTP uživatelé'; $wb['Webdav-User'] = 'WebDAV uživatelé'; @@ -25,11 +26,10 @@ $wb['Domain'] = 'Doména'; $wb['Redirect'] = 'Přesměrování'; $wb['SSL'] = 'SSL'; $wb['Sites'] = 'Stránky'; -$wb['Database User'] = 'Uživatelé databáze'; $wb['APS Installer'] = 'APS instalátor'; $wb['Available packages'] = 'Dostupné balíčky'; $wb['Installed packages'] = 'Nainstalované balíčky'; $wb['Update Packagelist'] = 'Aktualizace seznamu balíčků'; $wb['Subdomain (Vhost)'] = 'Subdoména (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Přesměrování typu "proxy" potřebuje v cestě přesměrování URL.'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng index 6f9e2baa0f3d58b08b5834d8289b4a9597b64bdd..5a22de61dee5a526b2455c2029f3a204e531bd70 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -115,4 +115,6 @@ $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'] = 'Přezdívky domén webové stránky'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_childdomain_list.lng b/interface/web/sites/lib/lang/cz_web_childdomain_list.lng index 97b4c6ed9abe2cfc9a272b0043dd02556d47e3a7..c7411d04824aa6f112535458b1bbe3a68ea911e5 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Vytvořit subdoménu'; $wb['add_new_aliasdomain_txt'] = 'Vytvořit přezdívku domény'; $wb['aliasdomain_list_head_txt'] = 'Přezdívky domén'; $wb['subdomain_list_head_txt'] = 'Subdomény'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng index 585c2c94ffc3d29764960e6f1468a1bd0e53ae6a..0998cb1264a385b11957d85915ae7ea184bbc154 100644 --- a/interface/web/sites/lib/lang/cz_web_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 435c2b63fb70c7846ee9fced9cc6ba34651172fc..da8be311fbb2c63c67332a1bc87bfda6f898695d 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -135,7 +135,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; $wb['btn_save_txt'] = 'Uložit'; $wb['btn_cancel_txt'] = 'Zrušit'; -$wb['enable_spdy_txt'] = 'Enable SPDY'; +$wb['enable_spdy_txt'] = 'Enable 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)'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/de_web_childdomain.lng b/interface/web/sites/lib/lang/de_web_childdomain.lng index c30225a71e426962c8c6fb306ac2683707f3b3da..05b1f1d51d902ff0b4cdb1699b5740b28187137a 100644 --- a/interface/web/sites/lib/lang/de_web_childdomain.lng +++ b/interface/web/sites/lib/lang/de_web_childdomain.lng @@ -116,4 +116,5 @@ $wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache-Direktiven- $wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx-Direktiven-Schnipsel:'; $wb['Domain'] = 'Aliasdomain'; $wb['ssl_letsencrypt_exclude_txt'] = 'Nicht in Let\'s Encrypt Zertifikat aufnehmen'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/de_web_childdomain_list.lng b/interface/web/sites/lib/lang/de_web_childdomain_list.lng index 136a3d70adbce67c8d4b71ed20ce580e477340c2..3ba596cbcd926c2da8224c6387ce890a941ba0e3 100644 --- a/interface/web/sites/lib/lang/de_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/de_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Neue Subdomain hinzufügen'; $wb['add_new_aliasdomain_txt'] = 'Neue Aliasdomain hinzufügen'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng index 75a4f146695d49aa69b729de85343c6aa0b346c5..7232d8fa5f79141cb420ec53768617c132a60f55 100644 --- a/interface/web/sites/lib/lang/de_web_domain.lng +++ b/interface/web/sites/lib/lang/de_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 7719b296894a22f1c701aed85b713a00fd2287bc..ecfb1994cd4c19303c80b9e61592a349394fd7b0 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -38,6 +38,7 @@ $wb['apache_directives_txt'] = 'Apache Direktiven'; $wb['domain_error_empty'] = 'Domain ist leer.'; $wb['domain_error_unique'] = 'Domain muss eindeutig sein'; $wb['domain_error_regex'] = 'Domain Name ungültig.'; +$wb['domain_error_acme_invalid'] = 'Domainname acme.invalid ist nicht erlaubt.'; $wb['domain_error_autosub'] = 'Es existiert bereits eine Subdomain mit diesen Einstellungen.'; $wb['hd_quota_error_empty'] = 'Speicherplatzbeschränkung ist leer.'; $wb['traffic_quota_error_empty'] = 'Transfervolumenbeschränkung ist leer.'; @@ -134,7 +135,7 @@ $wb['host_txt'] = 'Host'; $wb['domain_error_wildcard'] = 'Wildcard-Subdomains sind nicht erlaubt.'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; -$wb['enable_spdy_txt'] = 'Aktiviere SPDY'; +$wb['enable_spdy_txt'] = 'Aktiviere SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Kundendaten übernehmen'; $wb['load_my_data_txt'] = 'Meine Kontaktdaten laden'; $wb['reset_client_data_txt'] = 'Daten verwerfen'; @@ -153,5 +154,5 @@ $wb['error_domain_change_forbidden'] = 'Der Domainname kann nicht geändert werd $wb['error_server_change_not_possible'] = 'Der Server kann nicht geändert werden.'; $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['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)'; ?> diff --git a/interface/web/sites/lib/lang/dk_web_childdomain.lng b/interface/web/sites/lib/lang/dk_web_childdomain.lng index 6ff34de1a44f864a9498870151a1860cbf33d5bc..762acfe244fe2f8c158625c679821afe56d7740d 100644 --- a/interface/web/sites/lib/lang/dk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; @@ -115,4 +116,5 @@ $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['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/dk_web_childdomain_list.lng b/interface/web/sites/lib/lang/dk_web_childdomain_list.lng index f06935bf0ee7098dce0816fb3d7da1886363a15b..246fb2b1d191a9f95f844053af0953460f76ff6f 100644 --- a/interface/web/sites/lib/lang/dk_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/dk_web_childdomain_list.lng @@ -9,6 +9,7 @@ $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; diff --git a/interface/web/sites/lib/lang/dk_web_domain.lng b/interface/web/sites/lib/lang/dk_web_domain.lng index 6124ee0676f2bc12f401a4cac7c9ec557b9efcc3..7b6183554314151740697ca33197f37a6bcfca78 100644 --- a/interface/web/sites/lib/lang/dk_web_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 83538dc778d95776ae89083b3fbf36bf46e0709a..d9563e0f975c8b1023c7884aff324d8df0a509c4 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -43,6 +43,7 @@ $wb['apache_directives_txt'] = 'Apache Directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; @@ -135,7 +136,7 @@ $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'; +$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'; diff --git a/interface/web/sites/lib/lang/el_web_childdomain.lng b/interface/web/sites/lib/lang/el_web_childdomain.lng index 43fb55160a1348708bda008421a3489bfb5984d9..3c5cb7a9368eb9dc7e1e1c7452917906db572fe5 100644 --- a/interface/web/sites/lib/lang/el_web_childdomain.lng +++ b/interface/web/sites/lib/lang/el_web_childdomain.lng @@ -115,4 +115,6 @@ $wb['available_php_directive_snippets_txt'] = 'Διαθέσιμα PHP Directive $wb['available_apache_directive_snippets_txt'] = 'Διαθέσιμα Apache Directive Snippets:'; $wb['available_nginx_directive_snippets_txt'] = 'Διαθέσιμα nginx Directive Snippets:'; $wb['Domain'] = 'Ψευδώνυμο domain'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/el_web_childdomain_list.lng b/interface/web/sites/lib/lang/el_web_childdomain_list.lng index 8c9111903899296b0c5bba8e2897cf89fd143918..266b6f0a71c1fb7d61cf72d019cdf2c11aec611b 100644 --- a/interface/web/sites/lib/lang/el_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/el_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/el_web_domain.lng b/interface/web/sites/lib/lang/el_web_domain.lng index 1ae8ca208b59fb3eb6a79ad3bfe6057b3daed812..1787aa0e33fbeedff7b8d897bcf2a683501143d3 100644 --- a/interface/web/sites/lib/lang/el_web_domain.lng +++ b/interface/web/sites/lib/lang/el_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 983a298b36c97aee6bbe240fe276e0a227212bd4..890e0da38e92682f9107fc16bbf9df52c6b705f5 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -41,6 +41,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Το Domain δεν έχει οριστεί.'; $wb['domain_error_unique'] = 'Υπάρχει ήδη ένα website ή ένα sub / aliasdomain με αυτό το όνομα domain.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['hd_quota_error_empty'] = 'Το όριο αποθηκευτικού χώρου είναι 0 ή δεν έχει οριστεί.'; $wb['traffic_quota_error_empty'] = 'Το όριο κίνησης δεν έχει οριστεί.'; $wb['error_ssl_state_empty'] = 'Κενή περιφέρεια SSL.'; @@ -136,7 +137,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; diff --git a/interface/web/sites/lib/lang/en_user_quota_stats_list.lng b/interface/web/sites/lib/lang/en_user_quota_stats_list.lng index 1e04b0fa3d417fb1534ca1d942fa4049b1e07d37..36f2c73d360f6835fa7892c3f00c6fa74ffdb82b 100644 --- a/interface/web/sites/lib/lang/en_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/en_user_quota_stats_list.lng @@ -6,4 +6,5 @@ $wb["used_txt"] = 'Used space'; $wb["hard_txt"] = 'Hard limit'; $wb["soft_txt"] = 'Soft limit'; $wb["files_txt"] = 'Single files'; -?> \ No newline at end of file +$wb["percentage_txt"] = 'Used %'; +?> diff --git a/interface/web/sites/lib/lang/en_web_childdomain.lng b/interface/web/sites/lib/lang/en_web_childdomain.lng index cd9afca55126dc33515df167d4ef4629c964dd4f..54def692147f0da11aa51d3d490741d422f04040 100644 --- a/interface/web/sites/lib/lang/en_web_childdomain.lng +++ b/interface/web/sites/lib/lang/en_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; diff --git a/interface/web/sites/lib/lang/en_web_childdomain_list.lng b/interface/web/sites/lib/lang/en_web_childdomain_list.lng index bd8be1a7e67e99f8855bab9f2d6f5554c1a84fcf..11b3f4cf12b1d8d66c9a5a6e67288fb0e0255f74 100644 --- a/interface/web/sites/lib/lang/en_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/en_web_childdomain_list.lng @@ -9,6 +9,7 @@ $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 940053bc703d37fec36dfd06a3fd70fc14f54e54..28c7c3e4e1b52483e56b8c63149179a1040b192c 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_sites_stats_list.lng b/interface/web/sites/lib/lang/en_web_sites_stats_list.lng index 5afde57f6dd05c10c148aec4d6526d0c101f4623..6645a3b2e7370ec5f9a998d27615fb805e35f79f 100644 --- a/interface/web/sites/lib/lang/en_web_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/en_web_sites_stats_list.lng @@ -6,4 +6,6 @@ $wb["last_month_txt"] = 'Last month'; $wb["this_year_txt"] = 'This year'; $wb["last_year_txt"] = 'Last year'; $wb["sum_txt"] = 'Sum'; -?> \ No newline at end of file +$wb["percentage_txt"] = 'In use %'; +$wb["quota_txt"] = 'Quota'; +?> 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 9948839b5f75693c376edea2cf64670540598f09..17d47ed4646d28f8a43c4e3a4fa7222d777903a6 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -29,6 +29,7 @@ $wb['vhost_type_txt'] = 'VHost Type'; $wb['hd_quota_txt'] = 'Harddisk Quota'; $wb['traffic_quota_txt'] = 'Traffic Quota'; $wb['cgi_txt'] = 'CGI'; +$wb['php_fpm_chroot_txt'] = 'PHP-FPM Chroot'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Own Error-Documents'; $wb['subdomain_txt'] = 'Auto-Subdomain'; @@ -43,6 +44,7 @@ $wb['apache_directives_txt'] = 'Apache Directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; @@ -139,7 +141,7 @@ $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid c $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'; +$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'; diff --git a/interface/web/sites/lib/lang/es_web_childdomain.lng b/interface/web/sites/lib/lang/es_web_childdomain.lng index 7322460b117be8a134a53b770c41db451bedc2c1..25843a0e21f0f9f854d74b07633315a33777c305 100644 --- a/interface/web/sites/lib/lang/es_web_childdomain.lng +++ b/interface/web/sites/lib/lang/es_web_childdomain.lng @@ -115,4 +115,6 @@ $wb['available_nginx_directive_snippets_txt'] = 'Fragmentos de directivas de ngi $wb['Domain'] = 'Alias de dominio'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/es_web_childdomain_list.lng b/interface/web/sites/lib/lang/es_web_childdomain_list.lng index 4192acc183b224c8ba3b17343d0c1c84f030d613..42b55c51a99963e18dab871849c7e5f6aabe5f6e 100644 --- a/interface/web/sites/lib/lang/es_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/es_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/es_web_domain.lng b/interface/web/sites/lib/lang/es_web_domain.lng index 8ba5d93c177a9a2b8dc70c54c87deca547a28167..889d29bd9536cbffa55b01f413bf48b6577692cd 100644 --- a/interface/web/sites/lib/lang/es_web_domain.lng +++ b/interface/web/sites/lib/lang/es_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 e484620216ef4ef6e6d36e706779ba79cd953752..bde2af3a857767309259169f5478be26221154ab 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -135,7 +135,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng index 3959fe53da218120128e91c90e4f5b04569c75b6..5105ba3f2e63dfae2a652b24d331f4f550ed91f7 100755 --- a/interface/web/sites/lib/lang/fi_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_childdomain_list.lng b/interface/web/sites/lib/lang/fi_web_childdomain_list.lng index d0dcf80f072f428abe37508b5db58b297de74d35..9b09740d764aea69fcdc819ae1bf10d9571b7b27 100755 --- a/interface/web/sites/lib/lang/fi_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/fi_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_domain.lng b/interface/web/sites/lib/lang/fi_web_domain.lng index 5d78fa7961e6facd13e2aeb05a00aadeb012504f..1cc2a2024d93b2d268622cf6a7f9bb25e30ce75c 100644 --- a/interface/web/sites/lib/lang/fi_web_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 74b98d86aa20336066207629921c54c8dbe94dfc..7a4fc41dd4ae4276b3a0e670c2c36d5ffcd34315 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_childdomain.lng b/interface/web/sites/lib/lang/fr_web_childdomain.lng index 5eda0b88b7bb400595778b800774eda42678cefa..1be206e1222358a13af16980c93dc0e766bb9fce 100644 --- a/interface/web/sites/lib/lang/fr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_childdomain_list.lng b/interface/web/sites/lib/lang/fr_web_childdomain_list.lng index 4d580ac432f791bf7672cab2cc195d3395601153..ae600d58b2935e4ec7517b7a5d5deb4b315a7b40 100644 --- a/interface/web/sites/lib/lang/fr_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/fr_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_domain.lng b/interface/web/sites/lib/lang/fr_web_domain.lng index 5cbce08e607d581a0afbe3a84c15c845ece40e31..421693a0e64cb0cbdcb92578911115fd12704e5b 100644 --- a/interface/web/sites/lib/lang/fr_web_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 39a1040d7ba210ca8eced7cff78b28e5cfc0795b..2dafc5f11141685e8b24f1a1cd8e33afa2b59ffb 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid c $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_childdomain.lng b/interface/web/sites/lib/lang/hr_web_childdomain.lng index fb95a27ca60a29500ee638a270ecfffadd416dab..99df0d2fdf5bb7ca009d376df5913203dc4b0857 100644 --- a/interface/web/sites/lib/lang/hr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_childdomain_list.lng b/interface/web/sites/lib/lang/hr_web_childdomain_list.lng index a03d31256fd537ed06b2b2a8ecbc70646146d615..307783eef9ef0453d251d473da091690901a8566 100644 --- a/interface/web/sites/lib/lang/hr_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/hr_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng index b6f589ead0b59505a97024aed46b6de92a8334ab..8a089e6ba5f365147feb61e20d0de0de4e9ed9cf 100644 --- a/interface/web/sites/lib/lang/hr_web_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 ecbc78132d0fc4c00b15166df0143c616a45b9e2..1e49cc5ba0f28d46cef74e75fbb4e564b559df59 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_childdomain.lng b/interface/web/sites/lib/lang/hu_web_childdomain.lng index 3714d7f9746594a957c49e6634f5a34f72cdb135..5ac19c3bbc25194eff853e3eb75463ff3bbd218e 100644 --- a/interface/web/sites/lib/lang/hu_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_childdomain_list.lng b/interface/web/sites/lib/lang/hu_web_childdomain_list.lng index 4aafde746628bdd80e37c9e476d5e6ca6ca93971..07a6b1eba33a8f22db28b98cb8c233e481c73433 100644 --- a/interface/web/sites/lib/lang/hu_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/hu_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_domain.lng b/interface/web/sites/lib/lang/hu_web_domain.lng index b2404565386f25e73c31c37bffe775e72611b387..5ddf06593ded5ab4740f467055c1c63e46d53176 100644 --- a/interface/web/sites/lib/lang/hu_web_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 e05cce85431f942995666c0190934299f7872c93..a13d237867ef640216872d2b2def7f14dc8f2134 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/id_web_childdomain.lng b/interface/web/sites/lib/lang/id_web_childdomain.lng index 60d32c30e1217d4c2abaf50bc83e4d3c7b327ce1..d5fd9711a4f08c985d682a09125106caf8d23780 100644 --- a/interface/web/sites/lib/lang/id_web_childdomain.lng +++ b/interface/web/sites/lib/lang/id_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/id_web_childdomain_list.lng b/interface/web/sites/lib/lang/id_web_childdomain_list.lng index a8430177494a8c08f223816b7fe814cdb6680c84..3b02f692cb5d9ee564db970841ef4eb3149fcfd4 100644 --- a/interface/web/sites/lib/lang/id_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/id_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/id_web_domain.lng b/interface/web/sites/lib/lang/id_web_domain.lng index a96b4cc2ce2044f6540855e7d46351e04d3ee6a7..785d7fc0daa9655cc0d4cbebf704ca89a95223b8 100644 --- a/interface/web/sites/lib/lang/id_web_domain.lng +++ b/interface/web/sites/lib/lang/id_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 7c637d58310c67c58daffd437b48f0a5af5f8149..54490d469a8f40695a3bb1b6dcb462b5ece2381f 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/it_web_childdomain.lng b/interface/web/sites/lib/lang/it_web_childdomain.lng index e98ba52bbea4e105cabe29364857b62e1891e599..3a214e298ed8bdcf56e1c7979760a986a7a20b13 100644 --- a/interface/web/sites/lib/lang/it_web_childdomain.lng +++ b/interface/web/sites/lib/lang/it_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Direttive Apache'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; $wb['no_redirect_txt'] = 'No redirect'; @@ -115,4 +116,5 @@ $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['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/it_web_childdomain_list.lng b/interface/web/sites/lib/lang/it_web_childdomain_list.lng index 520c81d6550120531dace31030228bac9de256e3..45d82ecc58fe351faf9307d8bac9c20ac40a2f74 100644 --- a/interface/web/sites/lib/lang/it_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/it_web_childdomain_list.lng @@ -7,6 +7,7 @@ $wb['domain_txt'] = 'Sottodominio'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; diff --git a/interface/web/sites/lib/lang/it_web_domain.lng b/interface/web/sites/lib/lang/it_web_domain.lng index 0f46e2a3ef82698182a7d48ebc77e5ac16182e59..68eae554fc16b20070359dd0f29e051d334ae9bf 100644 --- a/interface/web/sites/lib/lang/it_web_domain.lng +++ b/interface/web/sites/lib/lang/it_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 59a30ed4134bbefc55e70b28f650fbf4c339da92..8b3fbccd5779a2812e93d38b00e0a3b2a26c3e12 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -37,6 +37,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; $wb['error_ssl_state_empty'] = 'SSL State is empty.'; @@ -136,7 +137,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; diff --git a/interface/web/sites/lib/lang/ja_web_childdomain.lng b/interface/web/sites/lib/lang/ja_web_childdomain.lng index 3776cf8ebed81c9fd24f625e5c33acad186362e9..d59d7bbda5f8b0e1ba839103ea6ed36b1d460d00 100644 --- a/interface/web/sites/lib/lang/ja_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_childdomain_list.lng b/interface/web/sites/lib/lang/ja_web_childdomain_list.lng index 0ca4ef07ce1ea06ec697e05226d02c9605253c0d..cf323fb0365c52281ebeacb2b2bab9292944b85f 100644 --- a/interface/web/sites/lib/lang/ja_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/ja_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_domain.lng b/interface/web/sites/lib/lang/ja_web_domain.lng index 95e1f7de527634541ef7ec13e714e07a7e5b7f05..2dbf65d2e5a162fb94e1bcc6726bc916f778f197 100644 --- a/interface/web/sites/lib/lang/ja_web_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 faddd9b76ce2a6f8738ee2da07a132ca367dbc7f..93b98c14efd7e7d9a4cc5714a5675ae90d8b8bbd 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/nl_user_quota_stats_list.lng b/interface/web/sites/lib/lang/nl_user_quota_stats_list.lng index 64a5a0753e40d560ca5c5cddb27588f7ed12564d..9e29945be542a2335e803493d72e99a660d21514 100644 --- a/interface/web/sites/lib/lang/nl_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/nl_user_quota_stats_list.lng @@ -1,9 +1,10 @@ diff --git a/interface/web/sites/lib/lang/nl_web_childdomain.lng b/interface/web/sites/lib/lang/nl_web_childdomain.lng index 5771b015b45e80b162d457b8ef344ae17cb58dc6..e99616ce11c4b607c2eb8f8c1a66211b26f35b6f 100644 --- a/interface/web/sites/lib/lang/nl_web_childdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_childdomain_list.lng b/interface/web/sites/lib/lang/nl_web_childdomain_list.lng index 364ccad7acbba99079ec7fa773a0f56bd047eb26..915dbee0dc31180656c40c53c1f9ed57688c6f29 100644 --- a/interface/web/sites/lib/lang/nl_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/nl_web_childdomain_list.lng @@ -7,11 +7,12 @@ $wb['domain_txt'] = 'Subdomein'; $wb['domain_error_empty'] = 'Domein is niet ingvuld.'; $wb['domain_error_unique'] = 'Domein moet uniek zijn.'; $wb['domain_error_regex'] = 'Domeinnaam ongeldig.'; -$wb['no_redirect_txt'] = 'No redirect'; -$wb['no_flag_txt'] = 'No flag'; -$wb['none_txt'] = 'None'; -$wb['add_new_subdomain_txt'] = 'Add new Subdomain'; -$wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; -$wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; -$wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['no_redirect_txt'] = 'Geen redirect'; +$wb['no_flag_txt'] = 'Geen vlag'; +$wb['none_txt'] = 'Geen'; +$wb['add_new_subdomain_txt'] = 'Nieuw subdomein toevoegen'; +$wb['add_new_aliasdomain_txt'] = 'Nieuw aliasdomein toevoegen'; +$wb['aliasdomain_list_head_txt'] = 'Aliasdomeinen'; +$wb['subdomain_list_head_txt'] = 'Subdomeinen'; +$wb['domain_error_acme_invalid'] = 'Domeinnaam acme.invalid niet toegestaan.'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index 60a06c266a4cbbf04b98e8b54c4278ae8e5cb378..8b4f6ff8552ece4e37d36dde2b596babf9ff0e5a 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_folder_user.lng b/interface/web/sites/lib/lang/nl_web_folder_user.lng index 8a043d7802a5bcc0736d76135af2ec789dbc5713..87c07148629956e3c124ba1bc0b5d589ccce4e6b 100644 --- a/interface/web/sites/lib/lang/nl_web_folder_user.lng +++ b/interface/web/sites/lib/lang/nl_web_folder_user.lng @@ -11,4 +11,5 @@ $wb['password_mismatch_txt'] = 'De wachtwoorden zijn niet gelijk.'; $wb['password_match_txt'] = 'De wachtwoorden zijn gelijk.'; $wb['no_folder_perm'] = 'Je hebt geen toegang tot deze folder.'; $wb['error_user_exists_already_txt'] = 'Deze gebruiker bestaat al.'; +$wb['username_error_regex'] = 'De gebruikersnaam bevat niet toegestane karakters.'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_sites_stats_list.lng b/interface/web/sites/lib/lang/nl_web_sites_stats_list.lng index c25d743da6f831c0234c122a8b725a4878fea14f..fa5568418c2765c7b1bcac6a2dc3dc0921b1059b 100644 --- a/interface/web/sites/lib/lang/nl_web_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/nl_web_sites_stats_list.lng @@ -6,4 +6,6 @@ $wb['last_month_txt'] = 'Vorige maand'; $wb['this_year_txt'] = 'Dit jaar'; $wb['last_year_txt'] = 'Vorig jaar'; $wb['sum_txt'] = 'Som'; +$wb['percentage_txt'] = 'In gebruik %'; +$wb['quota_txt'] = 'Quota'; ?> 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 ceac5ff8212914158f15dbad278159167f948d12..6f7b86fc4d215176cf4e23bb03471fbf4127100e 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; $wb['btn_save_txt'] = 'Opslaan'; $wb['btn_cancel_txt'] = 'Annuleren'; -$wb['enable_spdy_txt'] = 'SPDY inschakelen'; +$wb['enable_spdy_txt'] = 'SPDY/HTTP2 inschakelen'; $wb['load_client_data_txt'] = 'Load client details'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Reset data'; @@ -148,10 +148,12 @@ $wb['https_port_txt'] = 'HTTPS Poort'; $wb['http_port_error_regex'] = 'HTTP Poort niet correct.'; $wb['https_port_error_regex'] = 'HTTPS Poort niet correct.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; -$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; -$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; -$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; -$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; +$wb['error_ipv4_change_forbidden'] = 'Het IP adres kan niet worden aangepast. Neem contact op met de administrator indien je het IPv4 adres wilt wijzigen.'; +$wb['error_ipv6_change_forbidden'] = 'Het IP adres kan niet worden aangepast. Neem contact op met de administrator indien je het IPv6 adres wilt wijzigen.'; +$wb['error_domain_change_forbidden'] = 'De domeinnaam kan niet worden aangepast. Neem contact op met de administrator indien je het domein wilt wijzigen.'; +$wb['error_server_change_not_possible'] = 'De server kan niet worden aangepast.'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['php_fpm_chroot_txt'] = 'PHP-FPM Chroot'; +$wb['domain_error_acme_invalid'] = 'Domeinnaam acme.invalid niet toegestaan.'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_childdomain.lng b/interface/web/sites/lib/lang/pl_web_childdomain.lng index bd17cd1f6fa4f45c1fc76e64cc53abe143574733..9b8a2b56ba56c8c0433b313ea0db921217eeae6b 100644 --- a/interface/web/sites/lib/lang/pl_web_childdomain.lng +++ b/interface/web/sites/lib/lang/pl_web_childdomain.lng @@ -115,4 +115,6 @@ $wb['available_php_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw PHP:'; $wb['available_apache_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw Apache:'; $wb['available_nginx_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw nginx:'; $wb['Domain'] = 'Alias domeny'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_childdomain_list.lng b/interface/web/sites/lib/lang/pl_web_childdomain_list.lng index 011a1232e2eacfb22fffa726d620aaa52dbd50e6..a873352e5fdbeb56f4caa009d8083b46f7b63995 100644 --- a/interface/web/sites/lib/lang/pl_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/pl_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_domain.lng b/interface/web/sites/lib/lang/pl_web_domain.lng index 8afd4b50c74bc0f39be5407cf6de8007f1edc495..2521f174069e5ee125e76df6eb7a2e44c5302e37 100644 --- a/interface/web/sites/lib/lang/pl_web_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 b8f22335013fde543e8f1af7294be9f571998b5a..e88c3eb6e5deb8780bfefafc95a6e7f0262b9def 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_childdomain.lng b/interface/web/sites/lib/lang/pt_web_childdomain.lng index c903b55d5d781003698253fb18a50cd232b03bd7..4cbc032c198098cf07e042df3b1bf7d87216066d 100644 --- a/interface/web/sites/lib/lang/pt_web_childdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_childdomain_list.lng b/interface/web/sites/lib/lang/pt_web_childdomain_list.lng index e3fbef84be22c1738165fe2bf1fc07c9a79faa7f..2339cd45f1becb95677ebb32dd83f9399ff095d1 100644 --- a/interface/web/sites/lib/lang/pt_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/pt_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_domain.lng b/interface/web/sites/lib/lang/pt_web_domain.lng index 475544e16ddb264c00fa344a3db213614350e5ea..fc7add5d896a6299f65ef0c96fa60a3cec2310a1 100644 --- a/interface/web/sites/lib/lang/pt_web_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 ec24cbe806939c4a4c52b66ba2de20ea210901a8..98c078ebce4c9c2e9d5adb1c2d41685d2067ebe6 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_childdomain.lng b/interface/web/sites/lib/lang/ro_web_childdomain.lng index a3bcfdd37dc8cd7c80763b65f4aec3b61936a672..30f83e72832e3ea2731b52d04a9253adeae2a843 100644 --- a/interface/web/sites/lib/lang/ro_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain necompletat'; $wb['domain_error_unique'] = 'exista deja un domeniu sau subdomeniu asemanator'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; $wb['no_redirect_txt'] = 'No redirect'; @@ -115,4 +116,5 @@ $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['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_childdomain_list.lng b/interface/web/sites/lib/lang/ro_web_childdomain_list.lng index 502562a216fc343545d32efc0cbad9d11dbd6520..07e7a43f39d0c8e1b93189c0858e9192e77614e8 100644 --- a/interface/web/sites/lib/lang/ro_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/ro_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_domain.lng b/interface/web/sites/lib/lang/ro_web_domain.lng index 185155ad816c2b41545256330291db646b70d045..7e98b45d02221301f5257938c6dcbf9336d075cd 100644 --- a/interface/web/sites/lib/lang/ro_web_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 a874c27bed800f9810c6e17d685a385faaacddd4..0b9cd882f1fab4ab1238faadbcf2885ae1cd5caa 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -38,6 +38,7 @@ $wb['apache_directives_txt'] = 'Apache directive'; $wb['domain_error_empty'] = 'Domain este necompletat'; $wb['domain_error_unique'] = 'deja exista un domeniu /subdomeniu asemanator'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['hd_quota_error_empty'] = 'Harddisk quota necompletata'; $wb['traffic_quota_error_empty'] = 'Traffic quota necompletata'; $wb['error_ssl_state_empty'] = 'SSL Judet necompletata'; @@ -136,7 +137,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; diff --git a/interface/web/sites/lib/lang/ru.lng b/interface/web/sites/lib/lang/ru.lng index 57799831f137624c884df32227b6181a78edc3dc..6316c21d17d09dd8a5a36dc89a5c0368c5ae5504 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 b00335355141131394737d9df5972cbfb63eedb0..f403143e5952f9cd716c6ee66c9a03491d9900c6 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'] = 'Ошибка установки'; diff --git a/interface/web/sites/lib/lang/ru_database.lng b/interface/web/sites/lib/lang/ru_database.lng index 01efd60c3ad489761246b7fe4a14f9e691328615..b931b715f27debbdf902487a9fd3e4684ae6230a 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 ad5bda065759d3d81185f30adc078b6270c10edd..df927317ca18c23dbe2fd0b7540aa981255ec1ef 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 6bbbc6ae50fa0f189a667ceaf3cd1b072eb5ae1c..49905e77ea1846b9bf0fc6348ad89f2a919193fa 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-ключ'; @@ -115,4 +115,6 @@ $wb['available_php_directive_snippets_txt'] = 'Доступные заготов $wb['available_apache_directive_snippets_txt'] = 'Доступные заготовки директив Apache:'; $wb['available_nginx_directive_snippets_txt'] = 'Доступные заготовки директив Nginx:'; $wb['Domain'] = 'Алиас домена'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_childdomain_list.lng b/interface/web/sites/lib/lang/ru_web_childdomain_list.lng index 35efffe9459a5d2254bedb551ee9d53ff4074ac7..c913d7fcc859b4e418d1a8430bf63909b8f50e45 100644 --- a/interface/web/sites/lib/lang/ru_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/ru_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Добавить новый поддомен'; $wb['add_new_aliasdomain_txt'] = 'Добавить новый алиас домена'; $wb['aliasdomain_list_head_txt'] = 'Алиас доменов'; $wb['subdomain_list_head_txt'] = 'Поддомены'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_domain.lng b/interface/web/sites/lib/lang/ru_web_domain.lng index a4be337fb41bd44f4528abc1a87cbf18792972b1..6cba45f1b7e065079da9d7bf900c41c09c9900c9 100644 --- a/interface/web/sites/lib/lang/ru_web_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_domain.lng @@ -133,4 +133,5 @@ $wb['http_port_txt'] = 'Порт HTTP'; $wb['https_port_txt'] = 'Порт HTTPS'; $wb['http_port_error_regex'] = 'Некорректный порт HTTP.'; $wb['https_port_error_regex'] = 'Некорректный порт HTTPS.'; +$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_subdomain.lng b/interface/web/sites/lib/lang/ru_web_subdomain.lng index 716b6b7a5fb0d306a3d1ba1450541347a3013094..46203a18155ebe083b6c0f961c2c397811875aac 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 90b4af30743a17950b04cd81095a902d8ceecbb4..f525fe2025aa23749ca468d76d387c5c665365fc 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'Выбранный сервер запрещён $wb['subdomain_error_empty'] = 'Поле поддомена пуст или содержит недопустимые символы.'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; -$wb['enable_spdy_txt'] = 'Включить SPDY'; +$wb['enable_spdy_txt'] = 'Включить SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Загрузить информацию о клиенте'; $wb['load_my_data_txt'] = 'Загрузить мои контактные данные'; $wb['reset_client_data_txt'] = 'Сброс данных'; @@ -148,4 +148,7 @@ $wb['https_port_txt'] = 'Порт HTTPS'; $wb['http_port_error_regex'] = 'Некорректный порт HTTP.'; $wb['https_port_error_regex'] = 'Некорректный порт HTTPS.'; $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)'; ?> diff --git a/interface/web/sites/lib/lang/se_web_childdomain.lng b/interface/web/sites/lib/lang/se_web_childdomain.lng index 8bcd638cd7796d3bb2572567b1c7c690d48543eb..eff6791c65ae3f4baca3b5f282e81100af8c802c 100644 --- a/interface/web/sites/lib/lang/se_web_childdomain.lng +++ b/interface/web/sites/lib/lang/se_web_childdomain.lng @@ -35,6 +35,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/'; $wb['no_redirect_txt'] = 'No redirect'; @@ -115,4 +116,5 @@ $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['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; ?> diff --git a/interface/web/sites/lib/lang/se_web_childdomain_list.lng b/interface/web/sites/lib/lang/se_web_childdomain_list.lng index 1ce49ba1be6e86b451e04493c0e7f737a09e4939..4dfc97f907e90c569e325ed1c2ee4b4707953c3b 100644 --- a/interface/web/sites/lib/lang/se_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/se_web_childdomain_list.lng @@ -7,6 +7,7 @@ $wb['domain_txt'] = 'Subdomain'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng index b4f58b827e65b9d81e49837f05b79e262f51b6d7..91fa8c4db56627639c7a3519cad7bea8913bf62a 100644 --- a/interface/web/sites/lib/lang/se_web_domain.lng +++ b/interface/web/sites/lib/lang/se_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 e0dd1e129431f20e1e34384ef46748f3df52da9c..28e8c00c7a13d453a02dda8f3fbecdf2a54f48b1 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -37,6 +37,7 @@ $wb['apache_directives_txt'] = 'Apache directives'; $wb['domain_error_empty'] = 'Domain is empty.'; $wb['domain_error_unique'] = 'Domain must be unique.'; $wb['domain_error_regex'] = 'Domain name invalid.'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is empty.'; $wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; $wb['error_ssl_state_empty'] = 'SSL State is empty.'; @@ -136,7 +137,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; diff --git a/interface/web/sites/lib/lang/sk_web_childdomain.lng b/interface/web/sites/lib/lang/sk_web_childdomain.lng index d460d1efb0f64bcecd587e883f2dc50d21fbdb4c..e0d26667bc7252103db05d4e90deb8daf4985c4a 100644 --- a/interface/web/sites/lib/lang/sk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_childdomain_list.lng b/interface/web/sites/lib/lang/sk_web_childdomain_list.lng index f050030cd6d08128289b1015156b2f1ca7e820a3..f6cf491a3f45785a1bd7e3db10efb49e00f3b803 100644 --- a/interface/web/sites/lib/lang/sk_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/sk_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_domain.lng b/interface/web/sites/lib/lang/sk_web_domain.lng index 8e39ca8afa24b98212beaf0e5478c20de4b29055..f8f2f79b965f20526db9faf7d8e551d0892b6cf2 100644 --- a/interface/web/sites/lib/lang/sk_web_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 390e0d171d55f397094a2153e00916df891d1021..75d53c154f19cbe87698dab3fc87df9a71dc8758 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -136,7 +136,7 @@ $wb['server_chosen_not_ok'] = 'The selected server is not allowed for this accou $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng index ee35b01a996d63c23d3fdc127cdde4b798c883c5..e11c6a92b584c6f93cf2be6219bb60e9b5fe612b 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng @@ -115,4 +115,6 @@ $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'; ?> 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 b02c6de64a610e2b121f93ae47bd5b056edd1977..26b3acc9e97ddc09fe9ce94ad7cefd606eab3a7f 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng @@ -14,4 +14,5 @@ $wb['add_new_subdomain_txt'] = 'Add new Subdomain'; $wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; $wb['aliasdomain_list_head_txt'] = 'Aliasdomains'; $wb['subdomain_list_head_txt'] = 'Subdomains'; +$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index da3625df37340c411ad9c75a5b8680960f8b7192..c97ce73778810e403fdbdc1e1e1d0f8d570eb1a9 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -133,4 +133,5 @@ $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:'; ?> 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 d78b7cead6e5bd8179b2f15fa8636f304bae8069..da55d66e60f12ba15e6724d0cae6a6a04ad045ce 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -135,7 +135,7 @@ $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'; +$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'; @@ -154,4 +154,5 @@ $wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Pleas $wb['error_server_change_not_possible'] = 'The server cannot be changed.'; $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.'; ?> diff --git a/interface/web/sites/list/aps_availablepackages.list.php b/interface/web/sites/list/aps_availablepackages.list.php index 812e57fd60782c2392848ae15262430e685c4ad7..9fd19434223308f933b2b6a62171c1964d008aaf 100644 --- a/interface/web/sites/list/aps_availablepackages.list.php +++ b/interface/web/sites/list/aps_availablepackages.list.php @@ -80,7 +80,7 @@ if($_SESSION['s']['user']['typ'] == 'admin') 'prefix' => '', 'suffix' => '', 'width' => '', - 'value' => array(PACKAGE_ENABLED => '
    '.$app->lng('Yes').'
    ', - PACKAGE_LOCKED => '
    '.$app->lng('No').'
    ')); + 'value' => array(PACKAGE_ENABLED => $app->lng('Yes'), + PACKAGE_LOCKED => $app->lng('No'))); } ?> diff --git a/interface/web/sites/list/backup_stats.list.php b/interface/web/sites/list/backup_stats.list.php index cc7358b99748b1ae8957bce61b6b28f872a7d723..8d27a29db51190eac0b7b542088135908a1027e2 100644 --- a/interface/web/sites/list/backup_stats.list.php +++ b/interface/web/sites/list/backup_stats.list.php @@ -27,12 +27,23 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('used_sort', 'files'); +$liste["phpsort"] = array('active', 'domain', 'server_id', 'interval_sort', 'backup_copies_exists', 'backup_size_sort'); /***************************************************** * Suchfelder *****************************************************/ +$liste["item"][] = array( 'field' => "domain", + 'datatype' => "VARCHAR", + 'filters' => array( 0 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8') + ), + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); $liste['item'][] = array ( 'field' => 'server_id', diff --git a/interface/web/sites/list/cron.list.php b/interface/web/sites/list/cron.list.php index 7679a2e1c18c1ae42403242c582ad7472484bc8c..fc8c9691a63181094f68e4b8742eb0725a8c247c 100644 --- a/interface/web/sites/list/cron.list.php +++ b/interface/web/sites/list/cron.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/sites/list/database.list.php b/interface/web/sites/list/database.list.php index b4d1196b59067c759fcbbda88bc23b082d8c1733..25e1b8de7f3811e6ef3a7bc51a1d459c445b572e 100644 --- a/interface/web/sites/list/database.list.php +++ b/interface/web/sites/list/database.list.php @@ -59,7 +59,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "remote_access", 'datatype' => "VARCHAR", @@ -68,7 +68,7 @@ $liste["item"][] = array( 'field' => "remote_access", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "type", 'datatype' => "VARCHAR", diff --git a/interface/web/sites/list/database_quota_stats.list.php b/interface/web/sites/list/database_quota_stats.list.php index 6cee92f3cba46fe939492ea04820c1620ec63261..824f8707a220035cd1b02acdf09b285810ac5587 100644 --- a/interface/web/sites/list/database_quota_stats.list.php +++ b/interface/web/sites/list/database_quota_stats.list.php @@ -28,7 +28,7 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('server_name', 'client', 'used', 'quota', 'percentage'); +$liste["phpsort"] = array('server_name', 'client', 'used_sort', 'quota_sort', 'percentage_sort'); /***************************************************** diff --git a/interface/web/sites/list/ftp_sites_stats.list.php b/interface/web/sites/list/ftp_sites_stats.list.php index 16d3eb12620a23cfff415f9d645fa968b394adab..e9a4b2056baba3687738c608d528bba9e1318f44 100644 --- a/interface/web/sites/list/ftp_sites_stats.list.php +++ b/interface/web/sites/list/ftp_sites_stats.list.php @@ -41,7 +41,7 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('this_month', 'last_month', 'this_year', 'last_year'); +$liste["phpsort"] = array('this_month_sort', 'last_month_sort', 'this_year_sort', 'last_year_sort'); /***************************************************** * Suchfelder diff --git a/interface/web/sites/list/ftp_user.list.php b/interface/web/sites/list/ftp_user.list.php index 765740638287838efcb710225aec2c999657104c..20a8a327acb60feaf76877a4da1a085a7ab44267 100644 --- a/interface/web/sites/list/ftp_user.list.php +++ b/interface/web/sites/list/ftp_user.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/sites/list/shell_user.list.php b/interface/web/sites/list/shell_user.list.php index 9ea244ed0b2071ccd47cfb29b4b4d55d84fd409d..3f51082d6e99b5446568a084d4a05a2a6f613865 100644 --- a/interface/web/sites/list/shell_user.list.php +++ b/interface/web/sites/list/shell_user.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/sites/list/user_quota_stats.list.php b/interface/web/sites/list/user_quota_stats.list.php index 52f54cf9532eb2fe5d019f6a10ee5ede4cc99f20..e7d88115a8bfe25f0a458e5f728a3bcba6265f08 100644 --- a/interface/web/sites/list/user_quota_stats.list.php +++ b/interface/web/sites/list/user_quota_stats.list.php @@ -43,7 +43,7 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('used', 'soft', 'hard', 'files'); +$liste["phpsort"] = array('used_sort', 'soft_sort', 'hard_sort', 'files', 'percentage'); /***************************************************** diff --git a/interface/web/sites/list/web_childdomain.list.php b/interface/web/sites/list/web_childdomain.list.php index 1e38b24a4152f564031320843db558f8a427f00e..202744e8de522feb60f5a1d23771c3549f27b7a3 100644 --- a/interface/web/sites/list/web_childdomain.list.php +++ b/interface/web/sites/list/web_childdomain.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/sites/list/web_folder.list.php b/interface/web/sites/list/web_folder.list.php index fce8cfd1efef57f5d482ef0066514f94c9aa3150..dc2fb0418acddfb631520d186cab114f63d9fac3 100644 --- a/interface/web/sites/list/web_folder.list.php +++ b/interface/web/sites/list/web_folder.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/sites/list/web_folder_user.list.php b/interface/web/sites/list/web_folder_user.list.php index c8f078a4be9738581accb3e9d90434379a9f991c..f0a1cd8ad29481f819d212986e09c252da5084b9 100644 --- a/interface/web/sites/list/web_folder_user.list.php +++ b/interface/web/sites/list/web_folder_user.list.php @@ -57,7 +57,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "web_folder_id", diff --git a/interface/web/sites/list/web_sites_stats.list.php b/interface/web/sites/list/web_sites_stats.list.php index af7ce9effbf2577f4c0b06caaf6799b60b55c7b9..24e9eec6e5b24c74ee6ad7930a5c12ed569f2093 100644 --- a/interface/web/sites/list/web_sites_stats.list.php +++ b/interface/web/sites/list/web_sites_stats.list.php @@ -43,7 +43,7 @@ $liste["paging_tpl"] = "templates/paging.tpl.htm"; $liste["auth"] = "yes"; // mark columns for php sorting (no real mySQL columns) -$liste["phpsort"] = array('this_month', 'last_month', 'this_year', 'last_year'); +$liste["phpsort"] = array('this_month_sort', 'last_month_sort', 'this_year_sort', 'last_year_sort', 'percentage', 'quota_sort'); /***************************************************** * Suchfelder diff --git a/interface/web/sites/list/web_vhost_domain.list.php b/interface/web/sites/list/web_vhost_domain.list.php index 1d167a77bc67674a1d2e1e07f406e8c3e99aba8e..e6b0cd25193a601e1e866b88fbc111e49d0ed6d8 100644 --- a/interface/web/sites/list/web_vhost_domain.list.php +++ b/interface/web/sites/list/web_vhost_domain.list.php @@ -78,7 +78,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); if($_SESSION['s']['user']['typ'] == 'admin' && $vhostdomain_type == 'domain') { $liste["item"][] = array( 'field' => "sys_groupid", diff --git a/interface/web/sites/list/webdav_user.list.php b/interface/web/sites/list/webdav_user.list.php index 5d1aeec94a9f82e6857639475d91ecf000904ea6..04b772d15683448d4654fc5cfa18602a19f854b3 100644 --- a/interface/web/sites/list/webdav_user.list.php +++ b/interface/web/sites/list/webdav_user.list.php @@ -55,7 +55,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "server_id", diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php index 77c4509b44e7e2c56c5ca72d80e16d3d30b2198e..7f74d893fc54cef87bdbdd423ea7ba6be267a89f 100644 --- a/interface/web/sites/shell_user_edit.php +++ b/interface/web/sites/shell_user_edit.php @@ -79,19 +79,19 @@ class page_action extends tform_actions { if ($this->dataRecord['username'] != ""){ /* REMOVE the restriction */ - $app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $shelluser_prefix)); + $app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $shelluser_prefix), true); } if($this->dataRecord['username'] == "") { - $app->tpl->setVar("username_prefix", $shelluser_prefix); + $app->tpl->setVar("username_prefix", $shelluser_prefix, true); } else { - $app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $shelluser_prefix, $global_config['shelluser_prefix'])); + $app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $shelluser_prefix, $global_config['shelluser_prefix']), true); } if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("parent_domain_id_value", $this->dataRecord["parent_domain_id"]); + $app->tpl->setVar("parent_domain_id_value", $this->dataRecord["parent_domain_id"], true); } else { $app->tpl->setVar("edit_disabled", 0); } diff --git a/interface/web/sites/templates/backup_stats_list.htm b/interface/web/sites/templates/backup_stats_list.htm index 294160842349eb1ca435141d89fa5df540803298..1955191a947b27f89e54d36bcfd80f38197723d0 100644 --- a/interface/web/sites/templates/backup_stats_list.htm +++ b/interface/web/sites/templates/backup_stats_list.htm @@ -1,5 +1,5 @@

    @@ -8,35 +8,48 @@
    {tmpl_var name='search_limit'}{tmpl_var name='search_limit'}
          @@ -33,8 +33,11 @@ {tmpl_var name="name"} {tmpl_var name="used"} {tmpl_var name="quota"}{tmpl_var name="percentage"} + {tmpl_if name="progressbar" op="!=" value="-1"}
    +
    {tmpl_var name="percentage"}
    +
    {/tmpl_if} +
    {tmpl_var name="jid"}{tmpl_var name="is_domain_admin"} {tmpl_var name="is_muc_admin"}
    - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
    {tmpl_var name='search_limit'}
          + +
    {tmpl_var name="active"} {tmpl_var name="domain"} {tmpl_var name="server_id"} {tmpl_var name="backup_interval"} / {tmpl_var name="backup_copies"} {tmpl_var name="backup_copies_exists"} {tmpl_var name="backup_size"}
    - -
    {tmpl_var name="active"} {tmpl_var name="domain"} {tmpl_var name="server_id"} {tmpl_var name="backup_interval"} / {tmpl_var name="backup_copies"} {tmpl_var name="backup_copies_exists"} {tmpl_var name="backup_size"}
    + +
    - +
    diff --git a/interface/web/sites/templates/database_quota_stats_list.htm b/interface/web/sites/templates/database_quota_stats_list.htm index 81a76762be7b5e8fb8e951517367ce0831e04633..6964bb8029fad5c32de691b258ea401b1ab65289 100644 --- a/interface/web/sites/templates/database_quota_stats_list.htm +++ b/interface/web/sites/templates/database_quota_stats_list.htm @@ -8,13 +8,13 @@ - - - - - - + + + + + + @@ -36,8 +36,10 @@ - - + diff --git a/interface/web/sites/templates/ftp_sites_stats_list.htm b/interface/web/sites/templates/ftp_sites_stats_list.htm index 678864cb9115c0bc5925f5917b94dc713e412266..4e0e3d26aa5a317799f7dbe08b0b4f8bf765a391 100644 --- a/interface/web/sites/templates/ftp_sites_stats_list.htm +++ b/interface/web/sites/templates/ftp_sites_stats_list.htm @@ -8,12 +8,12 @@
    - {tmpl_var name='search_limit'} + {tmpl_var name='search_limit'}
    {tmpl_var name="client"} {tmpl_var name="used"} {tmpl_var name="quota"}{tmpl_var name="percentage"}{tmpl_if name="progressbar" op="!=" value="-1"}
    +
    {tmpl_var name="percentage"}
    +
    {/tmpl_if} +
    - - - - - - + + + + + + diff --git a/interface/web/sites/templates/user_quota_stats_list.htm b/interface/web/sites/templates/user_quota_stats_list.htm index 704edafd87c3e8172d50008f02aa159c06204b3a..480a0eaf8b7b879045382086adae8785cd39ab7c 100644 --- a/interface/web/sites/templates/user_quota_stats_list.htm +++ b/interface/web/sites/templates/user_quota_stats_list.htm @@ -8,13 +8,14 @@
    {tmpl_var name='search_limit'}{tmpl_var name='search_limit'}
    - - - - - - - + + + + + + + + @@ -35,9 +36,11 @@ - + - + diff --git a/interface/web/sites/templates/web_sites_stats_list.htm b/interface/web/sites/templates/web_sites_stats_list.htm index 9f9e863c9182a3da82e712fc93ff8661524ca3ed..eec4020140340ee676849c34129adfe52f3e9f93 100644 --- a/interface/web/sites/templates/web_sites_stats_list.htm +++ b/interface/web/sites/templates/web_sites_stats_list.htm @@ -9,12 +9,14 @@
    {tmpl_var name='search_limit'}{tmpl_var name='search_limit'}
    {tmpl_var name="system_user"} {tmpl_var name="used"} {tmpl_var name="soft"}{tmpl_var name="hard"} {tmpl_var name="files"}{tmpl_if name="progressbar" op="!=" value="-1"}
    +
    {tmpl_var name="percentage"}%
    +
    {/tmpl_if}
    - - - - - - + + + + + + + + @@ -22,7 +24,8 @@ - + @@ -35,7 +38,10 @@ - + + @@ -49,7 +55,7 @@ - + diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm index 7ca4710f404328e6e0b857f87ad7d766120efab1..322748257b9ce85d989101de4925fe866c061dc1 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'} +
    +
    - {tmpl_var name="available_apache_directive_snippets_txt"}

     {tmpl_var name="apache_directive_snippets_txt"}
    ----
     {tmpl_var name='variables_txt'}: {DOCROOT} + {tmpl_var name="available_apache_directive_snippets_txt"}

     {tmpl_var name="apache_directive_snippets_txt"}
    ----
     {tmpl_var name='variables_txt'}: {DOCROOT}, {DOCROOT_CLIENT}
    - {tmpl_var name="available_nginx_directive_snippets_txt"}

     {tmpl_var name="nginx_directive_snippets_txt"}
    ----
     {tmpl_var name='variables_txt'}: {DOCROOT}, {FASTCGIPASS}, {PHPFALLBACKFASTCGIPASS} + {tmpl_var name="available_nginx_directive_snippets_txt"}

     {tmpl_var name="nginx_directive_snippets_txt"}
    ----
     {tmpl_var name='variables_txt'}: {DOCROOT}, {DOCROOT_CLIENT}, {FASTCGIPASS}, {PHPFALLBACKFASTCGIPASS}
    diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 22a1952704229b8e6321b6d8a3f477f08a64d816..149d4308875af598dfb80c0165a7da816da68da0 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -237,6 +237,13 @@ {tmpl_var name='directive_snippets_id'}
    + +
    + +
    {tmpl_var name="enable_pagespeed"}
    +
    +
    + {tmpl_hook name="field_active"}
    @@ -319,7 +327,8 @@ }); // new Vhostsubdomains/Vhostaliasdomains if(serverId == '') jQuery('#parent_domain_id').trigger('change'); - + +/* if(jQuery('#directive_snippets_id').val() > 0){ jQuery('.pagespeed').show(); } else { @@ -332,6 +341,7 @@ jQuery('.pagespeed').hide(); } }); +*/ function reloadServerId(noFormChange) { var parentWebId = jQuery('#parent_domain_id').val(); @@ -349,6 +359,7 @@ var selected = jQuery('#php').val(); jQuery('.apache').hide(); jQuery('.nginx').show(); +/* if(jQuery('#directive_snippets_id').val() > 0){ jQuery('.pagespeed').show(); } else { @@ -361,6 +372,7 @@ jQuery('.pagespeed').hide(); } }); +*/ if(selected != "no" && selected != "php-fpm" && selected != "hhvm") { jQuery('#php option[value="php-fpm"]').attr('selected', 'selected').val('php-fpm'); } @@ -432,8 +444,8 @@ function reloadFastcgiPHPVersions(noFormChange) { jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getphpfastcgi", client_group_id : clientGroupId}, function(data) { - var options = ''; - //var options = ''; + //var options = ''; + var options = ''; var phpfastcgiselected = ''; $.each(data, function(key, val) { @@ -456,7 +468,7 @@ phpfastcgiselected = ''; - options += ''; + //options += ''; $('#fastcgi_php_version').html(options).change(); if(noFormChange) ISPConfig.resetFormChanged(); }); diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index 1ece7aca9ae8837766e0f9b3ca2717425321f4cd..b784f159652e7d51a6a8231c10f4630c7bf3af7f 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -41,7 +41,7 @@
    - + diff --git a/interface/web/sites/templates/web_vhost_domain_redirect.htm b/interface/web/sites/templates/web_vhost_domain_redirect.htm index 6b4a2a528f195b8e606f163c5ecd53814dd07c83..e38c08671c7a5899af323fee3e4e90b1776531b2 100644 --- a/interface/web/sites/templates/web_vhost_domain_redirect.htm +++ b/interface/web/sites/templates/web_vhost_domain_redirect.htm @@ -81,13 +81,13 @@ jQuery('#redirect_type option[value="break"]').attr('disabled','disabled'); jQuery('#redirect_type option[value="redirect"]').attr('disabled','disabled'); jQuery('#redirect_type option[value="permanent"]').attr('disabled','disabled'); - jQuery('#redirect_type option[value="proxy"]').attr('disabled','disabled'); + //jQuery('#redirect_type option[value="proxy"]').attr('disabled','disabled'); jQuery('#redirect_type option[value="last"]').hide(); jQuery('#redirect_type option[value="break"]').hide(); jQuery('#redirect_type option[value="redirect"]').hide(); jQuery('#redirect_type option[value="permanent"]').hide(); - jQuery('#redirect_type option[value="proxy"]').hide(); + //jQuery('#redirect_type option[value="proxy"]').hide(); if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected'); jQuery('.nginx').hide(); } diff --git a/interface/web/sites/user_quota_stats.php b/interface/web/sites/user_quota_stats.php index 9c9300807647fa9b499279a0900ac2d43fab3feb..bc00827e11061c0e72a8fedc3375f8640c110dcd 100644 --- a/interface/web/sites/user_quota_stats.php +++ b/interface/web/sites/user_quota_stats.php @@ -43,10 +43,13 @@ class list_action extends listform_actions { $server = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $rec['server_id']); $rec['domain'] = $rec['domain'].($server['server_name'] != '' ? ' ('.$server['server_name'].')' : ''); - + $rec['used'] = $monitor_data['user'][$username]['used']; + $rec['used_sort'] = $rec['used']; $rec['soft'] = $monitor_data['user'][$username]['soft']; + $rec['soft_sort'] = $rec['soft']; $rec['hard'] = $monitor_data['user'][$username]['hard']; + $rec['hard_sort'] = $rec['hard']; $rec['files'] = $monitor_data['user'][$username]['files']; if (!is_numeric($rec['used'])){ @@ -56,47 +59,16 @@ class list_action extends listform_actions { $rec['used'] = $rec['used'][1]; } } + $rec['percentage'] = $rec['soft'] != 0 ? round(($rec['used']/$rec['soft'])*100) : -1; + $rec['progressbar'] = $rec['percentage'] > 100 ? 100 : $rec['percentage']; $rec['used_sort'] = $rec['used']; if (!is_numeric($rec['soft'])) $rec['soft']=$rec['soft'][1]; if (!is_numeric($rec['hard'])) $rec['hard']=$rec['hard'][1]; if (!is_numeric($rec['files'])) $rec['files']=$rec['files'][1]; $rec['used']=$app->functions->formatBytes($rec['used']*1024); - $rec['soft']=$app->functions->formatBytes($rec['soft']*1024); - $rec['hard']=$app->functions->formatBytes($rec['hard']*1024); - if($rec['soft'] == "NAN") $rec['soft'] = $app->lng('unlimited'); - if($rec['hard'] == "NAN") $rec['hard'] = $app->lng('unlimited'); -/* - if($rec['used'] > 1024) { - $rec['used'] = round($rec['used'] / 1024, 2).' MB'; - } else { - if ($rec['used'] != '') $rec['used'] .= ' KB'; - } - - if($rec['soft'] > 1024) { - $rec['soft'] = round($rec['soft'] / 1024, 2).' MB'; - } else { - $rec['soft'] .= ' KB'; - } - - if($rec['hard'] > 1024) { - $rec['hard'] = round($rec['hard'] / 1024, 2).' MB'; - } else { - $rec['hard'] .= ' KB'; - } - - if($rec['soft'] == " KB") $rec['soft'] = $app->lng('unlimited'); - if($rec['hard'] == " KB") $rec['hard'] = $app->lng('unlimited'); -*/ - - /* - if(!strstr($rec['used'],'M') && !strstr($rec['used'],'K')) $rec['used'].= ' B'; - if(!strstr($rec['soft'],'M') && !strstr($rec['soft'],'K')) $rec['soft'].= ' B'; - if(!strstr($rec['hard'],'M') && !strstr($rec['hard'],'K')) $rec['hard'].= ' B'; - */ -/* - if($rec['soft'] == '0 B' || $rec['soft'] == '0 KB' || $rec['soft'] == '0') $rec['soft'] = $app->lng('unlimited'); - if($rec['hard'] == '0 B' || $rec['hard'] == '0 KB' || $rec['hard'] == '0') $rec['hard'] = $app->lng('unlimited'); -*/ + $rec['soft'] = $rec['soft'] == 0 ? $app->lng('unlimited') : $rec['soft']=$app->functions->formatBytes($rec['soft']*1024); + $rec['hard'] = $rec['hard'] == 0 ? $app->lng('unlimited') : $rec['hard']=$app->functions->formatBytes($rec['hard']*1024); + $rec['files'] = is_numeric($rec['files']) ? $rec['files'] : 0; //* The variable "id" contains always the index variable $rec['id'] = $rec[$this->idx_key]; return $rec; @@ -108,6 +80,4 @@ $list = new list_action; $list->SQLExtWhere = "web_domain.type = 'vhost'"; $list->SQLOrderBy = 'ORDER BY web_domain.domain'; $list->onLoad(); - - ?> diff --git a/interface/web/sites/web_childdomain_edit.php b/interface/web/sites/web_childdomain_edit.php index 6ef98f901fb864083d41b9feb64bd102edab4f67..2da58a4661c4342dfe92402dc6c23aace687ae91 100644 --- a/interface/web/sites/web_childdomain_edit.php +++ b/interface/web/sites/web_childdomain_edit.php @@ -87,7 +87,7 @@ class page_action extends tform_actions { } } - $app->tpl->setVar('childdomain_type', $this->_childdomain_type); + $app->tpl->setVar('childdomain_type', $this->_childdomain_type, true); parent::onShowNew(); } @@ -118,7 +118,7 @@ class page_action extends tform_actions { } elseif($this->_childdomain_type == 'aliasdomain' && $domain['domain'] == $this->dataRecord["domain"]) { $domain_select .= " selected"; } - $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "\r\n"; + $domain_select .= ">" . $app->functions->htmlentities($app->functions->idn_decode($domain['domain'])) . "\r\n"; } } else { @@ -144,7 +144,7 @@ class page_action extends tform_actions { $this->dataRecord["domain"] = str_replace('.'.$parent_domain["domain"], '', $this->dataRecord["domain"]); } } - if($this->_childdomain_type == 'subdomain') $app->tpl->setVar("domain", $this->dataRecord["domain"]); + if($this->_childdomain_type == 'subdomain') $app->tpl->setVar("domain", $this->dataRecord["domain"], true); $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) { @@ -159,7 +159,7 @@ class page_action extends tform_actions { $proxy_directive_snippets_txt = ''; if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ foreach($proxy_directive_snippets as $proxy_directive_snippet){ - $proxy_directive_snippets_txt .= '['.$proxy_directive_snippet['name'].'] '; + $proxy_directive_snippets_txt .= '['.$app->functions->htmlentities($proxy_directive_snippet['name']).'] '; } } if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; @@ -167,7 +167,7 @@ class page_action extends tform_actions { $app->tpl->setVar('limit_ssl_letsencrypt', 'y'); } - $app->tpl->setVar('childdomain_type', $this->_childdomain_type); + $app->tpl->setVar('childdomain_type', $this->_childdomain_type, true); parent::onShowEnd(); diff --git a/interface/web/sites/web_childdomain_list.php b/interface/web/sites/web_childdomain_list.php index a4e953c07e99115de6a14da7952e14d8e42fed66..f445c4b50bf826e2c72a327488e423ad0fc69f48 100644 --- a/interface/web/sites/web_childdomain_list.php +++ b/interface/web/sites/web_childdomain_list.php @@ -56,7 +56,7 @@ $_SESSION['s']['var']['childdomain_type'] = $show_type; class list_action extends listform_actions { function onShow() { global $app; - $app->tpl->setVar('childdomain_type', $_SESSION['s']['var']['childdomain_type']); + $app->tpl->setVar('childdomain_type', $_SESSION['s']['var']['childdomain_type'], true); parent::onShow(); } diff --git a/interface/web/sites/web_sites_stats.php b/interface/web/sites/web_sites_stats.php index 488bf0363d68a9064f9287088028f2398d6c9c85..09295f1579fcb03e048791048bec7cff8077dfe5 100644 --- a/interface/web/sites/web_sites_stats.php +++ b/interface/web/sites/web_sites_stats.php @@ -43,12 +43,14 @@ class list_action extends listform_actions { $tmp_month = date('m'); $tmp_rec = $app->db->queryOneRecord("SELECT SUM(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ? AND MONTH(traffic_date) = ?", $domain, $tmp_year, $tmp_month); $rec['this_month'] = $app->functions->formatBytes($tmp_rec['t']); + $rec['this_month_sort'] = $tmp_rec['t']; $this->sum_this_month += $tmp_rec['t']; //** Traffic of the current year $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ?", $domain, $tmp_year); $rec['this_year'] = $app->functions->formatBytes($tmp_rec['t']); + $rec['this_year_sort'] = $tmp_rec['t']; $this->sum_this_year += $tmp_rec['t']; //** Traffic of the last month @@ -56,14 +58,22 @@ class list_action extends listform_actions { $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ? AND MONTH(traffic_date) = ?", $domain, $tmp_year, $tmp_month); $rec['last_month'] = $app->functions->formatBytes($tmp_rec['t']); + $rec['last_month_sort'] = $tmp_rec['t']; $this->sum_last_month += $tmp_rec['t']; //** Traffic of the last year $tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = ? AND YEAR(traffic_date) = ?", $domain, $tmp_year); $rec['last_year'] = $app->functions->formatBytes($tmp_rec['t']); + $rec['last_year_sort'] = $tmp_rec['t']; $this->sum_last_year += $tmp_rec['t']; + $rec['percentage'] = $rec['traffic_quota'] == '-1' ? -1 : round((($rec['this_month_sort']/($rec['traffic_quota']*1024*1024))*100)); + $rec['progressbar'] = $rec['percentage'] > 100 ? 100 : $rec['percentage']; + $rec['quota_sort'] = $rec['traffic_quota']; + $rec['quota'] = $rec['traffic_quota'] == '-1' ? 'unlimited' : $app->functions->formatBytes($rec['traffic_quota']*1024*1024); + //echo 'quota: ' . $rec['traffic_quota']*1024*1024 . ' - traffic: ' . $rec['this_month_sort'] . ' - percentage: ' . $rec['percentage'] . ' - progressbar: ' . $rec['progressbar'] . '
    '; + //var_dump($rec); //* The variable "id" contains always the index variable $rec['id'] = $rec[$this->idx_key]; @@ -84,92 +94,6 @@ class list_action extends listform_actions { $app->tpl->pparse(); } - function getQueryString($no_limit = false) { - global $app; - $sql_where = ''; - - //* Generate the search sql - if($app->listform->listDef['auth'] != 'no') { - if($_SESSION['s']['user']['typ'] == "admin") { - $sql_where = ''; - } else { - $sql_where = $app->tform->getAuthSQL('r', $app->listform->listDef['table']).' and'; - //$sql_where = $app->tform->getAuthSQL('r').' and'; - } - } - if($this->SQLExtWhere != '') { - $sql_where .= ' '.$this->SQLExtWhere.' and'; - } - - $sql_where = $app->listform->getSearchSQL($sql_where); - if($app->listform->listDef['join_sql']) $sql_where .= ' AND '.$app->listform->listDef['join_sql']; - $app->tpl->setVar($app->listform->searchValues); - - $order_by_sql = $this->SQLOrderBy; - - //* Generate SQL for paging - $limit_sql = $app->listform->getPagingSQL($sql_where); - $app->tpl->setVar('paging', $app->listform->pagingHTML); - - $extselect = ''; - $join = ''; - - if(!empty($_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order'])){ - $order = str_replace(' DESC', '', $_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order']); - list($tmp_table, $order) = explode('.', $order); - if($order == 'web_traffic_last_month'){ - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year' AND MONTH(wt.traffic_date) = '$tmp_month'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_last_month', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'web_traffic_this_month'){ - $tmp_year = date('Y'); - $tmp_month = date('m'); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year' AND MONTH(wt.traffic_date) = '$tmp_month'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_this_month', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'web_traffic_last_year'){ - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_last_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'web_traffic_this_year'){ - $tmp_year = date('Y'); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_this_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } - } - - if($this->SQLExtSelect != '') { - if(substr($this->SQLExtSelect, 0, 1) != ',') $this->SQLExtSelect = ','.$this->SQLExtSelect; - $extselect .= $this->SQLExtSelect; - } - - $table_selects = array(); - $table_selects[] = trim($app->listform->listDef['table']).'.*'; - $app->listform->listDef['additional_tables'] = trim($app->listform->listDef['additional_tables']); - if($app->listform->listDef['additional_tables'] != ''){ - $additional_tables = explode(',', $app->listform->listDef['additional_tables']); - foreach($additional_tables as $additional_table){ - $table_selects[] = trim($additional_table).'.*'; - } - } - $select = implode(', ', $table_selects); - - $sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql $limit_sql"; - return $sql; - } - } $list = new list_action; @@ -179,3 +103,4 @@ $list->onLoad(); ?> + diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index fd4d55656a2afa4afd6f9268a8c1c83354bd1649..5d6aed2e4388d4f4d362ec4c88e87e1f8f798b18 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -115,7 +115,7 @@ class page_action extends tform_actions { $client = $app->db->queryOneRecord("SELECT client.web_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); $web_servers = explode(',', $client['web_servers']); $server_id = $web_servers[0]; - $app->tpl->setVar("server_id_value", $server_id); + $app->tpl->setVar("server_id_value", $server_id, true); unset($web_servers); } else { $settings = $app->getconf->get_global_config('sites'); @@ -130,7 +130,7 @@ class page_action extends tform_actions { $app->tform->formDef['tabs']['domain']['fields']['php']['default'] = $web_config['php_handler']; $app->tform->formDef['tabs']['domain']['readonly'] = false; - $app->tpl->setVar('vhostdomain_type', $this->_vhostdomain_type); + $app->tpl->setVar('vhostdomain_type', $this->_vhostdomain_type, true); parent::onShowNew(); } @@ -179,7 +179,7 @@ class page_action extends tform_actions { $options_web_servers = ""; foreach ($web_servers as $web_server) { - $options_web_servers .= ''; + $options_web_servers .= ''; } $app->tpl->setVar("server_id", $options_web_servers); @@ -214,7 +214,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ip_address", $ip_select); @@ -230,7 +230,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ipv6_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ipv6_address", $ip_select); @@ -244,20 +244,20 @@ class page_action extends tform_actions { if($this->_vhostdomain_type == 'domain') { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ - $php_records = $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 = ? AND (client_id = 0 OR client_id=?)", ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $_SESSION['s']['user']['client_id']); + $php_records = $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 = ? AND (client_id = 0 OR client_id=?) AND active = 'y' ORDER BY name", ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $_SESSION['s']['user']['client_id']); } if($this->dataRecord['php'] == 'fast-cgi'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?)", ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $_SESSION['s']['user']['client_id']); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?) AND active = 'y' ORDER BY name", ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $_SESSION['s']['user']['client_id']); } } else { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ - $php_records = $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 = ? AND (client_id = 0 OR client_id=?)", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); + $php_records = $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 = ? AND (client_id = 0 OR client_id=?) AND active = 'y' ORDER BY name", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); } if($this->dataRecord['php'] == 'fast-cgi'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?)", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?) AND active = 'y' ORDER BY name", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); } } - $php_select = ""; + $php_select = ""; if(is_array($php_records) && !empty($php_records)) { foreach( $php_records as $php_record) { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ @@ -266,7 +266,7 @@ class page_action extends tform_actions { $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; } $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "\r\n"; + $php_select .= "\r\n"; } } $app->tpl->setVar("fastcgi_php_version", $php_select); @@ -290,6 +290,7 @@ class page_action extends tform_actions { } elseif($this->_vhostdomain_type == 'aliasdomain') { $client = $app->db->queryOneRecord("SELECT client.client_id, client.limit_web_aliasdomain, client.web_servers, client.default_webserver, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); } + $client = $app->functions->htmlentities($client); $client['web_servers_ids'] = explode(',', $client['web_servers']); $only_one_server = count($client['web_servers_ids']) === 1; @@ -305,7 +306,7 @@ class page_action extends tform_actions { $options_web_servers = ""; foreach ($web_servers as $web_server) { - $options_web_servers .= ''; + $options_web_servers .= ''; } $app->tpl->setVar("server_id", $options_web_servers); @@ -326,6 +327,7 @@ class page_action extends tform_actions { // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $records = $app->db->queryAllRecords($sql, $client['client_id']); + $records = $app->functions->htmlentities($records); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -359,7 +361,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ip_address", $ip_select); @@ -374,7 +376,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ipv6_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ipv6_address", $ip_select); @@ -386,23 +388,23 @@ class page_action extends tform_actions { if(!empty($web_config[$server_id]['server_type'])) $server_type = $web_config[$server_id]['server_type']; if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; $selected_client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ?", $selected_client_group_id); - $sql_where = " AND (client_id = 0 OR client_id = ?)"; + $sql_where = " AND (client_id = 0 OR client_id = ?) AND active = 'y'"; if($this->_vhostdomain_type == 'domain') { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ - $php_records = $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 = ?".$sql_where, ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $selected_client['client_id']); + $php_records = $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 = ?".$sql_where." ORDER BY name", ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $selected_client['client_id']); } if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?".$sql_where, ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $selected_client['client_id']); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?".$sql_where." ORDER BY name", ($this->id > 0 ? $this->dataRecord['server_id'] : $client['default_webserver']), $selected_client['client_id']); } } else { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ - $php_records = $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 = ? AND (client_id = 0 OR client_id=?)", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); + $php_records = $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 = ? AND (client_id = 0 OR client_id=?) AND active = 'y' ORDER BY name", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); } if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?)", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND (client_id = 0 OR client_id=?) AND active = 'y' ORDER BY name", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); } } - $php_select = ""; + $php_select = ""; if(is_array($php_records) && !empty($php_records)) { foreach( $php_records as $php_record) { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ @@ -411,7 +413,7 @@ class page_action extends tform_actions { $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; } $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "\r\n"; + $php_select .= "\r\n"; } } $app->tpl->setVar("fastcgi_php_version", $php_select); @@ -439,7 +441,7 @@ class page_action extends tform_actions { $php_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($php_directive_snippets as $php_directive_snippet){ $php_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $php_directive_snippet['snippet'] . PHP_EOL; - $php_directive_snippets_txt .= '['.$php_directive_snippet['name'].']     '; + $php_directive_snippets_txt .= '['.$app->functions->htmlentities($php_directive_snippet['name']).']     '; } } if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------'; @@ -462,7 +464,7 @@ class page_action extends tform_actions { $apache_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($apache_directive_snippets as $apache_directive_snippet){ $apache_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $apache_directive_snippet['snippet'] . PHP_EOL; - $apache_directive_snippets_txt .= '['.$apache_directive_snippet['name'].']     '; + $apache_directive_snippets_txt .= '['.$app->functions->htmlentities($apache_directive_snippet['name']).']     '; } } if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------'; @@ -476,7 +478,7 @@ class page_action extends tform_actions { $nginx_directive_snippets_txt .= $app->tform->wordbook["select_master_directive_snippet_txt"].'
    '; foreach($nginx_directive_snippets as $nginx_directive_snippet){ $nginx_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $nginx_directive_snippet['snippet'] . PHP_EOL; - $nginx_directive_snippets_txt .= '['.$nginx_directive_snippet['name'].']     '; + $nginx_directive_snippets_txt .= '['.$app->functions->htmlentities($nginx_directive_snippet['name']).']     '; } $nginx_directive_snippets_txt .= '

    '; } @@ -486,7 +488,7 @@ class page_action extends tform_actions { $nginx_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($nginx_directive_snippets as $nginx_directive_snippet){ $nginx_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $nginx_directive_snippet['snippet'] . PHP_EOL; - $nginx_directive_snippets_txt .= '['.$nginx_directive_snippet['name'].']     '; + $nginx_directive_snippets_txt .= '['.$app->functions->htmlentities($nginx_directive_snippet['name']).']     '; } } if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------'; @@ -499,7 +501,7 @@ class page_action extends tform_actions { $proxy_directive_snippets_txt .= $app->tform->wordbook["select_master_directive_snippet_txt"].'
    '; foreach($proxy_directive_snippets as $proxy_directive_snippet){ $proxy_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $proxy_directive_snippet['snippet'] . PHP_EOL; - $proxy_directive_snippets_txt .= '['.$proxy_directive_snippet['name'].']     '; + $proxy_directive_snippets_txt .= '['.$app->functions->htmlentities($proxy_directive_snippet['name']).']     '; } $proxy_directive_snippets_txt .= '

    '; } @@ -509,7 +511,7 @@ class page_action extends tform_actions { $proxy_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($proxy_directive_snippets as $proxy_directive_snippet){ $proxy_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $proxy_directive_snippet['snippet'] . PHP_EOL; - $proxy_directive_snippets_txt .= '['.$proxy_directive_snippet['name'].']     '; + $proxy_directive_snippets_txt .= '['.$app->functions->htmlentities($proxy_directive_snippet['name']).']     '; } } if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; @@ -555,7 +557,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ip_address", $ip_select); @@ -570,7 +572,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ipv6_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ipv6_address", $ip_select); @@ -585,6 +587,7 @@ class page_action extends tform_actions { // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ""; //$tmp_data_record = $app->tform->getDataRecord($this->id); if(is_array($clients)) { @@ -605,23 +608,23 @@ class page_action extends tform_actions { if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; $selected_client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ?", $selected_client_group_id); - $sql_where = " AND (client_id = 0 OR client_id = ?)"; + $sql_where = " AND (client_id = 0 OR client_id = ?) AND active = 'y'"; if($this->_vhostdomain_type == 'domain') { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ - $php_records = $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 = ?".$sql_where, $server_id, $selected_client['client_id']); + $php_records = $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 = ?".$sql_where." ORDER BY name", $server_id, $selected_client['client_id']); } if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?".$sql_where, $server_id, $selected_client['client_id']); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?".$sql_where." ORDER BY name", $server_id, $selected_client['client_id']); } } else { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ - $php_records = $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 = ?", $parent_domain['server_id']); + $php_records = $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 = ? AND active = 'y' ORDER BY name", $parent_domain['server_id']); } if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?", $parent_domain['server_id']); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND active = 'y' ORDER BY name", $parent_domain['server_id']); } } - $php_select = ""; + $php_select = ""; if(is_array($php_records) && !empty($php_records)) { foreach( $php_records as $php_record) { if($this->dataRecord['php'] == 'php-fpm' || ($this->dataRecord['php'] == 'hhvm' && $server_type == 'nginx')){ @@ -630,7 +633,7 @@ class page_action extends tform_actions { $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; } $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "\r\n"; + $php_select .= "\r\n"; } } $app->tpl->setVar("fastcgi_php_version", $php_select); @@ -645,7 +648,7 @@ class page_action extends tform_actions { $php_directive_snippets_txt .= $app->tform->wordbook["select_master_directive_snippet_txt"].'
    '; foreach($php_directive_snippets as $php_directive_snippet){ $php_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $php_directive_snippet['snippet'] . PHP_EOL; - $php_directive_snippets_txt .= '['.$php_directive_snippet['name'].']     '; + $php_directive_snippets_txt .= '['.$app->functions->htmlentities($php_directive_snippet['name']).']     '; } $php_directive_snippets_txt .= '

    '; } @@ -655,7 +658,7 @@ class page_action extends tform_actions { $php_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($php_directive_snippets as $php_directive_snippet){ $php_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $php_directive_snippet['snippet'] . PHP_EOL; - $php_directive_snippets_txt .= '['.$php_directive_snippet['name'].']     '; + $php_directive_snippets_txt .= '['.$app->functions->htmlentities($php_directive_snippet['name']).']     '; } } if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------'; @@ -668,7 +671,7 @@ class page_action extends tform_actions { $apache_directive_snippets_txt .= $app->tform->wordbook["select_master_directive_snippet_txt"].'
    '; foreach($apache_directive_snippets as $apache_directive_snippet){ $apache_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $apache_directive_snippet['snippet'] . PHP_EOL; - $apache_directive_snippets_txt .= '['.$apache_directive_snippet['name'].']     '; + $apache_directive_snippets_txt .= '['.$app->functions->htmlentities($apache_directive_snippet['name']).']     '; } $apache_directive_snippets_txt .= '

    '; } @@ -678,7 +681,7 @@ class page_action extends tform_actions { $apache_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($apache_directive_snippets as $apache_directive_snippet){ $apache_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $apache_directive_snippet['snippet'] . PHP_EOL; - $apache_directive_snippets_txt .= '['.$apache_directive_snippet['name'].']     '; + $apache_directive_snippets_txt .= '['.$app->functions->htmlentities($apache_directive_snippet['name']).']     '; } } if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------'; @@ -692,7 +695,7 @@ class page_action extends tform_actions { $nginx_directive_snippets_txt .= $app->tform->wordbook["select_master_directive_snippet_txt"].'
    '; foreach($nginx_directive_snippets as $nginx_directive_snippet){ $nginx_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $nginx_directive_snippet['snippet'] . PHP_EOL; - $nginx_directive_snippets_txt .= '['.$nginx_directive_snippet['name'].']     '; + $nginx_directive_snippets_txt .= '['.$app->functions->htmlentities($nginx_directive_snippet['name']).']     '; } $nginx_directive_snippets_txt .= '

    '; } @@ -702,7 +705,7 @@ class page_action extends tform_actions { $nginx_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($nginx_directive_snippets as $nginx_directive_snippet){ $nginx_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $nginx_directive_snippet['snippet'] . PHP_EOL; - $nginx_directive_snippets_txt .= '['.$nginx_directive_snippet['name'].']     '; + $nginx_directive_snippets_txt .= '['.$app->functions->htmlentities($nginx_directive_snippet['name']).']     '; } } if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------'; @@ -715,7 +718,7 @@ class page_action extends tform_actions { $proxy_directive_snippets_txt .= $app->tform->wordbook["select_master_directive_snippet_txt"].'
    '; foreach($proxy_directive_snippets as $proxy_directive_snippet){ $proxy_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $proxy_directive_snippet['snippet'] . PHP_EOL; - $proxy_directive_snippets_txt .= '['.$proxy_directive_snippet['name'].']     '; + $proxy_directive_snippets_txt .= '['.$app->functions->htmlentities($proxy_directive_snippet['name']).']     '; } $proxy_directive_snippets_txt .= '

    '; } @@ -725,7 +728,7 @@ class page_action extends tform_actions { $proxy_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'
    '; foreach($proxy_directive_snippets as $proxy_directive_snippet){ $proxy_directive_snippet['snippet'] = PHP_EOL . PHP_EOL . $proxy_directive_snippet['snippet'] . PHP_EOL; - $proxy_directive_snippets_txt .= '['.$proxy_directive_snippet['name'].']     '; + $proxy_directive_snippets_txt .= '['.$app->functions->htmlentities($proxy_directive_snippet['name']).']     '; } } if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; @@ -745,7 +748,7 @@ class page_action extends tform_actions { if(is_array($ssl_domains)) { foreach( $ssl_domains as $ssl_domain) { $selected = ($ssl_domain == $this->dataRecord['ssl_domain'])?'SELECTED':''; - $ssl_domain_select .= "\r\n"; + $ssl_domain_select .= "\r\n"; } } $app->tpl->setVar("ssl_domain", $ssl_domain_select); @@ -758,8 +761,8 @@ class page_action extends tform_actions { $app->tpl->setVar("edit_disabled", 1); $app->tpl->setVar('fixed_folder', 'y'); if($this->_vhostdomain_type == 'domain') { - $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]); - $app->tpl->setVar("document_root", $this->dataRecord["document_root"]); + $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true); + $app->tpl->setVar("document_root", $this->dataRecord["document_root"], true); } else $app->tpl->setVar('server_id_value', $parent_domain['server_id']); } else { @@ -795,7 +798,7 @@ class page_action extends tform_actions { } elseif($this->_vhostdomain_type == 'domain' && $domain['domain'] == $this->dataRecord["domain"]) { $domain_select .= " selected"; } - $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "\r\n"; + $domain_select .= ">" . $app->functions->htmlentities($app->functions->idn_decode($domain['domain'])) . "\r\n"; } } else { @@ -817,22 +820,23 @@ class page_action extends tform_actions { if($this->dataRecord["type"] == 'vhostsubdomain') $this->dataRecord["domain"] = str_replace('.'.$parent_domain["domain"], '', $this->dataRecord["domain"]); } - if($this->_vhostdomain_type != 'domain') $app->tpl->setVar("domain", $this->dataRecord["domain"]); + if($this->_vhostdomain_type != 'domain') $app->tpl->setVar("domain", $this->dataRecord["domain"], true); // check for configuration errors in sys_datalog if($this->id > 0) { $datalog = $app->db->queryOneRecord("SELECT sys_datalog.error, sys_log.tstamp FROM sys_datalog, sys_log WHERE sys_datalog.dbtable = 'web_domain' AND sys_datalog.dbidx = ? AND sys_datalog.datalog_id = sys_log.datalog_id AND sys_log.message = CONCAT('Processed datalog_id ',sys_log.datalog_id) ORDER BY sys_datalog.tstamp DESC", 'domain_id:' . $this->id); if(is_array($datalog) && !empty($datalog)){ if(trim($datalog['error']) != ''){ - $app->tpl->setVar("config_error_msg", nl2br(htmlentities($datalog['error']))); + $app->tpl->setVar("config_error_msg", nl2br($app->functions->htmlentities($datalog['error']))); $app->tpl->setVar("config_error_tstamp", date($app->lng('conf_format_datetime'), $datalog['tstamp'])); } } } - $app->tpl->setVar('vhostdomain_type', $this->_vhostdomain_type); + $app->tpl->setVar('vhostdomain_type', $this->_vhostdomain_type, true); $app->tpl->setVar('is_spdy_enabled', ($web_config['enable_spdy'] === 'y')); + $app->tpl->setVar('is_pagespeed_enabled', ($web_config['nginx_enable_pagespeed'] === 'y')); $app->tpl->setVar("is_admin", $is_admin); if($this->id > 0) { @@ -856,7 +860,7 @@ class page_action extends tform_actions { if(is_array($m_directive_snippets) && !empty($m_directive_snippets)){ $directive_snippets_id_select .= ''; foreach($m_directive_snippets as $m_directive_snippet){ - $directive_snippets_id_select .= ''; + $directive_snippets_id_select .= ''; } $directive_snippets_id_select .= ''; } @@ -865,7 +869,7 @@ class page_action extends tform_actions { if(is_array($directive_snippets) && !empty($directive_snippets)){ $directive_snippets_id_select .= ''; foreach($directive_snippets as $directive_snippet){ - $directive_snippets_id_select .= ''; + $directive_snippets_id_select .= ''; } $directive_snippets_id_select .= ''; } @@ -948,7 +952,6 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; - // Set a few fixed values $this->dataRecord["vhost_type"] = 'name'; if($this->_vhostdomain_type == 'domain') { @@ -1305,7 +1308,7 @@ class page_action extends tform_actions { if($web_config['enable_spdy'] === 'n') { unset($app->tform->formDef["tabs"]['ssl']['fields']['enable_spdy']); } - if($this->dataRecord["directive_snippets_id"] < 1) $this->dataRecord["enable_pagespeed"] = 'n'; + // if($this->dataRecord["directive_snippets_id"] < 1) $this->dataRecord["enable_pagespeed"] = 'n'; //print_r($_POST['folder_directive_snippets']); //print_r($_POST['folder_directive_snippets_id']); @@ -1335,7 +1338,7 @@ class page_action extends tform_actions { if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') { // Check php-fpm mode if($this->dataRecord['php'] == 'php-fpm'){ - $tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'"); + $tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE active = 'y' AND CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'"); if(is_array($tmp)) { $this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fpm_init_script'].':'.$tmp['php_fpm_ini_dir'].':'.$tmp['php_fpm_pool_dir']; } else { @@ -1344,7 +1347,7 @@ class page_action extends tform_actions { unset($tmp); // Check fast-cgi mode } elseif($this->dataRecord['php'] == 'fast-cgi') { - $tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'"); + $tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE active = 'y' AND CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'"); if(is_array($tmp)) { $this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fastcgi_binary'].':'.$tmp['php_fastcgi_ini_dir']; } else { @@ -1395,6 +1398,14 @@ class page_action extends tform_actions { $app->uses("getconf"); $web_rec = $app->tform->getDataRecord($this->id); $web_config = $app->getconf->get_server_config($app->functions->intval($web_rec["server_id"]), 'web'); + + // get global log retention value as default for web log retention + $server_config = $app->getconf->get_server_config($app->functions->intval($web_rec["server_id"]), 'server'); + if($server_config['log_retention'] > 0) { + $log_retention = $server_config['log_retention']; + } else { + $log_retention = 10; + } if($this->_vhostdomain_type == 'domain') { $document_root = str_replace("[website_id]", $this->id, $web_config["website_path"]); @@ -1428,8 +1439,8 @@ class page_action extends tform_actions { $htaccess_allow_override = $web_config["htaccess_allow_override"]; $added_by = $_SESSION['s']['user']['username']; - $sql = "UPDATE web_domain SET system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ? WHERE domain_id = ?"; - $app->db->query($sql, $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $this->id); + $sql = "UPDATE web_domain SET system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ? WHERE domain_id = ?"; + $app->db->query($sql, $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $this->id); } else { // Set the values for document_root, system_user and system_group $system_user = $this->parent_domain_record['system_user']; @@ -1442,8 +1453,8 @@ class page_action extends tform_actions { $htaccess_allow_override = $this->parent_domain_record['allow_override']; $added_by = $_SESSION['s']['user']['username']; - $sql = "UPDATE web_domain SET sys_groupid = ?, system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ? WHERE domain_id = ?"; - $app->db->query($sql, $this->parent_domain_record['sys_groupid'], $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $this->id); + $sql = "UPDATE web_domain SET sys_groupid = ?, system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ? WHERE domain_id = ?"; + $app->db->query($sql, $this->parent_domain_record['sys_groupid'], $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $this->id); } if(isset($this->dataRecord['folder_directive_snippets'])) $app->db->query("UPDATE web_domain SET folder_directive_snippets = ? WHERE domain_id = ?", $this->dataRecord['folder_directive_snippets'], $this->id); diff --git a/interface/web/sites/web_vhost_domain_list.php b/interface/web/sites/web_vhost_domain_list.php index 378eeaaf6a2bfa3acaf44e4325ba428162082a86..b74fd644f70bd42fadb6fcec7b38389e9c83d777 100644 --- a/interface/web/sites/web_vhost_domain_list.php +++ b/interface/web/sites/web_vhost_domain_list.php @@ -68,7 +68,7 @@ $_SESSION['s']['var']['vhostdomain_type'] = $show_type; class list_action extends listform_actions { function onShow() { global $app; - $app->tpl->setVar('vhostdomain_type', $_SESSION['s']['var']['vhostdomain_type']); + $app->tpl->setVar('vhostdomain_type', $_SESSION['s']['var']['vhostdomain_type'], true); parent::onShow(); } diff --git a/interface/web/sites/webdav_user_edit.php b/interface/web/sites/webdav_user_edit.php index 73e47eb7a98d5ef6e847614384eb9df1d11aea38..e02e0bdaff10e56bb3ac4a41d615a4b53b6ce79b 100644 --- a/interface/web/sites/webdav_user_edit.php +++ b/interface/web/sites/webdav_user_edit.php @@ -78,19 +78,19 @@ class page_action extends tform_actions { if ($this->dataRecord['username'] != "") { /* REMOVE the restriction */ - $app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $webdavuser_prefix)); + $app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $webdavuser_prefix), true); } if($this->dataRecord['username'] == "") { - $app->tpl->setVar("username_prefix", $webdavuser_prefix); + $app->tpl->setVar("username_prefix", $webdavuser_prefix, true); } else { - $app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $webdavuser_prefix, $global_config['webdavuser_prefix'])); + $app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $webdavuser_prefix, $global_config['webdavuser_prefix']), true); } if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("parent_domain_id_value", $this->dataRecord["parent_domain_id"]); + $app->tpl->setVar("parent_domain_id_value", $this->dataRecord["parent_domain_id"], true); } else { $app->tpl->setVar("edit_disabled", 0); } diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index d3339ba26a66e8cfb36ad80a2ebc02367f940b89..5d9d91be1a0f71ccbbd542821d85574025eb7369 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -101,13 +101,15 @@ var ISPConfig = { placeholder: '', selectOnBlur: true, allowClear: true, - formatResult: function(o) { - if(o.id && $(o.element).parent().hasClass('flags')) return '' + o.text + ''; - else return o.text; + formatResult: function(o, cont, qry, escapeMarkup) { + if(o.id && $(o.element).parent().hasClass('flags')) return '' + escapeMarkup(o.text) + ''; + else if(o.id && $(o.element).parent().hasClass('active-switch')) return '' + escapeMarkup(o.text) + ''; + else return escapeMarkup(o.text); }, - formatSelection: function(o) { - if(o.id && $(o.element).parent().hasClass('flags')) return '' + o.text + ''; - else return o.text; + formatSelection: function(o, cont, escapeMarkup) { + if(o.id && $(o.element).parent().hasClass('flags')) return '' + escapeMarkup(o.text) + ''; + else if(o.id && $(o.element).parent().hasClass('active-switch')) return '' + escapeMarkup(o.text) + ''; + else return escapeMarkup(o.text); } }).on('change', function(e) { if ($("#pageForm .table #Filter").length > 0) { diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css index aeb6f9ecd0e72c30a98f7773223d714c17d0e241..049322f29c9ac346bda1246f79e1399ea53d3e4d 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css @@ -25,6 +25,9 @@ body { .form-group input[type='checkbox'] { margin-top: 10px; } +.form-group .checkbox-inline input[type='checkbox'] { + margin-top: 4px; } + .control-label { font-weight: normal; } .control-label:after { @@ -165,6 +168,9 @@ body { #sidebar header a { padding: 0; } +#select_server a { + padding:0 10px; } + .page-header { margin: 20px 0; padding: 0; } @@ -263,8 +269,16 @@ body { .progress { display: inline-block; margin-bottom: 0; - width: 150px; - height: 10px; } + width: 100%; + height: 20px; + background-color: #ababab; + font-weight: bold; +} + +.progress-bar-danger, .progress-bar-warning, .progress-bar-success { + text-align: center; + color: white; +} p.fieldset-legend { display: none; } @@ -776,3 +790,22 @@ span.notification_text { font-family: inherit; color: white; } + +span.company_name { + font-weight: bold; +} + +span.tmp_account_name { + font-size: 0.9em; +} + +#select_server .select2-choice { + height: auto; +} +span.pbvaluemargin { + margin-left: 5px; +} + +.ip_suggestion_server { + font-weight: bold; +} diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.sass b/interface/web/themes/default/assets/stylesheets/ispconfig.sass index 9855d07dc1ccbdded77d195b1796753506d919fd..3ea081053405df2cbbe81b98661e1f3e9d9cc055 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.sass +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.sass @@ -25,6 +25,9 @@ body .form-group input[type='checkbox'] margin-top: 10px +.form-group .checkbox-inline input[type='checkbox'] + margin-top: 4px + .control-label font-weight: normal @@ -311,4 +314,4 @@ thead.dark .input-group-field:last-child border-top-left-radius: 0 - border-bottom-left-radius: 0 \ No newline at end of file + border-bottom-left-radius: 0 diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index b19f708e5daf1b9a398d16e26814a5d5770ae4e0..50262cb19e36a349f77ccb461bf47f96604d8492 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -3,7 +3,7 @@ - <tmpl_var name="company_name"><tmpl_var name="app_title"> <tmpl_var name="app_version"> + <tmpl_var name="company_name"><tmpl_var name="app_title"> @@ -79,7 +79,7 @@ @@ -147,4 +147,4 @@ - \ No newline at end of file + diff --git a/interface/web/tools/dns_import_tupa.php b/interface/web/tools/dns_import_tupa.php index 849a097680f74a6f7bd68584340f3fc4c76fa1f0..d1b4e1af3b05e86624e9b9d500f7c6664d996488 100644 --- a/interface/web/tools/dns_import_tupa.php +++ b/interface/web/tools/dns_import_tupa.php @@ -49,32 +49,27 @@ if(isset($_POST['start']) && $_POST['start'] == 1) { //* CSRF Check $app->auth->csrf_token_check(); - //* Set variable sin template - $app->tpl->setVar('dbhost', $_POST['dbhost']); - $app->tpl->setVar('dbname', $_POST['dbname']); - $app->tpl->setVar('dbuser', $_POST['dbuser']); - $app->tpl->setVar('dbpassword', $_POST['dbpassword']); + //* Set variables in template + $app->tpl->setVar('dbhost', $_POST['dbhost'], true); + $app->tpl->setVar('dbname', $_POST['dbname'], true); + $app->tpl->setVar('dbuser', $_POST['dbuser'], true); + $app->tpl->setVar('dbpassword', $_POST['dbpassword'], true); + $app->tpl->setVar('dbssl', 'true', true); //* Establish connection to external database $msg .= 'Connecting to external database...
    '; - //* Backup DB login details - /*$conf_bak['db_host'] = $conf['db_host']; - $conf_bak['db_database'] = $conf['db_database']; - $conf_bak['db_user'] = $conf['db_user']; - $conf_bak['db_password'] = $conf['db_password'];*/ + //* Set external db client flags + $db_client_flags = 0; + if(isset($_POST['dbssl']) && $_POST['dbssl'] == 1) $db_client_flags |= MYSQLI_CLIENT_SSL; - //* Set external Login details - $conf['imp_db_host'] = $_POST['dbhost']; - $conf['imp_db_database'] = $_POST['dbname']; - $conf['imp_db_user'] = $_POST['dbuser']; - $conf['imp_db_password'] = $_POST['dbpassword']; - $conf['imp_db_charset'] = $conf['db_charset']; - $conf['imp_db_new_link'] = $conf['db_new_link']; - $conf['imp_db_client_flags'] = $conf['db_client_flags']; - - //* create new db object - $exdb = new db('imp'); + //* create new db object with external login details + try { + $exdb = new db($_POST['dbhost'], $_POST['dbuser'], $_POST['dbpassword'], $_POST['dbname'], 3306, $db_client_flags); + } catch (Exception $e) { + $error .= "Error connecting to Tupa database" . ($e->getMessage() ? ": " . $e->getMessage() : '.') . "
    \n"; + $exdb = false; + } $server_id = 1; $sys_userid = 1; @@ -159,26 +154,13 @@ if(isset($_POST['start']) && $_POST['start'] == 1) { ); $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id'); //$msg .= $insert_data.'
    '; - } } } - } } - - - - } else { - $error .= $exdb->errorMessage; } - //* restore db login details - /*$conf['db_host'] = $conf_bak['db_host']; - $conf['db_database'] = $conf_bak['db_database']; - $conf['db_user'] = $conf_bak['db_user']; - $conf['db_password'] = $conf_bak['db_password'];*/ - } $app->tpl->setVar('msg', $msg); diff --git a/interface/web/tools/import_ispconfig.php b/interface/web/tools/import_ispconfig.php index 728c279c01933b152905734cd122e7b197e88a46..e2b8bad6479d43aeced846ebf2669da516276054 100644 --- a/interface/web/tools/import_ispconfig.php +++ b/interface/web/tools/import_ispconfig.php @@ -44,7 +44,7 @@ $msg = ''; $error = ''; //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_import_ispconfig.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_import_ispconfig.lng'; include $lng_file; $app->tpl->setVar($wb); @@ -109,16 +109,17 @@ if(isset($_POST['connected'])) { try { - //* Second connections to self signed SSL certs + //* Allow connections to self signed SSL certs $context = stream_context_create( array( - 'ssl' => array ( - 'verify_peer' => false, - 'verify_peer_name' => false, - 'allow_self_signed' => true - ) + 'ssl' => array ( + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true ) + ) ); + $client = new SoapClient(null, array('location' => $_POST['remote_server'], 'uri' => $_POST['remote_server'].'/index.php', 'trace' => 1, @@ -153,9 +154,9 @@ if(isset($_POST['connected'])) { } -$app->tpl->setVar('remote_server', $_POST['remote_server']); -$app->tpl->setVar('remote_user', $_POST['remote_user']); -$app->tpl->setVar('remote_password', $_POST['remote_password']); +$app->tpl->setVar('remote_server', $_POST['remote_server'], true); +$app->tpl->setVar('remote_user', $_POST['remote_user'], true); +$app->tpl->setVar('remote_password', $_POST['remote_password'], true); $app->tpl->setVar('connected', $connected); $app->tpl->setVar('remote_session_id', $remote_session_id); $app->tpl->setVar('msg', $msg); diff --git a/interface/web/tools/import_vpopmail.php b/interface/web/tools/import_vpopmail.php index 9e560cdf30455be6c9e3459aec98334cfa3a7a54..3e732d3740923cb32457409f9d5260b086ac08a4 100644 --- a/interface/web/tools/import_vpopmail.php +++ b/interface/web/tools/import_vpopmail.php @@ -46,23 +46,23 @@ $msg = ''; $error = ''; //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_import_vpopmail.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_import_vpopmail.lng'; include $lng_file; $app->tpl->setVar($wb); if(isset($_POST['db_hostname']) && $_POST['db_hostname'] != '') { - //* Set external Login details - $conf['imp_db_host'] = $_POST['db_hostname']; - $conf['imp_db_database'] = $_POST['db_name']; - $conf['imp_db_user'] = $_POST['db_user']; - $conf['imp_db_password'] = $_POST['db_password']; - $conf['imp_db_charset'] = 'utf8'; - $conf['imp_db_new_link'] = false; - $conf['imp_db_client_flags'] = 0; + //* Set external db client flags + $db_client_flags = 0; + if(isset($_POST['db_ssl']) && $_POST['db_ssl'] == 1) $db_client_flags |= MYSQLI_CLIENT_SSL; - //* create new db object - $exdb = new db('imp'); + //* create new db object with external login details + try { + $exdb = new db($_POST['db_hostname'], $_POST['db_user'], $_POST['db_password'], $_POST['db_name'], 3306, $db_client_flags); + } catch (Exception $e) { + $error .= "Error connecting to database" . ($e->getMessage() ? ": " . $e->getMessage() : '.') . "
    \n"; + $exdb = false; + } if($exdb !== false) { $msg .= 'Databse connection succeeded
    '; @@ -75,20 +75,18 @@ if(isset($_POST['db_hostname']) && $_POST['db_hostname'] != '') { } else { $msg .= 'The server with the ID $local_server_id is not a mail server.
    '; } - - } else { - $msg .= 'Database connection failed
    '; } } else { $_POST['local_server_id'] = 1; } -$app->tpl->setVar('db_hostname', $_POST['db_hostname']); -$app->tpl->setVar('db_user', $_POST['db_user']); -$app->tpl->setVar('db_password', $_POST['db_password']); -$app->tpl->setVar('db_name', $_POST['db_name']); -$app->tpl->setVar('local_server_id', $_POST['local_server_id']); +$app->tpl->setVar('db_hostname', $_POST['db_hostname'], true); +$app->tpl->setVar('db_user', $_POST['db_user'], true); +$app->tpl->setVar('db_password', $_POST['db_password'], true); +$app->tpl->setVar('db_name', $_POST['db_name'], true); +$app->tpl->setVar('db_ssl', 'true', true); +$app->tpl->setVar('local_server_id', $_POST['local_server_id'], true); $app->tpl->setVar('msg', $msg); $app->tpl->setVar('error', $error); diff --git a/interface/web/tools/index.php b/interface/web/tools/index.php index 05c7f71fbafee1d68e017102693f9738b59b8824..0e223b98a457789172c947c8d545eaa38edd460c 100644 --- a/interface/web/tools/index.php +++ b/interface/web/tools/index.php @@ -41,7 +41,7 @@ $app->uses('tpl'); $app->tpl->newTemplate('listpage.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/index.htm'); -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_index.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_index.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/tools/lib/lang/ar_resync.lng b/interface/web/tools/lib/lang/ar_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/ar_resync.lng +++ b/interface/web/tools/lib/lang/ar_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/bg_resync.lng b/interface/web/tools/lib/lang/bg_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/bg_resync.lng +++ b/interface/web/tools/lib/lang/bg_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/br_resync.lng b/interface/web/tools/lib/lang/br_resync.lng index a23f33456b6e96e5a9a6c5252c651adae053fd5b..bf854b33b31405b59fb49f3d94c6f9a33a0b9143 100644 --- a/interface/web/tools/lib/lang/br_resync.lng +++ b/interface/web/tools/lib/lang/br_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Políticas anti-spam sincronizadas'; $wb['do_mail_spamfilter_txt'] = 'Filtros anti-spam sincronizados'; $wb['do_mailget_txt'] = 'Contas de busca de e-mail sincronizadas'; $wb['resync_mailget_txt'] = 'Contas de busca de e-mails'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/ca_resync.lng b/interface/web/tools/lib/lang/ca_resync.lng index b1f9cc2a649fe0b4a30c8b9bbc607c6c7b6fdbfb..2e7ff4f5524e12ab602703f07b5b26b7f981d888 100644 --- a/interface/web/tools/lib/lang/ca_resync.lng +++ b/interface/web/tools/lib/lang/ca_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/cz.lng b/interface/web/tools/lib/lang/cz.lng index 66bcaf49ae1aca04f3c85100ce9bf0a87f1c74c9..9e790f35e8b2899a25161244ad94b0bac5ef7268 100644 --- a/interface/web/tools/lib/lang/cz.lng +++ b/interface/web/tools/lib/lang/cz.lng @@ -2,12 +2,12 @@ $wb['User Settings'] = 'Uživatelská nastavení'; $wb['Settings'] = 'Nastavení'; $wb['ISPConfig Tools'] = 'ISPConfig nástroje'; +$wb['Interface'] = 'Rozhraní'; $wb['Password and Language'] = 'Heslo a jazyk'; $wb['ispconfig_tools_note'] = 'Tento modul umožňuje změnit heslo a jazyk pro zahájení resynchronizace DNS záznamů.'; -$wb['Resync'] = 'Resynchronizace'; $wb['Sync Tools'] = 'Synchronizační nástroje'; +$wb['Resync'] = 'Resynchronizace'; $wb['Import'] = 'Importovat'; $wb['ISPConfig 3 mail'] = 'ISPConfig 3 vzdalený e-mail server'; $wb['PDNS Tupa'] = 'PowerDNS Tupa'; -$wb['Interface'] = 'Rozhraní'; ?> diff --git a/interface/web/tools/lib/lang/cz_resync.lng b/interface/web/tools/lib/lang/cz_resync.lng index 80cd0e87cf4a6dfc57b1b3b3102037c23d5d67aa..b881c7d01a40dbc59c1795f20fa7e5123c704232 100644 --- a/interface/web/tools/lib/lang/cz_resync.lng +++ b/interface/web/tools/lib/lang/cz_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Proběhla resynchronizace externího získávání e-mailů'; $wb['resync_mailget_txt'] = 'Externí získávání e-mailů'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/de_resync.lng b/interface/web/tools/lib/lang/de_resync.lng index 20f4568519832199023c1511f6034ca8a8a67170..5a9a60e15fb91c684e1b228b339fe151a03abf16 100644 --- a/interface/web/tools/lib/lang/de_resync.lng +++ b/interface/web/tools/lib/lang/de_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'E-Mail Sammeldienst'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/dk_resync.lng b/interface/web/tools/lib/lang/dk_resync.lng index 291bbc120ae5be5df30463b24a60a8711e224c51..0a02ebe63b669289b1f5a7c19ca9770c2311c1ba 100644 --- a/interface/web/tools/lib/lang/dk_resync.lng +++ b/interface/web/tools/lib/lang/dk_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/el_resync.lng b/interface/web/tools/lib/lang/el_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/el_resync.lng +++ b/interface/web/tools/lib/lang/el_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/en_resync.lng b/interface/web/tools/lib/lang/en_resync.lng index 59767a134ab9fa16ea2a2807689a328705bc3d6f..09f51c28435cbe8d15ddd0ef3545da14504ea5e9 100644 --- a/interface/web/tools/lib/lang/en_resync.lng +++ b/interface/web/tools/lib/lang/en_resync.lng @@ -46,4 +46,8 @@ $wb["do_mail_spamfilter_policy_txt"] = "Resynced Spamfilter Policies"; $wb["do_mail_spamfilter_txt"] = "Resynced Spamfilter"; $wb["do_mailget_txt"] = "Resynced Fetchmail"; $wb["resync_mailget_txt"] = "Fetchmail"; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/es_resync.lng b/interface/web/tools/lib/lang/es_resync.lng index 3f871c20bb2090eed5bfb256655c75d9f6abb8f6..ae4d870b93f856dde9835daf206ae30899ee517a 100644 --- a/interface/web/tools/lib/lang/es_resync.lng +++ b/interface/web/tools/lib/lang/es_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/fi_resync.lng b/interface/web/tools/lib/lang/fi_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/fi_resync.lng +++ b/interface/web/tools/lib/lang/fi_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/fr_resync.lng b/interface/web/tools/lib/lang/fr_resync.lng index dad0b41c65e31d2196587fbc12eb2fdb10147725..2e90b4e1d081fc74d1f79188d25223814fbfa8ca 100644 --- a/interface/web/tools/lib/lang/fr_resync.lng +++ b/interface/web/tools/lib/lang/fr_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/hr_resync.lng b/interface/web/tools/lib/lang/hr_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/hr_resync.lng +++ b/interface/web/tools/lib/lang/hr_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/hu_resync.lng b/interface/web/tools/lib/lang/hu_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/hu_resync.lng +++ b/interface/web/tools/lib/lang/hu_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/id_resync.lng b/interface/web/tools/lib/lang/id_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/id_resync.lng +++ b/interface/web/tools/lib/lang/id_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/it_resync.lng b/interface/web/tools/lib/lang/it_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/it_resync.lng +++ b/interface/web/tools/lib/lang/it_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/ja_resync.lng b/interface/web/tools/lib/lang/ja_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/ja_resync.lng +++ b/interface/web/tools/lib/lang/ja_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/nl_index.lng b/interface/web/tools/lib/lang/nl_index.lng index a3ef38f21934a9d02669da2c2722feefc3f64325..6c82e4db99e3bafca20bb24ee7b233c52e927a52 100644 --- a/interface/web/tools/lib/lang/nl_index.lng +++ b/interface/web/tools/lib/lang/nl_index.lng @@ -1,4 +1,4 @@ diff --git a/interface/web/tools/lib/lang/nl_resync.lng b/interface/web/tools/lib/lang/nl_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/nl_resync.lng +++ b/interface/web/tools/lib/lang/nl_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/pl_resync.lng b/interface/web/tools/lib/lang/pl_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/pl_resync.lng +++ b/interface/web/tools/lib/lang/pl_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/pt_resync.lng b/interface/web/tools/lib/lang/pt_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/pt_resync.lng +++ b/interface/web/tools/lib/lang/pt_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/ro_resync.lng b/interface/web/tools/lib/lang/ro_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/ro_resync.lng +++ b/interface/web/tools/lib/lang/ro_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/ru_resync.lng b/interface/web/tools/lib/lang/ru_resync.lng index ec8b81f695052187e97b4c207601bbb0cfd8ec62..c78f2d75d8c9b97000db0cb5d9f96f0c538a0e04 100644 --- a/interface/web/tools/lib/lang/ru_resync.lng +++ b/interface/web/tools/lib/lang/ru_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Ресинхронизация прав $wb['do_mail_spamfilter_txt'] = 'Ресинхронизация спам-фильтров'; $wb['do_mailget_txt'] = 'Ресинхронизация сборщиков почты'; $wb['resync_mailget_txt'] = 'Сборщики почты'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/se_resync.lng b/interface/web/tools/lib/lang/se_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/se_resync.lng +++ b/interface/web/tools/lib/lang/se_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/sk_resync.lng b/interface/web/tools/lib/lang/sk_resync.lng index cfb7dc1a395bfeabd39bbe0e251014c87944da8d..42831b890be9d9590be70588fdce332c39ba7ddb 100644 --- a/interface/web/tools/lib/lang/sk_resync.lng +++ b/interface/web/tools/lib/lang/sk_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/lib/lang/tr_resync.lng b/interface/web/tools/lib/lang/tr_resync.lng index ea7b2c0f3459ddf991349959d5ba4c6ba49616ef..71ebb0dda2b463c28ebce0184f86206b0f0af470 100644 --- a/interface/web/tools/lib/lang/tr_resync.lng +++ b/interface/web/tools/lib/lang/tr_resync.lng @@ -46,4 +46,8 @@ $wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; $wb['do_mailget_txt'] = 'Resynced Fetchmail'; $wb['resync_mailget_txt'] = 'Fetchmail'; +$wb['resync_mailtransport_txt'] = 'E-Mail Transport'; +$wb['resync_mailrelay_txt'] = 'E-Mail Relay'; +$wb['do_mailtransport_txt'] = 'Resynced Mailtransport'; +$wb['do_mailrelay_txt'] = 'Resynced Mailrelay'; ?> diff --git a/interface/web/tools/resync.php b/interface/web/tools/resync.php index d953def54ca4b5a6910d3783df6f7802e35249c1..e5958c064e388827fda93cee6617d28911b02e1e 100644 --- a/interface/web/tools/resync.php +++ b/interface/web/tools/resync.php @@ -74,8 +74,8 @@ class page_action extends tform_actions { //* check the database for existing records $server_data = $this->server_has_data($server_type, $server['server_id']); foreach ($search as $needle) -// if (in_array($needle, $server_data) && strpos($options_servers, $server['server_name']) === false) { - if (in_array($needle, $server_data)) { + if (in_array($needle, $server_data) && strpos($options_servers, $server['server_name']) === false) { +// if (in_array($needle, $server_data)) { $options_servers .= ""; $server_count++; } @@ -113,6 +113,16 @@ class page_action extends tform_actions { 'server_type' => 'mail', 'server_id' => $server_id, ), + 'mail_transport' => array ( + 'index_field' => 'transport_id', + 'server_type' => 'mail', + 'server_id' => $server_id, + ), + 'mail_relay' => array ( + 'index_field' => 'relay_recipient_id', + 'server_type' => 'mail', + 'server_id' => $server_id, + ), ); } if($type == 'mail_filter') { @@ -292,6 +302,27 @@ class page_action extends tform_actions { unset($options_servers); } + //* mailtransport + $server_list = $this->create_list($mail_server_rec, 'mail', 'mail_transport'); + $options_servers = $server_list[0];$server_count = $server_list[1]; + unset($server_list); + if (isset($options_servers)) { //* server with data found + if ($server_count > 1) $options_servers = "" . $options_servers; + $app->tpl->setVar('mailtransport_server_id', $options_servers); + $app->tpl->setVar('mailtransport_found', 1); + unset($options_servers); + } + + //* mailrelay + $server_list = $this->create_list($mail_server_rec, 'mail', 'mail_relay'); + $options_servers = $server_list[0];$server_count = $server_list[1]; + unset($server_list); + if (isset($options_servers)) { //* server with data found + if ($server_count > 1) $options_servers = "" . $options_servers; + $app->tpl->setVar('mailrelay_server_id', $options_servers); + $app->tpl->setVar('mailrelay_found', 1); + unset($options_servers); + } } //* fetch web-server @@ -481,6 +512,8 @@ class page_action extends tform_actions { $this->dataRecord['resync_mailbox'] = 1; $this->dataRecord['resync_mailfilter'] = 1; $this->dataRecord['resync_mailinglist'] = 1; + $this->dataRecord['resync_mailtransport'] = 1; + $this->dataRecord['resync_mailrelay'] = 1; $this->dataRecord['resync_vserver'] = 1; $this->dataRecord['resync_dns'] = 1; $this->dataRecord['resync_client'] = 1; @@ -492,7 +525,7 @@ class page_action extends tform_actions { $this->dataRecord['db_server_id'] = $this->dataRecord['all_server_id']; $this->dataRecord['mail_server_id'] = $this->dataRecord['all_server_id']; $this->dataRecord['mailbox_server_id'] = $this->dataRecord['all_server_id']; - $this->dataRecord['verserver_server_id'] = $this->dataRecord['all_server_id']; + $this->dataRecord['vserver_server_id'] = $this->dataRecord['all_server_id']; $this->dataRecord['dns_server_id'] = $this->dataRecord['all_server_id']; } @@ -553,9 +586,17 @@ class page_action extends tform_actions { if($this->dataRecord['resync_mailinglist'] == 1) $msg .= $this->do_resync('mail_mailinglist', 'mailinglist_id', 'mail', $this->dataRecord['mail_server_id'], 'listname', $app->tform->wordbook['do_mailinglist_txt'], false); + //* mailtransport + if($this->dataRecord['resync_mailtransport'] == 1) + $msg .= $this->do_resync('mail_transport', 'transport_id', 'mail', $this->dataRecord['mail_server_id'], 'domain', $app->tform->wordbook['do_mailtransport_txt'], false); + + //* mailrelay + if($this->dataRecord['resync_mailrelay'] == 1) + $msg .= $this->do_resync('mail_relay_recipient', 'relay_recipient_id', 'mail', $this->dataRecord['mail_server_id'], 'source', $app->tform->wordbook['do_mailrelay_txt'], false); + //* vserver if($this->dataRecord['resync_vserver'] == 1) - $msg .= $this->do_resync('openvz_vm', 'vm_id', 'vserver', $this->dataRecord['verserver_server_id'], 'hostname', $app->tform->wordbook['do_vserver_txt']); + $msg .= $this->do_resync('openvz_vm', 'vm_id', 'vserver', $this->dataRecord['vserver_server_id'], 'hostname', $app->tform->wordbook['do_vserver_txt']); //* dns if($this->dataRecord['resync_dns'] == 1) { diff --git a/interface/web/tools/templates/dns_import_tupa.htm b/interface/web/tools/templates/dns_import_tupa.htm index 2d37a6a0419fec37ada787f3ec33d989bfbc250c..cd47f431e017f967aa316fce7fbe75d528cdcb65 100644 --- a/interface/web/tools/templates/dns_import_tupa.htm +++ b/interface/web/tools/templates/dns_import_tupa.htm @@ -4,22 +4,27 @@ PowerDNS Tupa import
    - +
    - +
    - +
    - +
    - +
    + +
    + +
    +

    @@ -34,4 +39,4 @@
    -
    \ No newline at end of file + diff --git a/interface/web/tools/templates/import_vpopmail.htm b/interface/web/tools/templates/import_vpopmail.htm index 749ce74a411d1543ca0aec6a07c65948f14c709e..7876875b9828e9bc9d1f2be90b75bf3449f268c0 100644 --- a/interface/web/tools/templates/import_vpopmail.htm +++ b/interface/web/tools/templates/import_vpopmail.htm @@ -8,26 +8,31 @@
    {tmpl_var name="legend_txt"}
    - +
    - +
    - +
    - +
    +
    +
    + +
    + +
    - +
    -
    diff --git a/interface/web/tools/templates/resync.htm b/interface/web/tools/templates/resync.htm index a0b3861c06136a2343952e51c4aa966ef0560366..3e66290fb0fd46e2117a7550bf0d0a12e18d76cd 100644 --- a/interface/web/tools/templates/resync.htm +++ b/interface/web/tools/templates/resync.htm @@ -96,9 +96,22 @@
    + +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    -
    diff --git a/interface/web/tools/tpl_default.php b/interface/web/tools/tpl_default.php index dacbeae9b271966565af0a4904ac4d59f740ad51..b4ac189daaec04d4dc3674af9f63611eabecf9f3 100644 --- a/interface/web/tools/tpl_default.php +++ b/interface/web/tools/tpl_default.php @@ -41,7 +41,7 @@ $app->uses('tpl'); $app->tpl->newTemplate('listpage.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/tpl_default.htm'); -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_tpl_default.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_tpl_default.lng'; include $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php index ccf86adda98f9f6696696de24ec700de1fdf25a5..5c3876fb864d8036338dda594437adcf0208d765 100644 --- a/interface/web/tools/user_settings.php +++ b/interface/web/tools/user_settings.php @@ -86,12 +86,10 @@ class page_action extends tform_actions { if($_POST['passwort'] != $_POST['repeat_password']) { $app->tform->errorMessage = $app->tform->lng('password_mismatch'); } - if(preg_match('/[a-z]{2}/',$_POST['language'])) { - $_SESSION['s']['user']['language'] = $_POST['language']; - $_SESSION['s']['language'] = $_POST['language']; - } else { - $app->error('Invalid language.'); - } + + $language = $app->functions->check_language($_POST['language']); + $_SESSION['s']['user']['language'] = $language; + $_SESSION['s']['language'] = $language; } function onAfterUpdate() { diff --git a/interface/web/vm/form/openvz_ostemplate.tform.php b/interface/web/vm/form/openvz_ostemplate.tform.php index 07eeafef0f8d349e1e951d2efe702963d078f33a..a28bbc6adeaf9ea3d28318f1d6d63945b5230db3 100644 --- a/interface/web/vm/form/openvz_ostemplate.tform.php +++ b/interface/web/vm/form/openvz_ostemplate.tform.php @@ -69,6 +69,12 @@ $form["tabs"]['main'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'template_name_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -81,6 +87,12 @@ $form["tabs"]['main'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'template_file_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -113,6 +125,10 @@ $form["tabs"]['main'] = array ( 'description' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'separator' => '', diff --git a/interface/web/vm/form/openvz_template.tform.php b/interface/web/vm/form/openvz_template.tform.php index 8279ce085c8566a0b41096b2800f1b5013d0d919..1a069361cbdeb6d74ff5b792aab36f1a0dcc6efa 100644 --- a/interface/web/vm/form/openvz_template.tform.php +++ b/interface/web/vm/form/openvz_template.tform.php @@ -69,6 +69,12 @@ $form["tabs"]['main'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'template_name_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -155,6 +161,12 @@ $form["tabs"]['main'] = array ( 'hostname' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -172,6 +184,12 @@ $form["tabs"]['main'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'template_nameserver_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '8.8.8.8 8.8.4.4', 'value' => '', 'width' => '30', @@ -187,6 +205,10 @@ $form["tabs"]['main'] = array ( 'description' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'separator' => '', diff --git a/interface/web/vm/form/openvz_vm.tform.php b/interface/web/vm/form/openvz_vm.tform.php index 44f20dc6ec496da791cf5106a4def0cd222431cf..fe61e27c453e2957d5c8066ba50bccc6d98e258a 100644 --- a/interface/web/vm/form/openvz_vm.tform.php +++ b/interface/web/vm/form/openvz_vm.tform.php @@ -122,7 +122,11 @@ $form["tabs"]['main'] = array ( 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') + 'type' => 'TOLOWER'), + 3 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 4 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') ), 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'hostname_error_empty'), @@ -178,6 +182,10 @@ $form["tabs"]['main'] = array ( 'description' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), 'default' => '', 'value' => '', 'separator' => '', diff --git a/interface/web/vm/lib/lang/cz.lng b/interface/web/vm/lib/lang/cz.lng index 556a5935644a7d6ec43639c19e34541bea8f5d08..37034b56f50ed4ddf03e2d0c751d9c94219e4af7 100644 --- a/interface/web/vm/lib/lang/cz.lng +++ b/interface/web/vm/lib/lang/cz.lng @@ -1,5 +1,5 @@ "reserved", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); diff --git a/interface/web/vm/list/openvz_ostemplate.list.php b/interface/web/vm/list/openvz_ostemplate.list.php index ca6132d827726321b6ebde6ef5e9c14db776dfa4..c2df7eb3867924ce031b0275b9dbb08ca859fdd4 100644 --- a/interface/web/vm/list/openvz_ostemplate.list.php +++ b/interface/web/vm/list/openvz_ostemplate.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "ostemplate_id", 'datatype' => "INTEGER", @@ -96,7 +96,7 @@ $liste["item"][] = array( 'field' => "allservers", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); diff --git a/interface/web/vm/list/openvz_template.list.php b/interface/web/vm/list/openvz_template.list.php index e87314e98e4efac02b3e96ab664995872cbedfff..2d92f7baf4bf1aef12d19b7a5edb38938e7e0fb3 100644 --- a/interface/web/vm/list/openvz_template.list.php +++ b/interface/web/vm/list/openvz_template.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "template_name", diff --git a/interface/web/vm/list/openvz_vm.list.php b/interface/web/vm/list/openvz_vm.list.php index 51e23b3ab2b0deaaf2d7604c3e392603db55397b..261427491bf1a3e6130bfca9be4a5fbf40d2b557 100644 --- a/interface/web/vm/list/openvz_vm.list.php +++ b/interface/web/vm/list/openvz_vm.list.php @@ -54,7 +54,7 @@ $liste["item"][] = array( 'field' => "active", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('y' => "
    ".$app->lng('yes_txt')."
    ", 'n' => "
    ".$app->lng('no_txt')."
    ")); + 'value' => array('y' => $app->lng('yes_txt'), 'n' => $app->lng('no_txt'))); $liste["item"][] = array( 'field' => "veid", 'datatype' => "VARCHAR", diff --git a/interface/web/vm/openvz_action.php b/interface/web/vm/openvz_action.php index 4b429eb44d5cdd889a0f79f5b564e53eb89deb1a..c0bedf19be0ba9ff218f895c0cbd722c963beb62 100644 --- a/interface/web/vm/openvz_action.php +++ b/interface/web/vm/openvz_action.php @@ -32,7 +32,7 @@ $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/openvz_action.htm'); //* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_openvz_action.lng'; +$lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_openvz_action.lng'; include_once $lng_file; $app->tpl->setVar($wb); diff --git a/interface/web/vm/openvz_vm_edit.php b/interface/web/vm/openvz_vm_edit.php index 69265885cd9e3d0e6a104cabf09066847068f09c..4dd1a551deff4e8cb40c7f2cb23200acbc93627e 100644 --- a/interface/web/vm/openvz_vm_edit.php +++ b/interface/web/vm/openvz_vm_edit.php @@ -86,7 +86,7 @@ class page_action extends tform_actions { if(is_array($records)) { foreach( $records as $rec) { $selected = @($rec["template_id"] == $this->dataRecord["template_id"])?'SELECTED':''; - $template_id_select .= "\r\n"; + $template_id_select .= "\r\n"; } } $app->tpl->setVar("template_id_select", $template_id_select); @@ -97,18 +97,19 @@ class page_action extends tform_actions { //* Get the limits of the client $client_group_id = $_SESSION["s"]["user"]["default_group"]; $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, client.limit_openvz_vm_template_id, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - + $client = $app->functions->htmlentities($client); //* Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; $records = $app->db->queryAllRecords($sql, $client['client_id']); + $records = $app->functions->htmlentities($records); $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client['client_id']); $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); if(is_array($records)) { foreach( $records as $rec) { $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; - $client_select .= "\r\n"; + $client_select .= "\r\n"; } } $app->tpl->setVar("client_group_id", $client_select); @@ -123,7 +124,7 @@ class page_action extends tform_actions { if(is_array($records)) { foreach( $records as $rec) { $selected = @($rec["template_id"] == $this->dataRecord["template_id"])?'SELECTED':''; - $template_id_select .= "\r\n"; + $template_id_select .= "\r\n"; } } $app->tpl->setVar("template_id_select", $template_id_select); @@ -134,12 +135,13 @@ class page_action extends tform_actions { //* Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); + $clients = $app->functions->htmlentities($clients); $client_select = ""; //$tmp_data_record = $app->tform->getDataRecord($this->id); if(is_array($clients)) { foreach( $clients as $client) { $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; - $client_select .= "\r\n"; + $client_select .= "\r\n"; } } $app->tpl->setVar("client_group_id", $client_select); @@ -151,7 +153,7 @@ class page_action extends tform_actions { $template_id_select=''; foreach( $records as $rec) { $selected = @($rec["template_id"] == $this->dataRecord["template_id"])?'SELECTED':''; - $template_id_select .= "\r\n"; + $template_id_select .= "\r\n"; } } $app->tpl->setVar("template_id_select", $template_id_select); @@ -173,7 +175,7 @@ class page_action extends tform_actions { if(is_array($ips)) { foreach( $ips as $ip) { $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "\r\n"; + $ip_select .= "\r\n"; } } $app->tpl->setVar("ip_address", $ip_select); @@ -186,7 +188,7 @@ class page_action extends tform_actions { foreach ($additional_ips as $idx => $rec) { $temp .= ""; $used = @($rec['additional']=='y')?'CHECKED':''; - $temp .= " ".$rec['ip_address']."
    "; + $temp .= " ".$app->functions->htmlentities($rec['ip_address'])."
    "; } $app->tpl->setVar("additional_ip", $temp); unset($used); @@ -196,8 +198,8 @@ class page_action extends tform_actions { if($this->id > 0) { //* we are editing a existing record $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]); - $app->tpl->setVar("ostemplate_id_value", $this->dataRecord["ostemplate_id"]); + $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"], true); + $app->tpl->setVar("ostemplate_id_value", $this->dataRecord["ostemplate_id"], true); } else { $app->tpl->setVar("edit_disabled", 0); } diff --git a/interface/web/wizard/lib/lang/nl_new_service.lng b/interface/web/wizard/lib/lang/nl_new_service.lng new file mode 100644 index 0000000000000000000000000000000000000000..ac19acde036b97df97386ca7db78b4c84cea6861 --- /dev/null +++ b/interface/web/wizard/lib/lang/nl_new_service.lng @@ -0,0 +1,48 @@ + diff --git a/interface/web/wizard/lib/lang/nl_template.lng b/interface/web/wizard/lib/lang/nl_template.lng new file mode 100644 index 0000000000000000000000000000000000000000..c6691e84a08c4cb21daf4ed6de090ae7329e6f2c --- /dev/null +++ b/interface/web/wizard/lib/lang/nl_template.lng @@ -0,0 +1,82 @@ += 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['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'] = 'Values of PHP-FPM pm settings must be as follows: 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 must be a positive integer value.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; +$wb['apache_directives_txt'] = 'Apache Directives'; +$wb['nginx_directives_txt'] = 'Nginx Directives'; +$wb['proxy_directives_txt'] = 'Proxy Directives'; +$wb['custom_php_ini_txt'] = 'Custom php.ini settings'; +$wb['seo_redirect_txt'] = 'SEO Redirect'; +$wb['rewrite_to_https_txt'] = 'Rewrite HTTP to HTTPS'; +$wb['no_redirect_txt'] = 'No redirect'; +$wb['none_txt'] = 'None'; +$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; +$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; +$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.'; +$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; +$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['variables_txt'] = 'Variables'; +$wb['disabled_txt'] = 'Disabled'; +$wb['template_name_txt'] = 'Template name'; +$wb['template_name_error_empty'] = 'Template name can not be empty!'; +$wb['policy_txt'] = 'Spamfilter'; +$wb['no_policy'] = '- not enabled -'; +$wb['dkim_txt'] = 'Enable DKIM'; +$wb['dkim_selector_txt'] = 'DKIM-Selector'; +$wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars'; +$wb['remote_access_txt'] = 'Remote Access'; +$wb['remote_ips_txt'] = 'Remote Access IPs (separate by , and leave blank for any)'; +$wb['database_charset_txt'] = 'Database charset'; +$wb['database_remote_error_ips'] = 'At least one of the entered ip addresses is invalid.'; +$wb['limit_database_quota_txt'] = 'Database quota'; +$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; +$wb['quota_files_txt'] = 'Filequota'; +$wb['quota_files_unity_txt'] = 'Files'; +$wb['ul_ratio_txt'] = 'Upload ratio'; +$wb['dl_ratio_txt'] = 'Download ratio'; +$wb['ul_bandwidth_txt'] = 'Upload bandwidth'; +$wb['dl_bandwidth_txt'] = 'Download bandwidth'; +$wb['shell_txt'] = 'Shell'; +$wb['chroot_txt'] = 'Chroot Shell'; +$wb['shell_error_regex'] = 'Invalid shell'; +$wb['shell_error_empty'] = 'Shell is empty!'; +$wb['enablesmtp_txt'] = 'Enable SMTP (sending)'; +$wb['enableimap_txt'] = 'Enable IMAP'; +$wb['enablepop3_txt'] = 'Enable POP3'; +$wb['mailbox_quota_txt'] = 'Mailbox quota (0 for unlimited)'; +$wb['quota_error_isint'] = 'Mailbox size must be a number.'; +$wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; +$wb['http_port_txt'] = 'HTTP Port'; +$wb['https_port_txt'] = 'HTTPS Port'; +?> diff --git a/interface/web/wizard/lib/lang/nl_wizard_template_list.lng b/interface/web/wizard/lib/lang/nl_wizard_template_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..acb6c3546c6150b4edbafb782d3ed85c499210b5 --- /dev/null +++ b/interface/web/wizard/lib/lang/nl_wizard_template_list.lng @@ -0,0 +1,2 @@ + diff --git a/remoting_client/cli/README.md b/remoting_client/cli/README.md new file mode 100644 index 0000000000000000000000000000000000000000..461a0fdbcd97e96ae178b50ffb841b3c63676723 --- /dev/null +++ b/remoting_client/cli/README.md @@ -0,0 +1,48 @@ +# ISPConfig CLI +Command line for ISPConfig remote user REST API using either smart functions or raw methods. + +## Getting Started +This tool can be used and packaged stand alone, without requiring ISPConfig to be installed locally. It is designed to have as few dependencies as possible. + +The script has two main modes: smart functions and raw methods. + +Raw methods simply wrap your JSON and use the arbitrary method name you've given when calling the API. As such, it works with any method, and makes properly formatted requests with curl. It is a handy tool for custom requests, testing, advanced scripting and integration work. The actual data is provided through a file, stdin or as an argument. + +Functions, on the other hand, are combinations of methods and checks that act more like an intelligent tool and does not require the user to understand JSON. The functions are designed based on their method equivalent, but requiring only a single command and automating the rest (login, get ID's, check existing records etc.). This is handy for manual interaction or for scripting. Unlike methods, functions are limited to those methods implemented in the script itself. Functions are named as their method counterparts. The exception are ```login``` and ```logout``` in order to avoid collisions with system commands. They are called log_in and log_out, respectively. + +Functions can also be processed as a batch from file or stdin, optimizing performance by using a single session and single bash instance. + +> **Note:** +Consider using ```-q``` for scripting, this will suppress everything but results and errors on the output. + +### Example smart function usage: + ispconfig-cli -f "dns_a_add example.com. www 192.168.0.2" + DNS zone example.com. has id 1. + DNS A www exists with id 228, updating... + Updated records: 1 + +### Example raw method usage: + ispconfig-cli -m login -j credentials.json + {"code":"ok","message":"","response":"dc39619b0ac9694cb85e93d8b3ac8258"} + +> **Note:** +The whole function has to be quoted as one due to how bash manages the command line arguments. + +### Config file +The script uses an optional config file, allowing commands as short as in the examples above. + +## Dependencies +- ```jq``` for working with JSON +- ```curl``` for talking to the endpoint + +On debian-based distributions such as ubuntu, you can ensure these are installed by running + + sudo apt install jq curl + +## Installing +1. Place this script in your path. For example, placing it in your ```~/bin``` folder (and logging out and back in if you just created the folder) works on many distributions. +2. Make it executable by running ```chmod 755 ispconfig-cli```. +3. Optionally create a config file in ```/etc/ispconfig-cli.conf``` or ```~/.ispconfig-cli```. + +## Details on usage +Run the script without arguments or with ```-h``` for the full list of functionality and config file creation instructions. diff --git a/remoting_client/cli/ispconfig-cli b/remoting_client/cli/ispconfig-cli new file mode 100755 index 0000000000000000000000000000000000000000..e03aa29f3c02e6cde771f7a28c446135e2410041 --- /dev/null +++ b/remoting_client/cli/ispconfig-cli @@ -0,0 +1,495 @@ +#!/bin/bash + +# Command line for ISPConfig remote user REST API using either smart functions or raw methods. +# Author: Johan Ehnberg, johan@molnix.com + +set -e + +### Variables + +VERSION=2018-04-24 +PROGNAME=$(basename $0) +DATESTAMP=`date +%s` + +### Common commands + +# usage +usage() { + echo "Command line for ISPConfig remote user REST API using either smart functions or raw methods." + echo + echo "Usage: $PROGNAME -h/-f /-m [options] ..." + echo + echo "Common options:" + echo + echo " -a " + echo " Config file. Options are read in the following order: system configuration, user configuration, the file specified in this option, other command line options. The last occurrence overrides previous ones." + echo + echo " -e " + echo " API endpoint url such as https://myserver.example.com:8080/remote/json.php ." + echo + echo " -h" + echo " Show this help text." + echo + echo " -i " + echo " Server id (defaults to 1)." + echo + echo " -k" + echo " Do not validate server certificate (for self-signed certificates)." + echo + echo " -q" + echo " Quiet, only outputs results." + echo + echo " -v" + echo " Verbose, outputs all info where available." + echo + echo "Functions combine several methods to carry out common tasks. Function options:" + echo + echo " -b " + echo " Batch file for processing of functions, one per row. Cannot be used with -m, -f or -t." + echo + echo " -c " + echo " Username of the client whose records are to be accessed, see Client->Clients and Client->Resellers." + echo + echo " -f \"\"" + echo " Function to perform. Note the qoutes around the full function command. Cannot be used with -m, -b or -t." + echo + echo " -p " + echo " Password of the remote user as specified in System->Remote Users." + echo + echo " -t" + echo " Read batch for processing of functions from stdin, one per row. Cannot be used with -m, -b or -f." + echo + echo " -u " + echo " Username of the remote user as specified in System->Remote Users." + echo + echo " Available functions:" + echo + echo " clients List all clients" + echo " dns_as List all A records for a zone" + echo " dns_a_add Add or update a DNS A record" + echo " dns_a_delete Delete a DNS A record" + echo " dns_cnames List all CNAME records for a zone" + echo " dns_rr List all records for a zone" + echo " dns_zones List all zones" + echo " methods List available methods" + echo " log_in Create a session (not needed by default)" + echo " log_out Log out a session (not needed by default)" + echo " servers List all servers" + echo + echo "Using a method wraps the JSON data to the API call and returns a JSON response. Method options:" + echo + echo " -d " + echo " Read JSON data from command line. Use escapes and quotes! Cannot be used with -j or -s." + echo + echo " -j " + echo " Read JSON data from file. Cannot be used with -d or -s." + echo + echo " -m " + echo " Raw method to use such as dns_a_add. Cannot be used with -f. Requires one of -d, -j or -s." + echo + echo " -s" + echo " Read JSON data from stdin. Cannot be used with -d or -j." + echo + echo "For details on methods, see:" + echo "https://git.ispconfig.org/ispconfig/ispconfig3/tree/master/remoting_client/API-docs" + echo + echo "Config files are bash files that can contain the following variables:" + echo + echo "remote_user=myuser # see -u" + echo "remote_password=mypassword # see -p" + echo "remote_url=https://myserver.example.com:8080/remote/json.php # see -e" + echo "client_user=myclient # see -c" + echo "server_id=1 # see -i" + echo "ssl_validate=off # see -k" + echo + echo "Example uses:" + echo " 1. Log in using the method and escaped JSON on the command line, without config file" + echo ' ispconfig-cli -m login -d "{\"username\": \"myuser\",\"password\": \"mypassword\"}" -e https://myserver.example.com:8080/remote/json.php' + echo + echo " 2. Log in using the function, without config file" + echo " ispconfig-cli -f \"log_in\" -u myuser -p mypassword -e https://myserver.example.com:8080/remote/json.php -c myclient" + echo + echo " 3. Update a DNS A record or update if it already exists, with complete config file" + echo " ispconfig-cli -f \"dns_a_add example.com. johnscomputer 192.168.0.99\"" + echo +} + +# message verbosity message +message() { + if [ $1 -le $VERBOSITY ]; then + MESSAGE="${MESSAGE}${2}" + fi +} + +# restCall method data +restCall() { + curl $CURLK -sS -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d "${2}" "${remote_url}?${1}" +} + +# method method +method() { + restCall $1 "$JSONDATA" +} + +### Smart functions + +# List all clients +# clients +clients() { + clientsGet | jq .response +} + +# List all A records for a zone +# dns_as zone +dns_as() { + dns_rr $1 | jq -r ".[] | select(.type == \"A\") | .name" +} + +# Add or update an A record +# dns_a_add zone name ip +dns_a_add() { + dns_zone_id $1 + dns_a_id $1 $2 + if [[ $dns_a_id =~ ^-?[0-9]+$ ]]; then + message 2 "DNS A $2 exists with id $dns_a_id, updating rows: " + message 1 "`dnsUpdateAByIdAndIp $dns_a_id $3 | jq -r .response`\n" + elif [[ $dns_a_id == "" ]]; then + message 2 "DNS A $2 does not exist, created ID: " + message 1 "`dnsAddAByZoneAndNameAndIp $dns_zone_id $2 $3 | jq -r .response`\n" + fi +} + +# Delete an A record if it exists +# dns_a_delete zone name +dns_a_delete() { + dns_zone_id $1 + dns_a_id $1 $2 + if [[ $dns_a_id =~ ^-?[0-9]+$ ]]; then + message 2 "DNS A $2 has id $dns_a_id, deleted rows: " + message 1 "`dnsDeleteAById $dns_a_id | jq -r .response`\n" + else + message 2 "DNS A $2 does not exist, skipping.\n" + fi +} + +# List all CNAME records for a zone +# dns_cnames zone +dns_cnames() { + dns_rr $1 | jq -r ".[] | select(.type == \"CNAME\") | .name" +} + +# List all records for a zone +# dns_rr zone +dns_rr() { + dns_zone_id $1 + dnsGetRrByZone $dns_zone_id | jq .response +} + +# List all zones +# dns_zones +dns_zones() { + dnsGetZones | jq .response +} + +# List all available methods +# methods +methods() { + methods=`functionsGet | jq .response` + if [[ $methods == "false" ]]; then + message 1 "Getting methods (Server functions) failed, check permissions?\n" + else + echo $methods | jq + fi +} + +# List all servers +# server +servers() { + serversGet | jq .response +} + +# Log in +# log_in remote_user remote_password +log_in() { + log_in=`logInByUserAndPassword $1 $2 | jq -r '.response'` + if [[ $log_in == "false" ]]; then + message 1 "Login failed!\n" + else + message 3 "Logged in session_id $log_in as $1.\n" + echo "$log_in" + fi +} + +# Log out +# log_out session +log_out() { + if [[ `logOutBySession $1 | jq -r .response` == "true" ]]; then + message 3 "Logged out session $1 successfully.\n" + else + message 1 "Logging out failed!\n" + fi +} + +### ID helpers +# Due to bash limitations, id's should only be set in _id functions below. +# This is due to nested subshells losing the variables. +# As such, some helpers may be called several times redundantly when both +# a child and parent function are also to be available on the CLI. + +# Get client id +# client_id client_user +client_id() { + client_id=`clients | jq -r ".[] | select(.username == \"${1}\") | .client_id"` + message 3 "Client $1 has id $client_id.\n" +} + +# Get dns A id +# dns_a_id zone name +dns_a_id() { + dns_a_id=`dns_rr $1 | jq -r ".[] | select(.name == \"${2}\") | .id"` + message 3 "DNS A $2 has id $dns_a_id.\n" +} + +# Get zone id +# dns_zone_id zone +dns_zone_id() { + dns_zone_id=`dns_zones | jq -r ".[] | select(.origin == \"${1}\") | .id"` + message 3 "DNS zone $1 has id $dns_zone_id.\n" +} + +### Methods +# Get clients +clientsGet() { + restCall client_get "{\"session_id\": \"${session_id}\",\"client_id\":{}}" +} + +# Add A by zone and name and IP +dnsAddAByZoneAndNameAndIp() { + restCall dns_a_add "{\"session_id\": \"${session_id}\",\"client_id\": \"${client_id}\",\"params\": {\"server_id\": ${SERVER},\"zone\": \"${1}\",\"name\": \"${2}\",\"type\": \"a\",\"data\": \"${3}\",\"aux\": \"0\", \"ttl\": \"3600\", \"active\": \"y\", \"stamp\": \"${datestamp}\", \"serial\": \"1\"}}" +} + +# Delete A by id +dnsDeleteAById() { + restCall dns_a_delete "{\"session_id\": \"${session_id}\",\"primary_id\": \"${1}\"}" +} + +# Get RR by id +dnsGetRrByZone() { + restCall dns_rr_get_all_by_zone "{\"session_id\": \"${session_id}\",\"zone_id\": \"${1}\"}" +} + +# Get zones +dnsGetZones() { + restCall dns_zone_get_by_user "{\"session_id\": \"${session_id}\",\"client_id\": \"${client_id}\",\"server_id\": ${SERVER}}" +} + +# Update A by id and IP +dnsUpdateAByIdAndIp() { + restCall dns_a_update "{\"session_id\": \"${session_id}\",\"client_id\": \"${client_id}\",\"primary_id\": \"${1}\",\"params\": {\"data\": \"${2}\", \"stamp\": \"${datestamp}\"}}" +} + +# Get functions +functionsGet() { + restCall get_function_list "{\"session_id\": \"${session_id}\"}" +} + +# Log in by user and password +logInByUserAndPassword() { + restCall login "{\"username\": \"${1}\",\"password\": \"${2}\"}" +} + +# Log out by session +logOutBySession() { + restCall logout "{\"session_id\": \"${1}\"}" +} + +# Get servers info +serversGet() { + restCall server_get "{\"session_id\": \"${session_id}\",\"server_id\":{}}" +} + +### Run + +# Check dependencies +if ! [ -x "$(command -v curl)" ]; then + echo 'Error: curl is not installed.' >&2 + exit 1 +fi +if ! [ -x "$(command -v jq)" ]; then + echo 'Error: jq is not installed.' >&2 + exit 1 +fi + +# Check config files +if [ -r /etc/ispconfig-cli.conf ]; then + . /etc/ispconfig-cli.conf +fi +if [ -r ~/.ispconfig-cli ]; then + . ~/.ispconfig-cli +fi + +# Check command line +if [[ $1 == "" ]]; then + usage + exit 1 +fi +SERVER=1 +VERBOSITY=2 +while getopts :a:e:hi:kqvb:c:f:p:tu:d:j:m:s opt; do + case $opt in + a) + if [[ -e $OPTARG ]]; then + source $OPTARG + else + echo "Config file $OPTARG not found!" + exit 1 + fi + ;; + e) + remote_url=$OPTARG + ;; + h) + usage + exit 1 + ;; + i) + SERVER=$OPTARG + ;; + k) + $ssl_validate=off + ;; + q) + if [[ $VERBOSITY == "2" ]]; then + VERBOSITY=1 + else + echo "-q and -v cannot be specified at the same time!" + exit 1 + fi + ;; + v) + if [[ $VERBOSITY == "2" ]]; then + VERBOSITY=3 + else + echo "-q and -v cannot be specified at the same time!" + exit 1 + fi + ;; + b) + if [[ $METHOD == "" ]]; then + if [[ $FUNCTION == "" ]]; then + FUNCTION=`cat $OPTARG` + else + echo "You can only use one function source!" + exit 1 + fi + else + echo "Function and method cannot be specified at the same time!" + exit 1 + fi + ;; + c) + client_user=$OPTARG + ;; + f) + if [[ $METHOD == "" ]]; then + if [[ $FUNCTION == "" ]]; then + FUNCTION=$OPTARG + else + echo "You can only use one function source!" + exit 1 + fi + else + echo "Function and method cannot be specified at the same time!" + exit 1 + fi + ;; + p) + remote_password=$OPTARG + ;; + t) + if [[ $METHOD == "" ]]; then + if [[ $FUNCTION == "" ]]; then + FUNCTION=`cat` + else + echo "You can only use one function source!" + exit 1 + fi + else + echo "Function and method cannot be specified at the same time!" + exit 1 + fi + ;; + u) + remote_user=$OPTARG + ;; + d) + if [[ $JSONMODE == "" ]]; then + JSONMODE=cli + JSONDATA=$OPTARG + else + echo "You can only use one JSON data source!" + exit 1 + fi + ;; + j) + if [[ $JSONMODE == "" ]]; then + JSONMODE=fil + JSONDATA=`cat $OPTARG` + else + echo "You can only use one JSON data source!" + exit 1 + fi + ;; + m) + if [[ $FUNCTION == "" ]]; then + METHOD=$OPTARG + else + echo "Function and method cannot be specified at the same time!" + exit 1 + fi + ;; + s) + if [[ $JSONMODE == "" ]]; then + JSONMODE=std + JSONDATA=`cat` + else + echo "You can only use one JSON data source!" + exit 1 + fi + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done +if [[ $remote_url == "" ]]; then + echo "No url provided!" + exit 1 +fi +if [[ $ssl_validate == "off" ]]; then + CURLK="-k" +fi +if [[ $METHOD != "" ]]; then + method $METHOD +elif [[ $FUNCTION != "" ]]; then + session_id="`log_in $remote_user $remote_password`" # This is the only ID that has to be set outside ID helpers + message 3 "Using session_id $session_id as $remote_user for CLI operations.\n" + client_id $client_user + #echo $FUNCTION|while read i; do message 1 `$i`; done # Does not work here due to creating subshells + IFS=$'\n' + for i in $FUNCTION; do eval $i; done + unset IFS + log_out $session_id +else + echo "Neither method nor function specified!" + exit 1 +fi + +echo -e $MESSAGE + +exit 0 diff --git a/remoting_client/cli/ispconfig-cli.conf.example b/remoting_client/cli/ispconfig-cli.conf.example new file mode 100644 index 0000000000000000000000000000000000000000..70908274f74e9d9b8cb2f001441b513091b28460 --- /dev/null +++ b/remoting_client/cli/ispconfig-cli.conf.example @@ -0,0 +1,6 @@ +remote_user=myuser +remote_password=mypassword +remote_url=https://myserver.example.com:8080/remote/json.php +client_user=myclient +server_id=1 +ssl_validate=off diff --git a/remoting_client/examples/client_change_password.php b/remoting_client/examples/client_change_password.php index 5e20b11bc49773daa09ea29d8a27197be0e1f414..80108f451140cbea54c57299eb6e8490dddd825e 100644 --- a/remoting_client/examples/client_change_password.php +++ b/remoting_client/examples/client_change_password.php @@ -15,11 +15,21 @@ try { } //* Set the function parameters. - $domain = 'test.int'; + + $client_id = 1; + $new_password = 'YourNewPAssword'; - $record_record = $client->mail_domain_get_by_domain($session_id, $domain); + $success = $client->client_change_password($session_id, $client_id, $new_password); - print_r($record_record); + if ($success = 1) + { + echo "Password has been changed successfully"; + } + else + { + echo "Error"; + } + echo "
    "; if($client->logout($session_id)) { diff --git a/remoting_client/examples/mail_user_add.php b/remoting_client/examples/mail_user_add.php index 25e3590af10bde0a838388ca395b3481925d9836..26d942066b7dbb38ec2cd940b8cb521841284b34 100644 --- a/remoting_client/examples/mail_user_add.php +++ b/remoting_client/examples/mail_user_add.php @@ -29,8 +29,8 @@ try { 'cc' => '', 'homedir' => '/var/vmail', 'autoresponder' => 'n', - 'autoresponder_start_date' => array('day' => 1, 'month' => 7, 'year' => 2012, 'hour' => 0, 'minute' => 0), - 'autoresponder_end_date' => array('day' => 20, 'month' => 7, 'year' => 2012, 'hour' => 0, 'minute' => 0), + 'autoresponder_start_date' => '', + 'autoresponder_end_date' => '', 'autoresponder_text' => 'hallo', 'move_junk' => 'n', 'custom_mailfilter' => 'spam', @@ -42,9 +42,9 @@ try { 'disablesmtp' => 'n' ); - $affected_rows = $client->mail_user_add($session_id, $client_id, $params); + $mailuser_id = $client->mail_user_add($session_id, $client_id, $params); - echo "New user: ".$affected_rows."
    "; + echo "New user: ".$mailuser_id."
    "; if($client->logout($session_id)) { echo 'Logged out.
    '; diff --git a/remoting_client/examples/rest_example.php b/remoting_client/examples/rest_example.php index 24a009c14b326357571f79ee7a2280361562ff29..c1a3a5d2ce3b714040e8c7447aa6dbabeb4a62f7 100644 --- a/remoting_client/examples/rest_example.php +++ b/remoting_client/examples/rest_example.php @@ -50,6 +50,8 @@ if($result) { $result = restCall('client_get', array('session_id' => $session_id, 'client_id' => array())); if($result) var_dump(json_decode($result, true)); else print "Could not get client_get result\n"; + + // please refer to API-Docs for expected input variables and parameters names $result = restCall('logout', array('session_id' => $session_id)); if($result) var_dump(json_decode($result, true)); diff --git a/remoting_client/examples/rest_example.sh b/remoting_client/examples/rest_example.sh new file mode 100644 index 0000000000000000000000000000000000000000..5173f0fa3715ee32ac0f6702f9d4b34c65344894 --- /dev/null +++ b/remoting_client/examples/rest_example.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +set -e + +remote_user=test +remote_password=apipassword +remote_url='https://yourserver.com:8080/remote/json.php' + +# restCall method data +restCall() { + curl -sS -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d "${2}" "${remote_url}?${1}" +} + +# Log in +session_id=`restCall login "{\"username\": \"${remote_user}\",\"password\": \"${remote_password}\"}" | jq -r '.response'` +if [[ $isession == "false" ]]; then + echo "Login failed!" + exit 1 +#else + #echo "Logged in. Session is: $session_id" +fi + +restCall client_get "{\"session_id\": \"$session_id\",\"client_id\":{\"username\": \"abcde\"}}" + +# or by id +restCall client_get "{\"session_id\": \"$session_id\",\"client_id\": \"2\"}" + +# or all +restCall client_get "{\"session_id\": \"$session_id\",\"client_id\":{}}" + +# Log out +if [[ `restCall logout "{\"session_id\": \"$session_id\"}" |jq -r .response` == "true" ]]; then + #echo "Logout successful." + exit 0 +else + echo "Logout failed!" + exit 1 +fi diff --git a/remoting_client/examples/soap-database-add.php b/remoting_client/examples/soap-database-add.php deleted file mode 100644 index 5ff7e4b79df4af0c913c40a8956b930694edd1b5..0000000000000000000000000000000000000000 --- a/remoting_client/examples/soap-database-add.php +++ /dev/null @@ -1,47 +0,0 @@ - $soap_location, - 'uri' => $soap_uri)); -try { - if($session_id = $client->login($username, $password)) { - echo "Logged:".$session_id."
    \n"; - } - - $database_type = 'mysql'; //Only mysql type avaliable more types coming soon. - $database_name = 'yourdbname'; - $database_username = 'yourusername'; - $database_password = 'yourpassword'; - $database_charset = ''; // blank = db default, latin1 or utf8 - $database_remoteips = ''; //remote ip´s separated by commas - - $params = array( - 'server_id' => 1, - 'type' => $database_type, - 'database_name' => $database_name, - 'database_user' => $database_username, - 'database_password' => $database_password, - 'database_charset' => $database_charset, - 'remote_access' => 'n', // n disabled - y enabled - 'active' => 'y', // n disabled - y enabled - 'remote_ips' => $database_remoteips - ); - - $client_id = 1; - $database_id = $client->sites_database_add($session_id, $client_id, $params); - - if($client->logout($session_id)) { - echo "Logout.
    \n"; - } - - -} catch (SoapFault $e) { - die('Error: '.$e->getMessage()); -} - -?> diff --git a/remoting_client/readme b/remoting_client/readme index 1392888bc0e44213c4bde4a0a2cf13523fbfae2e..6e2ef10e6de7f57451712ffed331e5d3418f8adb 100644 --- a/remoting_client/readme +++ b/remoting_client/readme @@ -3,12 +3,12 @@ - Remote API example files -------------------------------------------------------- -The examples folder contains a example script for every -Remote api function. The login details and URL for the +The examples folder contains an example script for every +remote api function. The login details and URL for the remote connection are defined in the file soap_config.php -------------------------------------------------------- - Remote API documentation -------------------------------------------------------- -The startpage of the API documentation is main.html +The startpage of the API documentation is API-docs/index.html diff --git a/security/apache_directives.blacklist b/security/apache_directives.blacklist index edb4b503d387c0ced2be822740ef110e3a5977b5..6dd376d643cac4d52f2885b9da68d043b08821f2 100644 --- a/security/apache_directives.blacklist +++ b/security/apache_directives.blacklist @@ -1,3 +1,3 @@ -/^\s*(LoadModule|LoadFile|Include)(\s+|[\\\\])/mi +/^\s*(LoadModule|LoadFile|Include|IncludeOptional)(\s+|[\\\\])/mi /^\s*(SuexecUserGroup|suPHP_UserGroup|suPHP_PHPPath|suPHP_ConfigPath)(\s+|[\\\\])/mi /^\s*(FCGIWrapper|FastCgiExternalServer)(\s+|[\\\\])/mi \ No newline at end of file diff --git a/security/ids.whitelist b/security/ids.whitelist index 58a96e6ac111d3da02ff6a15ec3d892747070ed3..a9b045e15f52b2bb8d4d6d6d0d09b92bd3319d73 100644 --- a/security/ids.whitelist +++ b/security/ids.whitelist @@ -41,5 +41,17 @@ admin:/capp.php:SESSION.s.module.nav.1.items.0.title admin:/sites/web_vhost_subdomain_edit.php:POST.php_open_basedir admin:/sites/web_domain_edit.php:POST.php_open_basedir admin:/sites/web_domain_edit.php:POST.apache_directives +admin:/sites/web_vhost_domain_edit.php:POST.nginx_directives user:/sites/shell_user_edit.php:POST.ssh_rsa -user:/sites/cron_edit.php:POST.command \ No newline at end of file +user:/sites/cron_edit.php:POST.command +admin:/admin/server_config_edit.php:POST.jailkit_chroot_app_programs +admin:/login/index.php:POST.password +admin:/sites/web_vhost_domain_edit.php:POST.apache_directives +admin:/sites/web_vhost_domain_edit.php:POST.custom_php_ini +admin:/sites/web_vhost_domain_edit.php:POST.php_open_basedir +any:/login/index.php:POST.password +user:/login/index.php:POST.password +user:/mail/mail_domain_edit.php:POST.dkim_private +user:/mail/mail_domain_edit.php:POST.dkim_public +user:/mail/mail_domain_edit.php:POST.dns_record +user:/sites/web_vhost_domain_edit.php:POST.fastcgi_php_version \ No newline at end of file diff --git a/security/nginx_directives.blacklist b/security/nginx_directives.blacklist new file mode 100644 index 0000000000000000000000000000000000000000..2f7122a14856d8bbdac6fad782b84557f851a5c4 --- /dev/null +++ b/security/nginx_directives.blacklist @@ -0,0 +1 @@ +/^\s*(load_module)(\s+|[\\\\])/mi \ No newline at end of file diff --git a/security/security_settings.ini b/security/security_settings.ini index 5cc381e3cde02bd8da1c69e14af5d9cad9a7c8b2..24f4e38d209d6875c43538a09afb3a744ee2aa43 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -19,13 +19,22 @@ password_reset_allowed=yes session_regenerate_id=yes [ids] -ids_enabled=no -ids_log_level=1 -ids_warn_level=5 -ids_block_level=100 +ids_anon_enabled=yes +ids_anon_log_level=1 +ids_anon_warn_level=15 +ids_anon_block_level=20 +ids_user_enabled=yes +ids_user_log_level=1 +ids_user_warn_level=27 +ids_user_block_level=30 +ids_admin_enabled=no +ids_admin_log_level=1 +ids_admin_warn_level=90 +ids_admin_block_level=100 sql_scan_enabled=yes sql_scan_action=warn apache_directives_scan_enabled=yes +nginx_directives_scan_enabled=yes [systemcheck] security_admin_email=root@localhost diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index 86814064a86ea6f21d2e4af1e2565597795b362f..7dc2fd9ddf679462b6bb71740edc7a08625f17cc 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -33,6 +33,21 @@ + + DocumentRoot {tmpl_var name='apps_vhost_dir'} + AddType application/x-httpd-php .php + + Options FollowSymLinks + AllowOverride None + + Require all granted + + Order allow,deny + Allow from all + + + + DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index 74277a2637c5d6cc390046a257dad56d7f825313..6165f0496b1624fef7f5aefdeb81717413359974 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -18,8 +18,12 @@ SSLStaplingCache shmcb:/var/run/ocsp(128000) LogFormat '%v %h %l %u %t "%r" %>s %S "%{Referer}i" "%{User-Agent}i"' combined_ispconfig LogFormat "%v %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig + +CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -p -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig env=!dontlog + + +CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig env=!dontlog -CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig AllowOverride None diff --git a/server/conf/metronome_conf_main.master b/server/conf/metronome_conf_main.master deleted file mode 100644 index 1103ca4d9cac30365ecdee92496a3424b98b3bfe..0000000000000000000000000000000000000000 --- a/server/conf/metronome_conf_main.master +++ /dev/null @@ -1,3 +0,0 @@ -Include "/etc/metronome/global.cfg.lua" -Include "/etc/metronome/hosts/*.lua" -Include "/etc/metronome/status.cfg.lua" diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 7b3c376e9818626c1b258ad8e4efdaf0489476e4..6b4e88aaeb901648eac8ab632f83b52a0f90b187 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -28,8 +28,8 @@ server { 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; - # ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; + # ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; # 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}; @@ -125,8 +125,14 @@ server { } + error_log /var/log/ispconfig/httpd//error.log; access_log /var/log/ispconfig/httpd//access.log combined; + + + error_log /var/log/ispconfig/httpd//error.log; + access_log /var/log/ispconfig/httpd//access.log anonymized; + ## Disable .htaccess and other hidden files location ~ /\. { @@ -182,8 +188,16 @@ server { fastcgi_pass unix:; fastcgi_index index.php; + + fastcgi_param SCRIPT_FILENAME /web$fastcgi_script_name; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fastcgi_param PATH_INFO $fastcgi_script_name; + + fastcgi_param SERVER_NAME ; + fastcgi_intercept_errors on; } @@ -195,6 +209,9 @@ server { fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param PATH_INFO $fastcgi_script_name; + + fastcgi_param SERVER_NAME ; + fastcgi_intercept_errors on; error_page 500 501 502 503 = @phpfallback; } @@ -211,6 +228,9 @@ server { fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param PATH_INFO $fastcgi_script_name; + + fastcgi_param SERVER_NAME ; + fastcgi_intercept_errors on; } @@ -223,6 +243,10 @@ server { location /cgi-bin/ { + try_files @cgi; + } + + location @cgi { try_files $uri =404; include /etc/nginx/fastcgi_params; root ; @@ -298,6 +322,12 @@ server { location ~ \.php$ { try_files @php; } + + + location ~ \.cgi$ { + try_files @cgi; + } + } @@ -329,8 +359,19 @@ server { } + ## no redirect for acme + location ^~ /.well-known/acme-challenge/ { + access_log off; + log_not_found off; + root /usr/local/ispconfig/interface/acme/; + autoindex off; + index index.html; + try_files $uri $uri/ =404; + } - rewrite ^ $request_uri? ; + location / { + rewrite ^ $request_uri? ; + } location / { diff --git a/server/conf/php_fpm_pool.conf.master b/server/conf/php_fpm_pool.conf.master index fd7e996a76ce3088eb202413087e7d1387b1b84f..e3a58ae4ef1b1621a4a7d2f9c109b6ea58714849 100644 --- a/server/conf/php_fpm_pool.conf.master +++ b/server/conf/php_fpm_pool.conf.master @@ -26,20 +26,38 @@ pm.process_idle_timeout = s; pm.max_requests = + +prefix = +chroot = $prefix + chdir = / env[HOSTNAME] = $HOSTNAME + +env[TMP] = /tmp +env[TMPDIR] = /tmp +env[TEMP] = /tmp + env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp + env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin php_admin_value[open_basedir] = + +php_admin_value[session.save_path] = /tmp + php_admin_value[session.save_path] = /tmp + + +php_admin_value[upload_tmp_dir] = /tmp + php_admin_value[upload_tmp_dir] = /tmp + php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f webmaster@" diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index 43dfeac0520243a477c1441e0455cf45c15a201d..bfd75c4d43e6279ecba65701c7151ccade11fa79 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -1,4 +1,4 @@ -require ["fileinto", "regex", "vacation", "imap4flags"]; +require ["fileinto", "regex", "vacation", "imap4flags", "envelope", "subaddress"]; # Send a copy of email to diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master index 7580e190dc8c3bad9b185f3fc918dc4cfdb4b5ec..8a1c80713fb7fafda8fbed675e2a7f1183aaff23 100644 --- a/server/conf/sieve_filter_1.2.master +++ b/server/conf/sieve_filter_1.2.master @@ -1,11 +1,4 @@ -require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags"]; - - -# Send a copy of email to - -redirect ""; - - +require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress"]; # Move spam to spam folder @@ -16,6 +9,13 @@ if header :contains "X-Spam-Flag" "YES" { } + +# Send a copy of email to + +redirect ""; + + + keep; diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 55fe40f9874d7485bf258736d19bbe3f4a50400c..62b629045c8b236aedf79136c7fa511fc56b15e3 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -13,6 +13,12 @@ + + + Protocols h2 h2c http/1.1 + + + DocumentRoot @@ -37,7 +43,20 @@ ServerAdmin webmaster@ + + + Protocols h2 http/1.1 + SSLProtocol All -SSLv2 -SSLv3 + SSLCipherSuite 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS' + + + + + ErrorLog "|/usr/local/ispconfig/server/scripts/vlogger -e -n -P -t \"error.log\" /var/log/ispconfig/httpd/" + + ErrorLog /var/log/ispconfig/httpd//error.log + Alias /error/ "/error/" @@ -55,7 +74,7 @@ SSLEngine on SSLProtocol All -SSLv2 -SSLv3 - # SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS + # SSLCipherSuite TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on # # Header always add Strict-Transport-Security "max-age=15768000" @@ -182,6 +201,13 @@ + + + SetHandler mod_python + + PythonHandler mod_python.publisher + PythonDebug On + SetHandler mod_python @@ -245,16 +271,16 @@ # php as cgi enabled - ScriptAlias /php5-cgi - Action php5-cgi /php5-cgi + ScriptAlias /php-cgi + Action php-cgi /php-cgi - SetHandler php5-cgi + SetHandler php-cgi - SetHandler php5-cgi + SetHandler php-cgi @@ -341,10 +367,10 @@ - SetHandler php5-fcgi + SetHandler php-fcgi - SetHandler php5-fcgi + SetHandler php-fcgi @@ -352,20 +378,20 @@ - SetHandler php5-fcgi + SetHandler php-fcgi - SetHandler php5-fcgi + SetHandler php-fcgi - Action php5-fcgi /php5-fcgi virtual - Alias /php5-fcgi {tmpl_var name='document_root'}/cgi-bin/php5-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} + Action php-fcgi /php-fcgi virtual + Alias /php-fcgi {tmpl_var name='document_root'}/cgi-bin/php-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} - FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/php5-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -host 127.0.0.1: -pass-header Authorization -pass-header Content-Type + FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/php-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -host 127.0.0.1: -pass-header Authorization -pass-header Content-Type - FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/php5-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -socket -pass-header Authorization -pass-header Content-Type + FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/php-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -socket -pass-header Authorization -pass-header Content-Type @@ -494,7 +520,7 @@ RewriteCond %{REQUEST_URI} !^/webdav/ - RewriteCond %{REQUEST_URI} !^/php5-fcgi/ + RewriteCond %{REQUEST_URI} !^/php-fcgi/ RewriteCond %{REQUEST_URI} !^ RewriteRule /(.*) $1 diff --git a/server/conf/metronome_conf_ssl.master b/server/conf/xmpp_conf_ssl.master similarity index 100% rename from server/conf/metronome_conf_ssl.master rename to server/conf/xmpp_conf_ssl.master diff --git a/server/conf/metronome_conf_global.master b/server/conf/xmpp_metronome_conf_global.master similarity index 100% rename from server/conf/metronome_conf_global.master rename to server/conf/xmpp_metronome_conf_global.master diff --git a/server/conf/metronome_conf_host.master b/server/conf/xmpp_metronome_conf_host.master similarity index 100% rename from server/conf/metronome_conf_host.master rename to server/conf/xmpp_metronome_conf_host.master diff --git a/server/conf/metronome_conf_status.master b/server/conf/xmpp_metronome_conf_status.master similarity index 100% rename from server/conf/metronome_conf_status.master rename to server/conf/xmpp_metronome_conf_status.master diff --git a/server/conf/xmpp_prosody_conf_global.master b/server/conf/xmpp_prosody_conf_global.master new file mode 100644 index 0000000000000000000000000000000000000000..ded6f753c6964f9c1056c190d785572dc157d596 --- /dev/null +++ b/server/conf/xmpp_prosody_conf_global.master @@ -0,0 +1,60 @@ +plugin_paths = { + "/usr/local/lib/prosody/modules", +}; +use_libevent = true; +log = { + -- optional: uncomment debug log here + -- debug = "/var/log/prosody/prosody.dbg", + info = "/var/log/prosody/prosody.log", + error = "/var/log/prosody/prosody.err", + "syslog", +}; +use_ipv6 = {tmpl_var name='ipv6'}; +http_ports = { + {tmpl_var name='port_http'}, +}; +https_ports = { + {tmpl_var name='port_https'}, +}; +pastebin_ports = { + {tmpl_var name='port_pastebin'}, +}; +bosh_ports = { + {tmpl_var name='port_bosh'}, +}; +admins = { +{tmpl_var name='server_admins'} +}; +modules_enabled = { +{tmpl_var name='modules_enabled'} +}; +modules_disabled = { +}; + +allow_registration = false; +c2s_require_encryption = false; +s2s_require_encryption = true; +s2s_secure_auth = false; +s2s_insecure_domains = { + "gmail.com", +}; + +pidfile = "/var/run/prosody/prosody.pid"; + +authentication = "external"; + +archive_expires_after = "2w"; + +statistics = "internal"; + +certificates = "certs"; +bosh_max_inactivity = {tmpl_var name='bosh_timeout'}; +consider_bosh_secure = true; +cross_domain_bosh = true; +consider_websocket_secure = true; + +ssl = { + key = "/etc/prosody/certs/localhost.key", + certificate = "/etc/prosody/certs/localhost.crt", +}; + diff --git a/server/conf/xmpp_prosody_conf_host.master b/server/conf/xmpp_prosody_conf_host.master new file mode 100644 index 0000000000000000000000000000000000000000..b45e955eb4a1e8f307787a2bb8e3f855f359ec81 --- /dev/null +++ b/server/conf/xmpp_prosody_conf_host.master @@ -0,0 +1,166 @@ +VirtualHost "{tmpl_var name='domain'}" + enabled = {tmpl_var name='active'}; + authentication = "external"; + external_auth_command = "/usr/local/lib/prosody/auth/authenticate_isp.sh"; + allow_registration = {tmpl_var name='public_registration'}; + + registration_url = "{tmpl_var name='registration_url'}"; + + + registration_text = "{tmpl_var name='registration_message'}"; + + no_registration_whitelist = true; + + modules_enabled = { + "roster", + "private", + "vcard", + "blocklist", + "pep", + + "register", + + "register_redirect", + + "admin_adhoc", + "http", + + "server_status", + + + "webpresence" + + }; + disco_items = { + { + "{tmpl_var main_host}", + "HTTP File Upload", + }, + + { + "muc.{tmpl_var name='domain'}", + "{tmpl_var name='muc_name'}", + }, + + + { + "pubsub.{tmpl_var name='domain'}", + "{tmpl_var name='domain'} Publish/Subscribe", + }, + + + { + "proxy.{tmpl_var name='domain'}", + "{tmpl_var name='domain'} Bytestream Proxy", + }, + + + { + "vjud.{tmpl_var name='domain'}", + "{tmpl_var name='domain'} User Directory", + }, + + }; + admins = { +{tmpl_var name='domain_admins'} + }; + + ssl = { + key = "/etc/prosody/certs/{tmpl_var name='domain'}.key", + certificate = "/etc/prosody/certs/{tmpl_var name='domain'}.crt", + }; + + + http_host = 'xmpp.{tmpl_var name='domain'}'; + + server_status_basepath = "/xmppd/"; + server_status_json = true; + server_status_shown_hosts = { + "{tmpl_var name='domain'}", + + "anon.fuermann.net", + + }; + server_status_shown_comps = { + + "pubsub.{tmpl_var name='domain'}", + + + "proxy.{tmpl_var name='domain'}", + + + "vjud.{tmpl_var name='domain'}", + + + "muc.{tmpl_var name='domain'}", + + } + + + +Component "muc.{tmpl_var name='domain'}" "muc" + modules_enabled = { + "muc_limits", + "muc_log", + + "muc_log_http", + + + "pastebin", + + }; + muc_event_rate = 0.5; + muc_burst_factor = 8; + muc_log_presences = false; + + muc_log_http = { + show_join = {tmpl_var name='archive_join'}, + show_presence = {tmpl_var name='archive_join'}, + show_status = {tmpl_var name='archive_status'}, + theme = "prosody", + url_base = "logs", + }; + + + pastebin_threshold = 500; + pastebin_line_threshold = 4; + pastebin_expire_after = {tmpl_var name='pastebin_expire'}; + pastebin_trigger = "{tmpl_var name='pastebin_trigger'}"; + + name = "{tmpl_var name='muc_name'}"; + restrict_room_creation = "{tmpl_var name='muc_restrict_room_creation'}"; + max_history_messages = 20; + admins = { +{tmpl_var name='muc_admins'} + }; + + + + +Component "pubsub.{tmpl_var name='domain'}" "pubsub" + name = "{tmpl_var name='domain'} Publish/Subscribe"; + + + +Component "proxy.{tmpl_var name='domain'}" "proxy65" + proxy65_acl = { + "{tmpl_var name='domain'}", + }; + + + + +Component "vjud.{tmpl_var name='domain'}" "vjud" + ud_disco_name = "{tmpl_var name='domain'} User Directory"; + vjud_mode = "{tmpl_var name='vjud_opt_mode'}"; + + + +VirtualHost "anon.{tmpl_var name='domain'}" + enabled = true; + authentication = "anonymous"; + allow_anonymous_multiresourcing = true; + anonymous_jid_gentoken = "{tmpl_var name='domain'} Anonymous User"; + admins = { + }; + diff --git a/server/conf/xmpp_prosody_conf_status.master b/server/conf/xmpp_prosody_conf_status.master new file mode 100644 index 0000000000000000000000000000000000000000..298ec88e92722ad3e07df72a673cabea76e641b7 --- /dev/null +++ b/server/conf/xmpp_prosody_conf_status.master @@ -0,0 +1,20 @@ +Component "xmpp.{tmpl_var name='domain'}" "http" + modules_enabled = { + + "server_status", + + + "webpresence", + + }; + + + server_status_basepath = "/xmppd/"; + server_status_json = true; + server_status_show_hosts = { +{tmpl_var name='status_hosts'} + }; + server_status_show_comps = { +{tmpl_var name='status_comps'} + }; + \ No newline at end of file diff --git a/server/cron.php b/server/cron.php index 261abd983bc290d7b5f0821876d9f2fb2ae72711..23eeaa0235edbae15376217eab5dedbbfa0dfc4c 100644 --- a/server/cron.php +++ b/server/cron.php @@ -37,7 +37,7 @@ if (is_file($conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock')) { $pid = trim(file_get_contents($conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock')); 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"; + 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; } } diff --git a/server/cron.sh b/server/cron.sh index 98f0ddfd30d4443382e0b77a5d1a9145bb503544..58ddc67ff253394e2ec0608248b15d9f6bd581ed 100644 --- a/server/cron.sh +++ b/server/cron.sh @@ -10,8 +10,9 @@ if [ -f /usr/local/ispconfig/server/lib/php.ini ]; then fi cd /usr/local/ispconfig/server -/usr/bin/php -q \ +$(which php) -q \ -d disable_classes= \ -d disable_functions= \ -d open_basedir= \ /usr/local/ispconfig/server/cron.php + \ No newline at end of file diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index 117af30b8a0c7ec3599b3abe2b05d30b697648dd..86df2a86f6b43181d8ba137a326d8cbf3fd643de 100644 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -43,7 +43,11 @@ class app { if($conf['start_db'] == true) { $this->load('db_'.$conf['db_type']); - $this->db = new db; + try { + $this->db = new db; + } catch (Exception $e) { + $this->db = false; + } /* Initialize the connection to the master DB, @@ -51,7 +55,11 @@ class app { */ if($conf['dbmaster_host'] != '' && ($conf['dbmaster_host'] != $conf['db_host'] || ($conf['dbmaster_host'] == $conf['db_host'] && $conf['dbmaster_database'] != $conf['db_database']))) { - $this->dbmaster = new db($conf['dbmaster_host'], $conf['dbmaster_user'], $conf['dbmaster_password'], $conf['dbmaster_database'], $conf['dbmaster_port'], $conf['dbmaster_client_flags']); + try { + $this->dbmaster = new db($conf['dbmaster_host'], $conf['dbmaster_user'], $conf['dbmaster_password'], $conf['dbmaster_database'], $conf['dbmaster_port'], $conf['dbmaster_client_flags']); + } catch (Exception $e) { + $this->dbmaster = false; + } } else { $this->dbmaster = $this->db; } @@ -117,7 +125,7 @@ class app { 2 = ERROR */ - function log($msg, $priority = 0) { + function log($msg, $priority = 0, $dblog = true) { global $conf; @@ -148,7 +156,7 @@ class app { fclose($fp); // Log to database - if(isset($this->dbmaster)) { + if($dblog === true && isset($this->dbmaster)) { $server_id = $conf['server_id']; $loglevel = $priority; $message = $msg; diff --git a/server/lib/classes/cron.d/100-monitor_database_size.inc.php b/server/lib/classes/cron.d/100-monitor_database_size.inc.php index d2981dd31451de58df3816c5b71ce9128fc35f74..97f12253717980eb1bdbdded76b211d2b7a64777 100644 --- a/server/lib/classes/cron.d/100-monitor_database_size.inc.php +++ b/server/lib/classes/cron.d/100-monitor_database_size.inc.php @@ -95,12 +95,12 @@ class cronjob_monitor_database_size extends cronjob { if(!is_numeric($quota)) continue; if($quota < 1 || $quota > $data[$i]['size']) { - print $rec['database_name'] . ' does not exceed quota qize: ' . $quota . ' > ' . $data[$i]['size'] . "\n"; + print 'database ' . $rec['database_name'] . ' size does not exceed quota: ' . ($quota < 1 ? 'unlimited' : $quota) . ' (quota) > ' . $data[$i]['size'] . " (used)\n"; if($rec['quota_exceeded'] == 'y') { $app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'n'), 'database_id', $rec['database_id']); } } elseif($rec['quota_exceeded'] == 'n') { - print $rec['database_name'] . ' exceeds quota qize: ' . $quota . ' < ' . $data[$i]['size'] . "\n"; + print 'database ' . $rec['database_name'] . ' size exceeds quota: ' . $quota . ' (quota) < ' . $data[$i]['size'] . " (used)\n"; $app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'y'), 'database_id', $rec['database_id']); } } diff --git a/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php b/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php index eb92c2de9dda64a9be93723830696fe70fd00c41..1d03949a8cf1c7457fd9b7e96a51be5fe73b57f9 100644 --- a/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php +++ b/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php @@ -74,7 +74,7 @@ class cronjob_monitor_disk_usage extends cronjob { $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - $dfData = shell_exec('df -hT -x simfs | awk \'!x[$1]++\' 2>/dev/null'); + $dfData = shell_exec('df -PhT -x simfs -x squashfs | awk \'!x[$1]++\' 2>/dev/null'); // split into array $df = explode("\n", $dfData); diff --git a/server/lib/classes/cron.d/100-monitor_kernel_version.inc.php b/server/lib/classes/cron.d/100-monitor_kernel_version.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..6ead20bdd8064b2bad4db4434c42ff7f7c28e5f3 --- /dev/null +++ b/server/lib/classes/cron.d/100-monitor_kernel_version.inc.php @@ -0,0 +1,107 @@ +load('monitor_tools'); + $this->_tools = new monitor_tools(); + /* end global section for monitor cronjobs */ + + /* the id of the server as int */ + $server_id = intval($conf['server_id']); + + /** The type of the data */ + + $type = 'kernel_info'; + + /* + Fetch the data into a array + */ + $kernel = shell_exec("uname -mrs"); + + $data['name'] = ''; + $data['version'] = $kernel; + + /* the OS has no state. It is, what it is */ + $state = 'no_state'; + + $res = array(); + $res['server_id'] = $server_id; + $res['type'] = $type; + $res['data'] = $data; + $res['state'] = $state; + + /* + * Insert the data into the database + */ + $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . + 'VALUES (?, ?, UNIX_TIMESTAMP(), ?, ?)'; + $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']); + + /* The new data is written, now we can delete the old one */ + $this->_tools->delOldRecords($res['type'], $res['server_id']); + + parent::onRunJob(); + } + + /* this function is optional if it contains no custom code */ + public function onAfterRun() { + global $app; + + parent::onAfterRun(); + } + +} + +?> 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/100-monitor_raid.inc.php b/server/lib/classes/cron.d/100-monitor_raid.inc.php index 3349ffbf444241e21e70b90acf2508808df0666c..e6b1bace17d788fb6e77f88018e829813e316147 100644 --- a/server/lib/classes/cron.d/100-monitor_raid.inc.php +++ b/server/lib/classes/cron.d/100-monitor_raid.inc.php @@ -275,6 +275,52 @@ class cronjob_monitor_raid extends cronjob { } } + /* + * HP Proliant new HPE Command Line Smart Storage Administration Utility + */ + system('which ssacli', $retval); + if($retval === 0) { + $state = 'ok'; + $data['output'] = shell_exec('/usr/sbin/ssacli ctrl all show config'); + $tmp = explode("\n", $data['output']); + if(is_array($tmp)) { + foreach ($tmp as $item) { + if (strpos($item, 'logicaldrive') !== false) { + if (strpos($item, 'OK') !== false) { + $this->_tools->_setState($state = 'ok'); + } elseif (strpos($item, 'Recovery Mode') !== false) { + $this->_tools->_setState($state = 'critical'); + break; + } elseif (strpos($item, 'Failed') !== false) { + $this->_tools->_setState($state = 'error'); + break; + } elseif (strpos($item, 'Recovering') !== false) { + $this->_tools->_setState($state = 'info'); + break; + } else { + $this->_tools->_setState($state = 'critical'); + } + } + if (strpos($item, 'physicaldrive') !== false) { + if (strpos($item, 'physicaldrive') !== false) { + if (strpos($item, 'OK') !== false) { + $this->_tools->_setState($state = 'ok'); + } elseif (strpos($item, 'Failed') !== false) { + $this->_tools->_setState($state = 'critical'); + break; + } elseif (strpos($item, 'Rebuilding') !== false) { + $this->_tools->_setState($state = 'info'); + break; + } else { + $this->_tools->_setState($state = 'critical'); + break; + } + } + } + } + } + } + /* * LSI MegaRaid */ @@ -283,7 +329,7 @@ class cronjob_monitor_raid extends cronjob { if($retval === 0 || $retval64 === 0) { $binary=@($retval === 0)?'megacli':'megacli64'; $state = 'ok'; - $data['output'] = shell_exec($binary.' -LDInfo -Lall -aAll'); + $data['output'] = shell_exec($binary.' -LDInfo -Lall -aAll -NoLog'); if (strpos($data['output'], 'Optimal') !== false) { $this->_tools->_setState($state, 'ok'); } else if (strpos($data['output'], 'Degraded') !== false) { @@ -315,6 +361,29 @@ class cronjob_monitor_raid extends cronjob { } } + /* + * SAS2IRCU + */ + system('which sas2ircu', $retval); + if($retval === 0) { + $state = 'ok'; + $data['output'] = shell_exec('sas2ircu 0 DISPLAY'); + if(is_array($data['output'])) { + foreach ($data['output'] as $item) { + if (strpos($item, 'Optimal (OPT)') !== false) { + $this->_tools->_setState($state, 'ok'); + } else { + $this->_tools->_setState($state, 'critical'); + } + if (strpos($item, 'Okay (OKY)') !== false) { + $this->_tools->_setState($state, 'ok'); + } else { + $this->_tools->_setState($state, 'critical'); + } + } + } + } + $res = array(); $res['server_id'] = $server_id; $res['type'] = $type; diff --git a/server/lib/classes/cron.d/100-monitor_rkhunter.inc.php b/server/lib/classes/cron.d/100-monitor_rkhunter.inc.php index d5beee70bcf1dac36ac38f1f2bf7108bd9c4e5a2..43071b83872b26048266ba9250dff926c6997d95 100644 --- a/server/lib/classes/cron.d/100-monitor_rkhunter.inc.php +++ b/server/lib/classes/cron.d/100-monitor_rkhunter.inc.php @@ -72,7 +72,13 @@ class cronjob_monitor_rkhunter extends cronjob { /* * Fetch the output */ - $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress'); + + // Do not try to update rkhunter on Debian and Ubuntu, rkhunter is keept up to date with apt. + if(file_exists('/etc/debian_version')) { + $data['output'] = shell_exec('rkhunter --checkall --nocolors --skip-keypress'); + } else { + $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress'); + } /* * At this moment, there is no state (maybe later) diff --git a/server/lib/classes/cron.d/200-ftplogfiles.inc.php b/server/lib/classes/cron.d/200-ftplogfiles.inc.php index e471967555bf33dd6f3bcdf66244ea9a1bc2e5f7..36b43352404153dcde58ee8e857de9bd6830011d 100644 --- a/server/lib/classes/cron.d/200-ftplogfiles.inc.php +++ b/server/lib/classes/cron.d/200-ftplogfiles.inc.php @@ -71,24 +71,26 @@ class cronjob_ftplogfiles extends cronjob { } } - $fp = fopen('/var/log/pure-ftpd/transfer.log.1', 'r'); + $fp = @fopen('/var/log/pure-ftpd/transfer.log.1', 'r'); $ftp_traffic = array(); - // cumule des stats journalière dans un tableau - while($line = fgets($fp)) - { - $parsed_line = parse_ftp_log($line); - - $sql = "SELECT wd.domain FROM ftp_user AS fu INNER JOIN web_domain AS wd ON fu.parent_domain_id = wd.domain_id WHERE fu.username = ? "; - $temp = $app->db->queryOneRecord($sql, $parsed_line['username'] ); - - $parsed_line['domain'] = $temp['domain']; - - add_ftp_traffic($ftp_traffic, $parsed_line); + if ($fp) { + // cumule des stats journalière dans un tableau + while($line = fgets($fp)) + { + $parsed_line = parse_ftp_log($line); + + $sql = "SELECT wd.domain FROM ftp_user AS fu INNER JOIN web_domain AS wd ON fu.parent_domain_id = wd.domain_id WHERE fu.username = ? "; + $temp = $app->db->queryOneRecord($sql, $parsed_line['username'] ); + + $parsed_line['domain'] = $temp['domain']; + + add_ftp_traffic($ftp_traffic, $parsed_line); + } + + fclose($fp); } - - fclose($fp); - + // Save du tableau en BD foreach($ftp_traffic as $traffic_date => $all_traffic) { @@ -123,4 +125,4 @@ class cronjob_ftplogfiles extends cronjob { } } -?> \ No newline at end of file +?> diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index 97f6c77f413887d0e404e309e7b7646fca748da4..6f38f0b403d66dee84f581dad70ed70e5bf21a5d 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -49,6 +49,15 @@ class cronjob_logfiles extends cronjob { public function onRunJob() { global $app, $conf; + + $app->uses('getconf'); + $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); + + if($server_config['log_retention'] > 0) { + $max_syslog = $server_config['log_retention']; + } else { + $max_syslog = 10; + } //###################################################################################################### // Make the web logfiles directories world readable to enable ftp access @@ -76,7 +85,7 @@ class cronjob_logfiles extends cronjob { unset($tmp); } - $log_retention = $rec['log_retention']; + $log_retention = $rec['log_retention']; $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; $total_bytes = 0; @@ -118,9 +127,9 @@ class cronjob_logfiles extends cronjob { $cron_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/' . $cron_logfile); // rename older files (move up by one) - $num = 7; - while($num >= 1 && is_file($cron_logfile . '.' . $num . '.gz')) { - rename($cron_logfile . '.' . $num . '.gz', $cron_logfile . '.' . ($num + 1) . '.gz'); + $num = $log_retention; + while($num >= 1) { + if(is_file($cron_logfile . '.' . $num . '.gz')) rename($cron_logfile . '.' . $num . '.gz', $cron_logfile . '.' . ($num + 1) . '.gz'); $num--; } @@ -130,37 +139,43 @@ class cronjob_logfiles extends cronjob { exec("cat /dev/null > $cron_logfile"); } // remove older logs - $num = 7; + $num = $log_retention; while(is_file($cron_logfile . '.' . $num . '.gz')) { @unlink($cron_logfile . '.' . $num . '.gz'); $num++; } } - // rotate and compress the error.log when it exceeds a size of 10 MB - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log'); - if(is_file($logfile) && filesize($logfile) > 10000000) { - exec("gzip -c $logfile > $logfile.1.gz"); - exec("cat /dev/null > $logfile"); + // rotate and compress the error.log + $error_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log'); + // rename older files (move up by one) + $num = $log_retention; + while($num >= 1) { + if(is_file($error_logfile . '.' . $num . '.gz')) rename($error_logfile . '.' . $num . '.gz', $error_logfile . '.' . ($num + 1) . '.gz'); + $num--; + } + // compress current logfile + if(is_file($error_logfile)) { + exec("gzip -c $error_logfile > $error_logfile.1.gz"); + exec("cat /dev/null > $error_logfile"); } - // delete logfiles after x days (default 30) - if($log_retention > 0) { - foreach (glob($rec['document_root'].'/' . $log_folder . '/'."*.log*") as $logfile) { - $now = time(); - if (is_file($logfile)) - if ($now - filemtime($logfile) >= 60 * 60 * 24 * $log_retention) - unlink($logfile); - } - - } + // delete logfiles after x days (default 10) + if($log_retention > 0) { + foreach (glob($rec['document_root'].'/' . $log_folder . '/'."*.log*") as $logfile) { + $now = time(); + if (is_file($logfile)) + if ($now - filemtime($logfile) >= 60 * 60 * 24 * $log_retention) + unlink($logfile); + } + } } //* 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 +30 -name '*.log' | xargs rm > /dev/null 2> /dev/null"); + exec('cd /var/log/ispconfig/httpd/'.$tmp_hostname[0]."; find . -mtime +$max_syslog -name '*.log' | xargs rm > /dev/null 2> /dev/null"); } unset($tmp_hostname); @@ -168,25 +183,27 @@ class cronjob_logfiles extends cronjob { // Rotate the ispconfig.log file //###################################################################################################### - // rotate the ispconfig.log when it exceeds a size of 10 MB - $logfile = $conf['ispconfig_log_dir'].'/ispconfig.log'; - if(is_file($logfile) && filesize($logfile) > 10000000) { - exec("gzip -c $logfile > $logfile.1.gz"); - exec("cat /dev/null > $logfile"); - } - // rotate the cron.log when it exceeds a size of 10 MB - $logfile = $conf['ispconfig_log_dir'].'/cron.log'; - if(is_file($logfile) && filesize($logfile) > 10000000) { - exec("gzip -c $logfile > $logfile.1.gz"); - exec("cat /dev/null > $logfile"); - } - - // rotate the auth.log when it exceeds a size of 10 MB - $logfile = $conf['ispconfig_log_dir'].'/auth.log'; - if(is_file($logfile) && filesize($logfile) > 10000000) { - exec("gzip -c $logfile > $logfile.1.gz"); - exec("cat /dev/null > $logfile"); + $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); + // 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'); + $num--; + } + // compress current logfile + if(is_file($ispconfig_logfile)) { + exec("gzip -c $ispconfig_logfile > $ispconfig_logfile.1.gz"); + exec("cat /dev/null > $ispconfig_logfile"); + } + // remove older logs + $num = $max_syslog; + while(is_file($ispconfig_logfile . '.' . $num . '.gz')) { + @unlink($ispconfig_logfile . '.' . $num . '.gz'); + $num++; + } } //###################################################################################################### diff --git a/server/lib/classes/cron.d/300-quota_notify.inc.php b/server/lib/classes/cron.d/300-quota_notify.inc.php index 5d652d0820d99a72eb67d7379cd73556c4a4a2d6..b681ef967d004d7e2ec4fefc27c9b8980faa9e37 100644 --- a/server/lib/classes/cron.d/300-quota_notify.inc.php +++ b/server/lib/classes/cron.d/300-quota_notify.inc.php @@ -87,9 +87,13 @@ class cronjob_quota_notify extends cronjob { //* Send traffic notifications if($rec['traffic_quota_lock'] != 'y' && ($web_config['overtraffic_notify_admin'] == 'y' || $web_config['overtraffic_notify_client'] == 'y')) { - $placeholders = array('{domain}' => $rec['domain'], - '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root')); - + $placeholders = array('{domain}' => $rec['domain'], + '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'), + '{used}' => $web_traffic, + '{limit}' => $web_traffic_quota, + '{ratio}' => number_format(($web_traffic_quota > 0 ? $web_traffic/$web_traffic_quota : 0) * 100, 2, '.', '').'%' + ); + $recipients = array(); //* send email to admin if($global_config['admin_mail'] != '' && $web_config['overtraffic_notify_admin'] == 'y') { diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index 5dcb2d5fc3973ec07abee3d9ee861808bd8a860e..fa574311164630cc933539b914e6ca71b5b6c6fa 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -54,6 +54,7 @@ class cronjob_backup extends cronjob { $global_config = $app->getconf->get_global_config('sites'); $backup_dir = trim($server_config['backup_dir']); $backup_mode = $server_config['backup_mode']; + $backup_tmp = trim($server_config['backup_tmp']); if($backup_mode == '') $backup_mode = 'userzip'; $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); @@ -77,6 +78,15 @@ class cronjob_backup extends cronjob { if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $run_backups = false; if($run_backups){ $web_array = array(); + + system('which pigz > /dev/null', $ret); + if($ret === 0) { + $use_pigz = true; + $zip_cmd = 'pigz'; // db-backups + } else { + $use_pigz = false; + $zip_cmd = 'gzip'; // db-backups + } //* backup only active domains $sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y'"; @@ -117,12 +127,16 @@ 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 /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 /tmp --exclude=./backup\*'.$backup_excludes.' --update --symlinks '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' -@', $tmp_output, $retval); + 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); } else { //* Create a tar.gz backup as root user $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz'; - exec('tar pczf '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' --exclude=./backup\*'.$backup_excludes.' --directory '.escapeshellarg($web_path).' .', $tmp_output, $retval); + 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); + } else { + exec('tar pczf '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' --exclude=./backup\*'.$backup_excludes.' --directory '.escapeshellarg($web_path).' .', $tmp_output, $retval); +} } 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)){ @@ -241,8 +255,8 @@ class cronjob_backup extends cronjob { $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); - //* Compress the backup with gzip - if($retval == 0) exec("gzip -c '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file)."' > '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file).".gz'", $tmp_output, $retval); + //* 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){ if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')){ 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 5e84fb3417890a18d716d9ef011d1bb5b42d6d44..b05caf70d70af4fc6c86c9c1c3243bf834b2242c 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -59,6 +59,7 @@ class cronjob_backup_mail extends cronjob { $backup_mode = $server_config['backup_mode']; if($backup_mode == '') $backup_mode = 'userzip'; + $backup_tmp = trim($server_config['backup_tmp']); if($backup_dir != '') { $run_backups = true; @@ -72,7 +73,12 @@ class cronjob_backup_mail extends cronjob { } else { chmod(escapeshellcmd($backup_dir), $backup_dir_permissions); } - + system('which pigz > /dev/null', $ret); + if($ret === 0) { + $use_pigz = true; + } else { + $use_pigz = false; + } foreach($records as $rec) { //* Do the mailbox backup $email = $rec['email']; @@ -120,11 +126,15 @@ class cronjob_backup_mail extends cronjob { if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; - exec('cd '.$this->tmp_backup_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b /tmp -r backup > /dev/null && rm -rf backup', $tmp_output, $retval); + 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 { $mail_backup_file.='.tar.gz'; - 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); + 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); + } 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); + } } if ($retval != 0) { @@ -144,11 +154,15 @@ 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 /tmp -r '.$source_dir.' > /dev/null', $tmp_output, $retval); + exec('cd '.$domain_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b '.escapeshellarg($backup_tmp).' -r '.$source_dir.' > /dev/null', $tmp_output, $retval); } else { /* Create a tar.gz backup */ $mail_backup_file.='.tar.gz'; - exec(escapeshellcmd('tar pczf '.$mail_backup_dir.'/'.$mail_backup_file.' --directory '.$domain_dir.' '.$source_dir), $tmp_output, $retval); + if ($use_pigz) { + exec('tar pcf - --directory '.escapeshellarg($domain_dir).' '.escapeshellarg($source_dir).' | pigz > '.$mail_backup_dir.'/'.$mail_backup_file, $tmp_output, $retval); + } else { + exec(escapeshellcmd('tar pczf '.$mail_backup_dir.'/'.$mail_backup_file.' --directory '.$domain_dir.' '.$source_dir), $tmp_output, $retval); + } } } @@ -228,7 +242,7 @@ class cronjob_backup_mail extends cronjob { if(!is_file($mail_backup_dir.'/'.$backup['filename'])){ $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; $app->db->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql); + if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']); } } } diff --git a/server/lib/classes/cron.inc.php b/server/lib/classes/cron.inc.php index 48ca09373901eb3c1cfaf977bdfcf1248531db64..3a8ba2c6a63fd5010d87007b84e2d26bf52e5494 100644 --- a/server/lib/classes/cron.inc.php +++ b/server/lib/classes/cron.inc.php @@ -264,9 +264,10 @@ 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 $key => $value) { + if($bIncludeCurrent == true && $value >= $iValue) return $value; + elseif($value > $iValue) return $value; } return reset($this->_aValidValues[$sField]); } diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 9a7968caea5ef3e004a7727c0b81ba1acc2c30eb..b03ad55676ddb3c30cf01c4e12eed534865d8585 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -1,4 +1,12 @@ dbUser = $user ? $user : $conf['db_user']; $this->dbPass = $pass ? $pass : $conf['db_password']; $this->dbCharset = $conf['db_charset']; - $this->dbNewLink = $conf['db_new_link']; - $this->dbClientFlags = $flags ? $flags : $conf['db_client_flags']; + $this->dbClientFlags = ($flags !== NULL) ? $flags : $conf['db_client_flags']; $this->_iConnId = mysqli_init(); mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags); - for($try=0;(!is_object($this->_iConnId) || mysqli_connect_error()) && $try < 5;++$try) { + for($try=0;(!is_object($this->_iConnId) || mysqli_connect_errno()) && $try < 5;++$try) { sleep($try); - mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags); + if(!is_object($this->_iConnId)) { + $this->_iConnId = mysqli_init(); + } + if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags)) { + $this->_sqlerror('Database connection failed'); + } } - if(!is_object($this->_iConnId) || mysqli_connect_error()) { + if(!is_object($this->_iConnId) || mysqli_connect_errno()) { $this->_iConnId = null; - $this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!', '', true); - return false; + $this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!', '', true); // sets errorMessage + throw new Exception($this->errorMessage); } if(!((bool)mysqli_query( $this->_iConnId, 'USE `' . $this->dbName . '`'))) { $this->close(); - $this->_sqlerror('Datenbank nicht gefunden / Database not found', '', true); - return false; + $this->_sqlerror('Datenbank nicht gefunden / Database not found', '', true); // sets errorMessage + throw new Exception($this->errorMessage); } $this->_setCharset(); @@ -106,6 +116,18 @@ class db $this->_iConnId = null; } + /* + * Test mysql connection. + * + * @return boolean returns true if db connection is good. + */ + public function testConnection() { + if(mysqli_connect_errno()) { + return false; + } + return (boolean)(is_object($this->_iConnId) && mysqli_ping($this->_iConnId)); + } + /* This allows our private variables to be "read" out side of the class */ public function __get($var) { return isset($this->$var) ? $this->$var : NULL; @@ -134,6 +156,7 @@ class db if($iPos2 !== false && ($iPos === false || $iPos2 <= $iPos)) { $sTxt = $this->escape($sValue); + $sTxt = str_replace('`', '', $sTxt); if(strpos($sTxt, '.') !== false) { $sTxt = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $sTxt); $sTxt = str_replace('.`*`', '.*', $sTxt); @@ -174,17 +197,68 @@ class db /**#@+ - * @access private - */ + * @access private + */ private function _setCharset() { - mysqli_query($this->_iConnId, 'SET NAMES '.$this->dbCharset); - mysqli_query($this->_iConnId, "SET character_set_results = '".$this->dbCharset."', character_set_client = '".$this->dbCharset."', character_set_connection = '".$this->dbCharset."', character_set_database = '".$this->dbCharset."', character_set_server = '".$this->dbCharset."'"); + $this->query('SET NAMES '.$this->dbCharset); + $this->query("SET character_set_results = '".$this->dbCharset."', character_set_client = '".$this->dbCharset."', character_set_connection = '".$this->dbCharset."', character_set_database = '".$this->dbCharset."', character_set_server = '".$this->dbCharset."'"); + } + + private function securityScan($string) { + global $app, $conf; + + // get security config + if(isset($app)) { + $app->uses('getconf'); + $ids_config = $app->getconf->get_security_config('ids'); + + if($ids_config['sql_scan_enabled'] == 'yes') { + + // Remove whitespace + $string = trim($string); + if(substr($string,-1) == ';') $string = substr($string,0,-1); + + // Save original string + $string_orig = $string; + + //echo $string; + $chars = array(';', '#', '/*', '*/', '--', '\\\'', '\\"'); + + $string = str_replace('\\\\', '', $string); + $string = preg_replace('/(^|[^\\\])([\'"])\\2/is', '$1', $string); + $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\])\\2/is', '$1', $string); + $ok = true; + + if(substr_count($string, "`") % 2 != 0 || substr_count($string, "'") % 2 != 0 || substr_count($string, '"') % 2 != 0) { + $app->log("SQL injection warning (" . $string_orig . ")",2); + $ok = false; + } else { + foreach($chars as $char) { + if(strpos($string, $char) !== false) { + $ok = false; + $app->log("SQL injection warning (" . $string_orig . ")",2); + break; + } + } + } + if($ok == true) { + return true; + } else { + if($ids_config['sql_scan_action'] == 'warn') { + // we return false in warning level. + return false; + } else { + // if sql action = 'block' or anything else then stop here. + $app->error('Possible SQL injection. All actions have been logged.'); + } + } + } + } } private function _query($sQuery = '') { global $app; - //if($this->isConnected == false) return false; if ($sQuery == '') { $this->_sqlerror('Keine Anfrage angegeben / No query given'); return false; @@ -193,10 +267,13 @@ class db $try = 0; do { $try++; - $ok = mysqli_ping($this->_iConnId); + $ok = (is_object($this->_iConnId)) ? mysqli_ping($this->_iConnId) : false; if(!$ok) { - if(!mysqli_real_connect(mysqli_init(), $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { - if($this->errorNumber == '111') { + 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_connect_errno() == '111') { // server is not available if($try > 9) { if(isset($app) && isset($app->forceErrorExit)) { @@ -208,7 +285,7 @@ class db } if($try > 9) { - $this->_sqlerror('DB::query -> reconnect', '', true); + $this->_sqlerror('db::_query -> reconnect', '', true); return false; } else { sleep(($try > 7 ? 5 : 1)); @@ -222,7 +299,7 @@ class db $aArgs = func_get_args(); $sQuery = call_user_func_array(array(&$this, '_build_query_string'), $aArgs); - + $this->securityScan($sQuery); $this->_iQueryId = mysqli_query($this->_iConnId, $sQuery); if (!$this->_iQueryId) { $this->_sqlerror('Falsche Anfrage / Wrong Query', 'SQL-Query = ' . $sQuery); @@ -369,13 +446,14 @@ class db * @return int id of last inserted row or 0 if none */ public function insert_id() { - $iRes = mysqli_query($this->_iConnId, 'SELECT LAST_INSERT_ID() as `newid`'); - if(!is_object($iRes)) return false; - - $aReturn = mysqli_fetch_assoc($iRes); - mysqli_free_result($iRes); - - return $aReturn['newid']; + $oResult = $this->query('SELECT LAST_INSERT_ID() as `newid`'); + if(!$oResult) { + $this->_sqlerror('Unable to select last_insert_id()'); + return false; + } + $aReturn = $oResult->get(); + $oResult->free(); + return isset($aReturn['newid']) ? $aReturn['newid'] : 0; } @@ -465,8 +543,13 @@ class db private function _sqlerror($sErrormsg = 'Unbekannter Fehler', $sAddMsg = '', $bNoLog = false) { global $app, $conf; - $mysql_error = (is_object($this->_iConnId) ? mysqli_error($this->_iConnId) : mysqli_connect_error()); - $mysql_errno = (is_object($this->_iConnId) ? mysqli_errno($this->_iConnId) : mysqli_connect_errno()); + $mysql_errno = mysqli_connect_errno(); + $mysql_error = mysqli_connect_error(); + if ($mysql_errno === 0 && is_object($this->_iConnId)) { + $mysql_errno = mysqli_errno($this->_iConnId); + $mysql_error = mysqli_error($this->_iConnId); + } + $this->errorNumber = $mysql_error; $this->errorMessage = $mysql_error; //$sAddMsg .= getDebugBacktrace(); @@ -474,7 +557,7 @@ class db if($this->show_error_messages && $conf['demo_mode'] === false) { echo $sErrormsg . $sAddMsg; } elseif(is_object($app) && method_exists($app, 'log') && $bNoLog == false) { - $app->log($sErrormsg . $sAddMsg . ' -> ' . $mysql_errno . ' (' . $mysql_error . ')', LOGLEVEL_WARN); + $app->log($sErrormsg . $sAddMsg . ' -> ' . $mysql_errno . ' (' . $mysql_error . ')', LOGLEVEL_WARN, false); } elseif(php_sapi_name() == 'cli') { echo $sErrormsg . $sAddMsg; } @@ -510,6 +593,26 @@ class db return $out; } + public function insertFromArray($tablename, $data) { + if(!is_array($data)) return false; + + $k_query = ''; + $v_query = ''; + + $params = array($tablename); + $v_params = array(); + + foreach($data as $key => $value) { + $k_query .= ($k_query != '' ? ', ' : '') . '??'; + $v_query .= ($v_query != '' ? ', ' : '') . '?'; + $params[] = $key; + $v_params[] = $value; + } + + $query = 'INSERT INTO ?? (' . $k_query . ') VALUES (' . $v_query . ')'; + return $this->query($query, true, array_merge($params, $v_params)); + } + public function diffrec($record_old, $record_new) { $diffrec_full = array(); $diff_num = 0; @@ -550,34 +653,35 @@ class db * @param string $database_name * @return int - database-size in bytes */ + public function getDatabaseSize($database_name) { + global $app, $conf; + static $db=null; + if ( ! $db ) { + $clientdb_host = ($conf['db_host']) ? $conf['db_host'] : NULL; + $clientdb_user = ($conf['db_user']) ? $conf['db_user'] : NULL; + $clientdb_password = ($conf['db_password']) ? $conf['db_password'] : NULL; + $clientdb_port = ((int)$conf['db_port']) ? (int)$conf['db_port'] : NULL; + $clientdb_flags = ($conf['db_flags'] !== NULL) ? $conf['db_flags'] : NULL; - public function getDatabaseSize($database_name) { - global $app; - - include 'lib/mysql_clientdb.conf'; - - /* Connect to the database */ - $link = mysqli_connect($clientdb_host, $clientdb_user, $clientdb_password); - if (!$link) { - $app->log('Unable to connect to the database'.mysqli_connect_error(), LOGLEVEL_DEBUG); - return; + require_once 'lib/mysql_clientdb.conf'; + + $db = new db($clientdb_host, $clientdb_user, $clientdb_password, NULL, $clientdb_port, $clientdb_flags); } - - /* Get database-size from information_schema */ - $result = mysqli_query($link, "SELECT SUM(data_length+index_length) FROM information_schema.TABLES WHERE table_schema='".mysqli_real_escape_string($link, $database_name)."'"); + + $result = $db->_query("SELECT SUM(data_length+index_length) FROM information_schema.TABLES WHERE table_schema='".$db->escape($database_name)."'"); if(!$result) { - $app->log('Unable to get the database-size for ' . $database_name . ': '.mysqli_error($link), LOGLEVEL_DEBUG); + $db->_sqlerror('Unable to determine the size of database ' . $database_name); return; } - $database_size = mysqli_fetch_row($result); - mysqli_close($link); - return $database_size[0]; + $database_size = $result->getAsRow(); + $result->free(); + return $database_size[0] ? $database_size[0] : 0; } //** Function to fill the datalog with a full differential record. public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new, $force_update = false) { - global $app, $conf; + global $app; // Insert backticks only for incomplete table names. if(stristr($db_table, '.')) { @@ -626,6 +730,10 @@ class db public function datalogInsert($tablename, $insert_data, $index_field) { global $app; + // Check fields + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + if(is_array($insert_data)) { $key_str = ''; $val_str = ''; @@ -661,6 +769,10 @@ class db public function datalogUpdate($tablename, $update_data, $index_field, $index_value, $force_update = false) { global $app; + // Check fields + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + $old_rec = $this->queryOneRecord("SELECT * FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); if(is_array($update_data)) { @@ -692,6 +804,10 @@ class db public function datalogDelete($tablename, $index_field, $index_value) { global $app; + // Check fields + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + $old_rec = $this->queryOneRecord("SELECT * FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); $this->query("DELETE FROM ?? WHERE ?? = ?", $tablename, $index_field, $index_value); $new_rec = array(); @@ -709,6 +825,26 @@ class db return true; } + //* get the current datalog status for the specified login (or currently logged in user) + public function datalogStatus($login = '') { + global $app; + + $return = array('count' => 0, 'entries' => array()); + + if($login == '' && isset($_SESSION['s']['user'])) { + $login = $_SESSION['s']['user']['username']; + } + + $result = $this->queryAllRecords("SELECT COUNT( * ) AS cnt, sys_datalog.action, sys_datalog.dbtable FROM sys_datalog, server WHERE server.server_id = sys_datalog.server_id AND sys_datalog.user = ? AND sys_datalog.datalog_id > server.updated GROUP BY sys_datalog.dbtable, sys_datalog.action", $login); + foreach($result as $row) { + if(!$row['dbtable'] || in_array($row['dbtable'], array('aps_instances', 'aps_instances_settings', 'mail_access', 'mail_content_filter'))) continue; // ignore some entries, maybe more to come + $return['entries'][] = array('table' => $row['dbtable'], 'action' => $row['action'], 'count' => $row['cnt'], 'text' => $app->lng('datalog_status_' . $row['action'] . '_' . $row['dbtable'])); $return['count'] += $row['cnt']; + } + unset($result); + + return $return; + } + public function freeResult($query) { @@ -839,10 +975,10 @@ class db function tableInfo($table_name) { - global $go_api, $go_info; + global $go_api, $go_info, $app; // Tabellenfelder einlesen - if($rows = $go_api->db->queryAllRecords('SHOW FIELDS FROM ??', $table_name)){ + if($rows = $app->db->queryAllRecords('SHOW FIELDS FROM ??', $table_name)){ foreach($rows as $row) { $name = $row['Field']; $default = $row['Default']; @@ -944,7 +1080,7 @@ class db return 'char'; break; case 'varchar': - if($typeValue < 1) die('Database failure: Lenght required for these data types.'); + if($typeValue < 1) die('Database failure: Length required for these data types.'); return 'varchar('.$typeValue.')'; break; case 'text': @@ -953,6 +1089,9 @@ class db case 'blob': return 'blob'; break; + case 'date': + return 'date'; + break; } } diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 12e43a9d5bd3581d05ffbd5699dbb1add26c6567..4f681cc4852e5ed1b08ee6ec05f0769b4883f2c1 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -275,7 +275,16 @@ class letsencrypt { $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_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain $cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme"; + $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); } } else { diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 577fd4eb2bdb6d66026d3b482410e4f9fe6817b4..04f654ccde7a6deb2548a163cf80ff8c90cf067f 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -87,6 +87,10 @@ class monitor_tools { $mainver = $ver; } switch ($mainver){ + case "18.04": + $relname = "(Bionic Beaver)"; + $distconfid = 'ubuntu1804'; + break; case "17.10": $relname = "(Artful Aardvark)"; $distconfid = 'ubuntu1710'; @@ -811,7 +815,8 @@ class monitor_tools { $mailSubject = ''; $inHeader = true; for($l = 0; $l < count($lines); $l++) { - if(trim($lines[$l]) == '') { + /* Trim only in headers */ + if($inHeader && trim($lines[$l]) == '') { $inHeader = false; continue; } diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index e085c28a947804a22ad3e0c0b97fd6ecf41c3017..339401e6876d4d0822dcd9947b4cacc057caba82 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -248,60 +248,53 @@ class web_module { return $retval; } - function restartPHP_FPM($action = 'restart') { - global $app, $conf; + function restartPHP_FPM($action = 'restart') + { + global $app, $conf; - // load the server configuration options - $app->uses('getconf,system'); - $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + // load the server configuration options + $app->uses('getconf,system'); + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - list($action, $init_script) = explode(':', $action); + list($action, $init_script) = explode(':', $action); - if(!$init_script){ - //$init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script']; - $initcommand = $app->system->getinitcommand($web_config['php_fpm_init_script'], $action); - } else { - $path_parts = pathinfo($init_script); - $initcommand = $app->system->getinitcommand($path_parts['basename'], $action, $path_parts['dirname']); - - if($action == 'reload' && $init_script == $conf['init_scripts'].'/'.$web_config['php_fpm_init_script']) { - // we have to do a workaround because of buggy ubuntu fpm reload handling - // @see: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 - if(file_exists('/etc/os-release')) { - $tmp = file_get_contents('/etc/os-release'); - //if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) { - if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp) && stristr(phpversion(), 'deb.sury.org') === false) { - $initcommand = '/sbin/start-stop-daemon --stop --signal USR2 --quiet --pidfile /var/run/php5-fpm.pid --name php5-fpm'; - } - // And the next workaround, php-fpm reloads in centos 7 downt work as well. - /* - if(preg_match('/^ID=centos/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) { - $initcommand = 'systemctl restart php-fpm.service'; - } - */ - unset($tmp); - } - } - /* - if($action == 'reload') { - // And the next workaround, php-fpm reloads in centos 7 downt work as well. - if(file_exists('/etc/os-release')) { - $tmp = file_get_contents('/etc/os-release'); - // And the next workaround, php-fpm reloads in centos 7 downt work as well. - if(preg_match('/^ID="centos"/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) { - $initcommand = 'systemctl restart php-fpm.service'; - } - unset($tmp); - } - } - */ - } + if (!$init_script) { + $initcommand = $app->system->getinitcommand($web_config['php_fpm_init_script'], $action); + } else { + $path_parts = pathinfo($init_script); - $retval = array('output' => '', 'retval' => 0); - exec($initcommand.' 2>&1', $retval['output'], $retval['retval']); - $app->log("Restarting php-fpm: $initcommand", LOGLEVEL_DEBUG); - return $retval; - } + if (is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')) { + passthru('systemctl is-active ' . $init_script, $fpmstatus); + + if ($fpmstatus !== "active") { + $action = 'restart'; + $app->log('FPM Process ' . $init_script . ' seems to be not running', LOGLEVEL_DEBUG); + } else { + $app->log('FPM Process ' . $init_script . ' is running', LOGLEVEL_DEBUG); + } + } + + $initcommand = $app->system->getinitcommand($path_parts['basename'], $action, $path_parts['dirname']); + + if ($action == 'reload' && $init_script == $conf['init_scripts'] . '/' . $web_config['php_fpm_init_script']) { + + if (file_exists('/etc/os-release')) { + $tmp = file_get_contents('/etc/os-release'); + if (preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp) && stristr(phpversion(), 'deb.sury.org') === false) { + $initcommand = '/sbin/start-stop-daemon --stop --signal USR2 --quiet --pidfile /var/run/php5-fpm.pid --name php5-fpm'; + } + unset($tmp); + } + } + } + + + $retval = array('output' => '', 'retval' => 0); + exec($initcommand . ' 2>&1', $retval['output'], $retval['retval']); + $app->log("Restarting php-fpm: $initcommand", LOGLEVEL_DEBUG); + + return $retval; + } } // end class diff --git a/server/mods-available/xmpp_module.inc.php b/server/mods-available/xmpp_module.inc.php index aace2567d6bd29f7945526ea1c1a3b36d2646343..f24f349aed37ee1e4596c637d4d064236f320ef9 100644 --- a/server/mods-available/xmpp_module.inc.php +++ b/server/mods-available/xmpp_module.inc.php @@ -79,8 +79,9 @@ class xmpp_module { */ $app->modules->registerTableHook('xmpp_domain', 'xmpp_module', 'process'); - $app->services->registerService('metronome', 'xmpp_module', 'reloadXMPP'); - $app->services->registerService('metronome', 'xmpp_module', 'restartXMPP'); + $app->modules->registerTableHook('xmpp_user', 'xmpp_module', 'process'); + $app->services->registerService('xmpp', 'xmpp_module', 'reloadXMPP'); + $app->services->registerService('xmpp', 'xmpp_module', 'restartXMPP'); } @@ -113,7 +114,8 @@ class xmpp_module { // load the server configuration options $app->uses('getconf,system'); - $daemon = 'metronome'; + $xmpp_config = $app->getconf->get_server_config($conf['server_id'], 'xmpp'); + $daemon = $xmpp_config['xmpp_daemon']; $retval = array('output' => '', 'retval' => 0); if($action == 'restart') { diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index e7718b0c1c855e060f9cbe7dc2818b61f6632b4f..bb4d7fdd75de03cfc3ac6f52271ce0f6d748e399 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -73,6 +73,9 @@ class apache2_plugin { $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'); + + $app->plugins->registerEvent('server_insert', $this->plugin_name, 'server_ip'); + $app->plugins->registerEvent('server_update', $this->plugin_name, 'server_ip'); $app->plugins->registerEvent('webdav_user_insert', $this->plugin_name, 'webdav'); $app->plugins->registerEvent('webdav_user_update', $this->plugin_name, 'webdav'); @@ -264,7 +267,7 @@ class apache2_plugin { 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')) $app->system->mkdirpath($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'; $domain = ($data['new']['ssl_domain'] != '') ? $data['new']['ssl_domain'] : $data['new']['domain']; @@ -394,6 +397,26 @@ class apache2_plugin { $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); } } + + //* and check that SSL cert does not contain subdomain of domain acme.invalid + if($data["new"]["ssl_action"] == 'save') { + $tmp = array(); + $crt_data = ''; + exec('openssl x509 -noout -text -in '.escapeshellarg($crt_file),$tmp); + $crt_data = implode("\n",$tmp); + if(stristr($crt_data,'.acme.invalid')) { + $data["new"]["ssl_action"] = ''; + + $app->log('SSL Certificate not saved. The SSL cert contains domain acme.invalid.', LOGLEVEL_WARN); + $app->dbmaster->datalogError('SSL Certificate not saved. The SSL cert contains domain acme.invalid.'); + + /* Update the DB of the (local) Server */ + $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + + /* Update also the master-DB of the Server-Farm */ + $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + } + } //* Save a SSL certificate to disk if($data["new"]["ssl_action"] == 'save') { @@ -457,11 +480,11 @@ class apache2_plugin { $app->system->unlink($crt_file); $app->system->unlink($bundle_file); /* Update the DB of the (local) Server */ - $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ?", $data['new']['domain']); - $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); + $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); /* Update also the master-DB of the Server-Farm */ - $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ?", $data['new']['domain']); - $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); + $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); $app->log('Deleting SSL Cert for: '.$domain, LOGLEVEL_DEBUG); } @@ -681,10 +704,10 @@ class apache2_plugin { $fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; if($web_config['network_filesystem'] == 'y') { - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nofail,_netdev 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } else { - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait 0 0'; + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nofail 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } @@ -699,7 +722,7 @@ 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(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); + 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'); @@ -985,8 +1008,10 @@ class apache2_plugin { $app->system->chgrp($data['new']['document_root'].'/web', $groupname); $app->system->chown($data['new']['document_root'].'/web/error', $username); $app->system->chgrp($data['new']['document_root'].'/web/error', $groupname); - $app->system->chown($data['new']['document_root'].'/web/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/web/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + } $app->system->chown($data['new']['document_root'].'/webdav', $username); $app->system->chgrp($data['new']['document_root'].'/webdav', $groupname); $app->system->chown($data['new']['document_root'].'/private', $username); @@ -1026,8 +1051,10 @@ class apache2_plugin { $app->system->chgrp($data['new']['document_root'].'/web', $groupname); $app->system->chown($data['new']['document_root'].'/web/error', $username); $app->system->chgrp($data['new']['document_root'].'/web/error', $groupname); - $app->system->chown($data['new']['document_root'].'/web/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/web/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + } $app->system->chown($data['new']['document_root'].'/webdav', $username); $app->system->chgrp($data['new']['document_root'].'/webdav', $groupname); } @@ -1040,16 +1067,20 @@ class apache2_plugin { $app->system->chgrp($data['new']['document_root'].'/' . $web_folder, $groupname); $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/error', $username); $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/error', $groupname); - $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + } } else { $app->system->chmod($data['new']['document_root'].'/' . $web_folder, 0755); $app->system->chown($data['new']['document_root'].'/' . $web_folder, $username); $app->system->chgrp($data['new']['document_root'].'/' . $web_folder, $groupname); $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/error', $username); $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/error', $groupname); - $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + } } } @@ -1132,6 +1163,7 @@ class apache2_plugin { $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['logging'] = $web_config['logging']; // Custom Apache directives if(intval($data['new']['directive_snippets_id']) > 0){ @@ -1167,7 +1199,7 @@ class apache2_plugin { $vhost_data['ssl_bundle_file'] = $bundle_file; //* Generate Let's Encrypt SSL certificat - if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y' && ( // ssl and let's encrypt is active + if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y' && $conf['mirror_server_id'] == 0 && ( // ssl and let's encrypt is active and no mirror server ($data['old']['ssl'] == 'n' || $data['old']['ssl_letsencrypt'] == 'n') // we have new let's encrypt configuration || ($data['old']['domain'] != $data['new']['domain']) // we have domain update || ($data['old']['subdomain'] != $data['new']['subdomain']) // we have new or update on "auto" subdomain @@ -1189,12 +1221,23 @@ class apache2_plugin { /* Update the DB of the (local) Server */ $app->db->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); /* Update also the master-DB of the Server-Farm */ - $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); - } + $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; + // HTTP/2.0 ? + $vhost_data['enable_http2'] = 'n'; + if($vhost_data['enable_spdy'] == 'y'){ + // check if apache supports http_v2 + exec("2>&1 apachectl -M | grep http2_module", $tmp_output, $tmp_retval); + if($tmp_retval == 0){ + $vhost_data['enable_http2'] = 'y'; + } + unset($tmp_output, $tmp_retval); + } + // Set SEO Redirect if($data['new']['seo_redirect'] != ''){ $vhost_data['seo_redirect_enabled'] = 1; @@ -1415,7 +1458,11 @@ class apache2_plugin { //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']); - $app->system->chmod($fastcgi_starter_path, 0550); + if($web_config['security_level'] == 10) { + $app->system->chmod($fastcgi_starter_path, 0755); + } else { + $app->system->chmod($fastcgi_starter_path, 0550); + } $fcgi_tpl = new tpl(); $fcgi_tpl->newTemplate('php-fcgi-starter.master'); @@ -1459,7 +1506,11 @@ class apache2_plugin { $app->log('Creating fastcgi starter script: '.$fcgi_starter_script, LOGLEVEL_DEBUG); - $app->system->chmod($fcgi_starter_script, 0550); + if($web_config['security_level'] == 10) { + $app->system->chmod($fcgi_starter_script, 0755); + } else { + $app->system->chmod($fcgi_starter_script, 0550); + } $app->system->chown($fcgi_starter_script, $data['new']['system_user']); $app->system->chgrp($fcgi_starter_script, $data['new']['system_group']); @@ -1552,7 +1603,11 @@ class apache2_plugin { $app->system->mkdirpath($cgi_starter_path); $app->system->chown($cgi_starter_path, $data['new']['system_user']); $app->system->chgrp($cgi_starter_path, $data['new']['system_group']); - $app->system->chmod($cgi_starter_path, 0550); + if($web_config['security_level'] == 10) { + $app->system->chmod($cgi_starter_path, 0755); + } else { + $app->system->chmod($cgi_starter_path, 0550); + } $app->log('Creating cgi starter script directory: '.$cgi_starter_path, LOGLEVEL_DEBUG); } @@ -1586,7 +1641,11 @@ class apache2_plugin { $app->log('Creating cgi starter script: '.$cgi_starter_script, LOGLEVEL_DEBUG); - $app->system->chmod($cgi_starter_script, 0550); + if($web_config['security_level'] == 10) { + $app->system->chmod($cgi_starter_script, 0755); + } else { + $app->system->chmod($cgi_starter_script, 0550); + } $app->system->chown($cgi_starter_script, $data['new']['system_user']); $app->system->chgrp($cgi_starter_script, $data['new']['system_group']); @@ -2185,7 +2244,7 @@ class apache2_plugin { if($data['old']['type'] != 'vhost') $app->system->web_folder_protection($data['old']['document_root'], true); } - //* This function is called when a IP on the server is inserted, updated or deleted + //* This function is called when a IP on the server is inserted, updated or deleted or when anon_ip setting is altered function server_ip($event_name, $data) { global $app, $conf; @@ -2198,6 +2257,7 @@ class apache2_plugin { $tpl = new tpl(); $tpl->newTemplate('apache_ispconfig.conf.master'); $tpl->setVar('apache_version', $app->system->getapacheversion()); + $tpl->setVar('logging', $web_config['logging']); $tpl->setVar('apache_full_version', $app->system->getapacheversion(true)); $records = $app->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ? AND virtualhost = 'y'", $conf['server_id']); @@ -2753,9 +2813,9 @@ class apache2_plugin { $output .= "BrowserMatch MSIE AuthDigestEnableQueryStringHack=On\n"; $output .= "AuthType Digest\n"; if($fn != '' && $fn != '/') { - $output .= " AuthName \"" . $fn . "\"\n"; + $output .= "AuthName \"" . $fn . "\"\n"; } else { - $output .= " AuthName \"Restricted Area\"\n"; + $output .= "AuthName \"Restricted Area\"\n"; } $output .= "AuthUserFile $webdavRoot/$file\n"; $output .= "Require valid-user\n"; diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index cf01df692d315540b7190779f289b04d728f1d14..b843e3c8a4e45f86adedf8106207d79e1c4b586f 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -169,7 +169,12 @@ class apps_vhost_plugin { //$content = str_replace('{fpm_port}', $web_config['php_fpm_start_port']+1, $content); $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{cgi_socket}', $cgi_socket, $content); - if(file_exists('/var/run/php5-fpm.sock') || file_exists('/var/run/php/php7.0-fpm.sock')){ + if( file_exists('/var/run/php5-fpm.sock') + || file_exists('/var/run/php/php7.0-fpm.sock') + || 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') + ){ $use_tcp = '#'; $use_socket = ''; } else { @@ -178,6 +183,11 @@ class apps_vhost_plugin { } $content = str_replace('{use_tcp}', $use_tcp, $content); $content = str_replace('{use_socket}', $use_socket, $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); // PHP-FPM // Dont just copy over the php-fpm pool template but add some custom settings diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 6d89eb6ac26e48a5d4398eff56062aec2286aeba..12f58c1f1b7046c748b36ec52781426c4a2b2adf 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -70,7 +70,7 @@ class backup_plugin { $app->uses('ini_parser,file,getconf,system'); - $web = $app->dbmaster->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $backup['parent_domain_id']); + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $backup['parent_domain_id']); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); $backup_dir = trim($server_config['backup_dir']); if($backup_dir == '') return; @@ -170,7 +170,7 @@ class backup_plugin { $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; $app->db->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql); + if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']); $app->log('unlink '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); } } @@ -296,7 +296,7 @@ class backup_plugin { unlink($mail_backup_file); $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; $app->db->query($sql, $conf['server_id'], $mail_backup['parent_domain_id'], $mail_backup['filename']); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql); + if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $mail_backup['parent_domain_id'], $mail_backup['filename']); $app->log('unlink '.$backup_dir.'/'.$mail_backup['filename'], LOGLEVEL_DEBUG); } } diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index f0415d7f644817b06a3d2f176e26db433fcae4ef..fb623b9213e436a916ab4c3ebc2ce59efe839417 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -237,7 +237,7 @@ class cron_plugin { $command .= "\t{$this->parent_domain['system_user']}"; //* running as user if($job['type'] == 'url') { - $command .= "\t{$cron_config['wget']} --user-agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0' -q -t 1 -T 7200 -O " . $log_wget_target . " " . escapeshellarg($job['command']) . " " . $log_target; + $command .= "\t{$cron_config['wget']} --no-check-certificate --user-agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0' -q -t 1 -T 7200 -O " . $log_wget_target . " " . escapeshellarg($job['command']) . " " . $log_target; } else { if(strpos($job['command'], "\n") !== false || strpos($job['command'], "\r") !== false || strpos($job['command'], chr(0)) !== false) { $app->log("Insecure Cron job SKIPPED: " . $job['command'], LOGLEVEL_WARN); diff --git a/server/plugins-available/getmail_plugin.inc.php b/server/plugins-available/getmail_plugin.inc.php index 5b1edfbab97c6c44f9040005d4c2881ec546e867..6df1368d536e20cf6b737b8723565efc3b6732ef 100644 --- a/server/plugins-available/getmail_plugin.inc.php +++ b/server/plugins-available/getmail_plugin.inc.php @@ -113,7 +113,7 @@ class getmail_plugin { $tpl = str_replace('{DELETE}', 'false', $tpl); } - if($data["new"]["read_all"] == 'y') { + if($data["new"]["source_read_all"] == 'y') { $tpl = str_replace('{READ_ALL}', 'true', $tpl); } else { $tpl = str_replace('{READ_ALL}', 'false', $tpl); diff --git a/server/plugins-available/mailman_plugin.inc.php b/server/plugins-available/mailman_plugin.inc.php index 393f8a72e354f4f9c99bea98db102cf3136d7e4f..99ac9db7d23d8add4c1a0f5d94f447c265e282b9 100644 --- a/server/plugins-available/mailman_plugin.inc.php +++ b/server/plugins-available/mailman_plugin.inc.php @@ -89,6 +89,9 @@ class mailman_plugin { if(is_file('/var/lib/mailman/data/transport-mailman')) exec('postmap /var/lib/mailman/data/transport-mailman'); 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->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ?", $data["new"]['mailinglist_id']); diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index 35ade14c45a9c095a6c1629ed3ebfcaa1a09e3df..14052e5b7078747e415ff2568d7c3c5662c72340 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -504,7 +504,7 @@ class mysql_clientdb_plugin { $app->log('User root not allowed for Client databases', LOGLEVEL_WARNING); } else { // Find out users to drop and users to revoke - $drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_user_id'], $old_host_list); + $drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_ro_user_id'], $old_host_list); if($drop_or_revoke_user['drop_hosts'] != '') $this->process_host_list('DROP', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['drop_hosts'], $link); if($drop_or_revoke_user['revoke_hosts'] != '') $this->process_host_list('REVOKE', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['revoke_hosts'], $link); } @@ -580,7 +580,7 @@ class mysql_clientdb_plugin { $app->log('User root not allowed for Client databases', LOGLEVEL_WARNING); } else { // Find out users to drop and users to revoke - $drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_user_id'], $data['old']['remote_ips']); + $drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_ro_user_id'], $data['old']['remote_ips']); if($drop_or_revoke_user['drop_hosts'] != '') $this->process_host_list('DROP', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['drop_hosts'], $link); if($drop_or_revoke_user['revoke_hosts'] != '') $this->process_host_list('REVOKE', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['revoke_hosts'], $link); } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 477eeaace0d54f261b2ef5f3a31464fccb944556..c1c71ac61583fc25a457e8637274317dcb9efd35 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -106,7 +106,7 @@ class nginx_plugin { 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')) $app->system->mkdirpath($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'; $domain = ($data['new']['ssl_domain'] != '') ? $data['new']['ssl_domain'] : $data['new']['domain']; @@ -235,6 +235,26 @@ class nginx_plugin { $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); } } + + //* and check that SSL cert does not contain subdomain of domain acme.invalid + if($data["new"]["ssl_action"] == 'save') { + $tmp = array(); + $crt_data = ''; + exec('openssl x509 -noout -text -in '.escapeshellarg($crt_file),$tmp); + $crt_data = implode("\n",$tmp); + if(stristr($crt_data,'.acme.invalid')) { + $data["new"]["ssl_action"] = ''; + + $app->log('SSL Certificate not saved. The SSL cert contains domain acme.invalid.', LOGLEVEL_WARN); + $app->dbmaster->datalogError('SSL Certificate not saved. The SSL cert contains domain acme.invalid.'); + + /* Update the DB of the (local) Server */ + $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + + /* Update also the master-DB of the Server-Farm */ + $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + } + } //* Save a SSL certificate to disk if($data["new"]["ssl_action"] == 'save') { @@ -289,11 +309,11 @@ class nginx_plugin { $app->system->unlink($csr_file); $app->system->unlink($crt_file); /* Update the DB of the (local) Server */ - $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ?", $data['new']['domain']); - $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); + $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); /* Update also the master-DB of the Server-Farm */ - $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ?", $data['new']['domain']); - $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); + $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); + $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ? AND server_id = ?", $data['new']['domain'], $data['new']['server_id']); $app->log('Deleting SSL Cert for: '.$domain, LOGLEVEL_DEBUG); } @@ -528,10 +548,10 @@ class nginx_plugin { $fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; if($web_config['network_filesystem'] == 'y') { - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nofail,_netdev 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } else { - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait 0 0'; + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nofail 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } @@ -546,7 +566,7 @@ 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(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); + 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'); @@ -833,8 +853,10 @@ class nginx_plugin { $app->system->chgrp($data['new']['document_root'].'/web', $groupname); $app->system->chown($data['new']['document_root'].'/web/error', $username); $app->system->chgrp($data['new']['document_root'].'/web/error', $groupname); - $app->system->chown($data['new']['document_root'].'/web/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/web/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + } //$app->system->chown($data['new']['document_root'].'/webdav',$username); //$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname); $app->system->chown($data['new']['document_root'].'/private', $username); @@ -880,8 +902,10 @@ class nginx_plugin { $app->system->chgrp($data['new']['document_root'].'/web', $groupname); $app->system->chown($data['new']['document_root'].'/web/error', $username); $app->system->chgrp($data['new']['document_root'].'/web/error', $groupname); - $app->system->chown($data['new']['document_root'].'/web/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/web/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/web/stats', $groupname); + } //$app->system->chown($data['new']['document_root'].'/webdav',$username); //$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname); @@ -899,16 +923,20 @@ class nginx_plugin { $app->system->chgrp($data['new']['document_root'].'/' . $web_folder, $groupname); $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/error', $username); $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/error', $groupname); - $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + } } else { $app->system->chmod($data['new']['document_root'].'/' . $web_folder, 0755); $app->system->chown($data['new']['document_root'].'/' . $web_folder, $username); $app->system->chgrp($data['new']['document_root'].'/' . $web_folder, $groupname); $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/error', $username); $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/error', $groupname); - $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); - $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + if($data['new']['stats_type'] != '') { + $app->system->chown($data['new']['document_root'].'/' . $web_folder . '/stats', $username); + $app->system->chgrp($data['new']['document_root'].'/' . $web_folder . '/stats', $groupname); + } } } @@ -1004,6 +1032,13 @@ class nginx_plugin { $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; + if($data['new']['php_fpm_chroot'] == 'y'){ + $php_fpm_chroot = 1; + $php_fpm_nochroot = 0; + } else { + $php_fpm_chroot = 0; + $php_fpm_nochroot = 1; + } if($data['new']['php_fpm_use_socket'] == 'y'){ $use_tcp = 0; $use_socket = 1; @@ -1013,6 +1048,8 @@ class nginx_plugin { } $tpl->setVar('use_tcp', $use_tcp); $tpl->setVar('use_socket', $use_socket); + $tpl->setVar('php_fpm_chroot', $php_fpm_chroot); + $tpl->setVar('php_fpm_nochroot', $php_fpm_nochroot); $fpm_socket = $socket_dir.$pool_name.'.sock'; $tpl->setVar('fpm_socket', $fpm_socket); $tpl->setVar('rnd_php_dummy_file', '/'.md5(uniqid(microtime(), 1)).'.htm'); @@ -1129,6 +1166,16 @@ class nginx_plugin { // Custom nginx directives $final_nginx_directives = array(); + if($data['new']['enable_pagespeed'] == 'y'){ + // if PageSpeed is already enabled, don't add configuration again + if(stripos($nginx_directives, 'pagespeed') !== false){ + $vhost_data['enable_pagespeed'] = false; + } else { + $vhost_data['enable_pagespeed'] = true; + } + } else { + $vhost_data['enable_pagespeed'] = false; + } if(intval($data['new']['directive_snippets_id']) > 0){ $snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'nginx' AND active = 'y' AND customer_viewable = 'y'", $data['new']['directive_snippets_id']); if(isset($snippet['snippet'])){ @@ -1136,6 +1183,7 @@ class nginx_plugin { } else { $nginx_directives = $data['new']['nginx_directives']; } +/* if($data['new']['enable_pagespeed'] == 'y'){ // if PageSpeed is already enabled, don't add configuration again if(stripos($nginx_directives, 'pagespeed') !== false){ @@ -1146,9 +1194,10 @@ class nginx_plugin { } else { $vhost_data['enable_pagespeed'] = false; } +*/ } else { $nginx_directives = $data['new']['nginx_directives']; - $vhost_data['enable_pagespeed'] = false; +// $vhost_data['enable_pagespeed'] = false; } // folder_directive_snippets @@ -1238,7 +1287,7 @@ class nginx_plugin { $vhost_data['ssl_bundle_file'] = $bundle_file; //* Generate Let's Encrypt SSL certificat - if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y' && ( // ssl and let's encrypt is active + if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y' && $conf['mirror_server_id'] == 0 && ( // ssl and let's encrypt is active and no mirror server ($data['old']['ssl'] == 'n' || $data['old']['ssl_letsencrypt'] == 'n') // we have new let's encrypt configuration || ($data['old']['domain'] != $data['new']['domain']) // we have domain update || ($data['old']['subdomain'] != $data['new']['subdomain']) // we have new or update on "auto" subdomain @@ -1258,7 +1307,7 @@ class nginx_plugin { $data['new']['ssl_letsencrypt'] = 'n'; if($data['old']['ssl'] == 'n') $data['new']['ssl'] = 'n'; /* Update the DB of the (local) Server */ - $app->db->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); + $app->db->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ? AND `server_id` = ?", $data['new']['ssl'], 'n', $data['new']['domain'], $conf['server_id']); /* Update also the master-DB of the Server-Farm */ $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); } @@ -1484,6 +1533,9 @@ class nginx_plugin { } unset($tmp_output, $tmp_retval); } + + // set logging variable + $vhost_data['logging'] = $web_config['logging']; $tpl->setVar($vhost_data); @@ -1750,8 +1802,19 @@ class nginx_plugin { $tpl->setLoop('alias_seo_redirects', $alias_seo_redirects); } + $stats_web_folder = 'web'; + if($data['new']['type'] == 'vhost'){ + if($data['new']['web_folder'] != ''){ + if(substr($data['new']['web_folder'], 0, 1) == '/') $data['new']['web_folder'] = substr($data['new']['web_folder'],1); + if(substr($data['new']['web_folder'], -1) == '/') $data['new']['web_folder'] = substr($data['new']['web_folder'],0,-1); + } + $stats_web_folder .= '/'.$data['new']['web_folder']; + } elseif($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') { + $stats_web_folder = $data['new']['web_folder']; + } + //* Create basic http auth for website statistics - $tpl->setVar('stats_auth_passwd_file', $data['new']['document_root']."/web/stats/.htpasswd_stats"); + $tpl->setVar('stats_auth_passwd_file', $data['new']['document_root']."/" . $stats_web_folder . "/stats/.htpasswd_stats"); // Create basic http auth for other directories $basic_auth_locations = $this->_create_web_folder_auth_configuration($data['new']); @@ -1819,11 +1882,11 @@ class nginx_plugin { } // create password file for stats directory - if(!is_file($data['new']['document_root'].'/web/stats/.htpasswd_stats') || $data['new']['stats_password'] != $data['old']['stats_password']) { + if(!is_file($data['new']['document_root'].'/' . $stats_web_folder . '/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->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); - $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); + $app->system->file_put_contents($data['new']['document_root'].'/' . $stats_web_folder . '/stats/.htpasswd_stats', $htp_file); + $app->system->chmod($data['new']['document_root'].'/' . $stats_web_folder . '/stats/.htpasswd_stats', 0755); unset($htp_file); } } @@ -2009,7 +2072,14 @@ class nginx_plugin { //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'); } - + + //try umount mysql + if(file_exists($data['old']['document_root'].'/var/run/mysqld')) { + $fstab_line = '/var/run/mysqld ' . $data['old']['document_root'] . '/var/run/mysqld none bind,nobootwait 0 0'; + $app->system->removeLine('/etc/fstab', $fstab_line); + $command = 'umount ' . escapeshellarg($data['old']['document_root']) . '/var/run/mysqld/'; + exec($command); + } // remove letsencrypt if it exists (renew will always fail otherwise) $old_domain = $data['old']['domain']; @@ -2633,6 +2703,11 @@ class nginx_plugin { $tpl = new tpl(); $tpl->newTemplate('php_fpm_pool.conf.master'); + if($data['new']['php_fpm_chroot'] == 'y'){ + $php_fpm_chroot = 1; + } else { + $php_fpm_chroot = 0; + } if($data['new']['php_fpm_use_socket'] == 'y'){ $use_tcp = 0; $use_socket = 1; @@ -2643,6 +2718,7 @@ class nginx_plugin { } $tpl->setVar('use_tcp', $use_tcp); $tpl->setVar('use_socket', $use_socket); + $tpl->setVar('php_fpm_chroot', $php_fpm_chroot); $fpm_socket = $socket_dir.$pool_name.'.sock'; $tpl->setVar('fpm_socket', $fpm_socket); @@ -2682,7 +2758,14 @@ class nginx_plugin { $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']); - $tpl->setVar('php_open_basedir', $php_open_basedir); + if($php_fpm_chroot){ + $document_root = $data['new']['document_root']; + $domain = $data['new']['domain']; + $php_open_basedir = str_replace(":/srv/www/$domain/web",'',$php_open_basedir); + $php_open_basedir = str_replace(":/var/www/$domain/web",'',$php_open_basedir); + $php_open_basedir = str_replace("$document_root",'',$php_open_basedir); + } + $tpl->setVar('php_open_basedir', $php_open_basedir); if($php_open_basedir != ''){ $tpl->setVar('enable_php_open_basedir', ''); } else { @@ -2862,7 +2945,17 @@ class nginx_plugin { return $location; } - private function nginx_merge_locations($vhost_conf){ + private function nginx_merge_locations($vhost_conf) { + global $app, $conf; + + if(preg_match('/##subroot (.+?)\s*##/', $vhost_conf, $subroot)) { + if(!preg_match('/^(?:[a-z0-9\/_-]|\.(?!\.))+$/iD', $subroot[1])) { + $app->log('Token ##subroot is unsecure (server ID: '.$conf['server_id'].').', LOGLEVEL_WARN); + } else { + $insert_pos = strpos($vhost_conf, ';', strpos($vhost_conf, 'root ')); + $vhost_conf = substr_replace($vhost_conf, ltrim($subroot[1], '/'), $insert_pos, 0); + } + } $lines = explode("\n", $vhost_conf); diff --git a/server/plugins-available/php_fpm_jailkit_plugin.inc.php b/server/plugins-available/php_fpm_jailkit_plugin.inc.php new file mode 100755 index 0000000000000000000000000000000000000000..e5ab5c45ebe85f9e32f08df2844cd3da5d649970 --- /dev/null +++ b/server/plugins-available/php_fpm_jailkit_plugin.inc.php @@ -0,0 +1,310 @@ +plugins->registerEvent('web_domain_insert', $this->plugin_name, 'insert'); + $app->plugins->registerEvent('web_domain_update', $this->plugin_name, 'update'); + $app->plugins->registerEvent('web_domain_delete', $this->plugin_name, 'delete'); + + } + + //* This function is called, when a website is inserted in the database + function insert($event_name, $data) { + global $app, $conf; + + $this->action = 'insert'; + // just run the update function + $this->update($event_name, $data); + + } + + //* This function is called, when a website is updated in the database + function update($event_name, $data) + { + global $app, $conf; + + if ($data["new"]["php_fpm_chroot"] != 'y') { + if ($this->action == 'update' && $data['old']['document_root'] != '' && $data['new']['document_root'] != $data['old']['document_root']) { + $this->remove_old_mount_mysql($data); + } + return 0; + } + if( file_exists("/var/run/mysqld")) { + if ($this->action == 'update' && $data['old']['document_root'] != '' && $data['new']['document_root'] != $data['old']['document_root']) { + $this->remove_old_mount_mysql($data); + } + + $fstab_line = '/var/run/mysqld ' . $data['new']['document_root'] . '/var/run/mysqld none bind,nobootwait 0 0'; + $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 0, 1); + + $command = 'mount --bind /var/run/mysqld ' . escapeshellarg($data['new']['document_root']) . '/var/run/mysqld/'; + exec($command); + } + + $this->parent_domain = $data["new"]; + $parent_domain = $data["new"]; + if(!$app->system->is_allowed_user($parent_domain['system_user'], true, true) + || !$app->system->is_allowed_group($parent_domain['system_group'], true, true)) { + $app->log("Websites cannot be owned by the root user or group.", LOGLEVEL_WARN); + return false; + } + + $app->uses('system'); + + + if($app->system->is_user($parent_domain['system_user'])) { + + /** + * Setup Jailkit Chroot System If Enabled + */ + + $app->log("Jailkit Plugin (PHP-FPM Chroot) -> setting up jail", LOGLEVEL_DEBUG); + // 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->_update_website_security_level(); + + $app->system->web_folder_protection($parent_domain['document_root'], false); + + $this->_setup_jailkit_chroot(); + $this->_add_jailkit_user(); + + $this->_update_website_security_level(); + $app->system->web_folder_protection($parent_domain['document_root'], true); + + + $app->log("Jailkit Plugin (PHP-FPM Chroot) -> update username:".$parent_domain['system_user'], LOGLEVEL_DEBUG); + + } else { + $app->log("Jailkit Plugin (PHP-FPM Chroot) -> update username:".$parent_domain['system_user']." skipped, the user does not exist.", LOGLEVEL_WARN); + } + } + + function remove_old_mount_mysql($data){ + global $app, $conf; + + if(!file_exists("/var/run/mysqld")){ + return; + } + $fstab_line = '/var/run/mysqld ' . $data['old']['document_root'] . '/var/run/mysqld none bind,nobootwait 0 0'; + + $app->system->removeLine('/etc/fstab', $fstab_line); + + $command = 'umount '.escapeshellarg($data['old']['document_root']).'/var/run/mysqld/'; + exec($command); + } + + //* This function is called, when a website is deleted in the database + function delete($event_name, $data) { + global $app, $conf; + + $this->remove_old_mount_mysql($data); + } + + function _setup_jailkit_chroot() + { + global $app; + + //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); + + //$this->_add_jailkit_programs(); // done later on + + $this->app->load('tpl'); + + $tpl = new tpl(); + $tpl->newTemplate("bash.bashrc.master"); + + $tpl->setVar('jailkit_chroot', true); + $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'; + if(@is_file($bashrc) || @is_link($bashrc)) unlink($bashrc); + + $app->system->file_put_contents($bashrc, $tpl->grab()); + unset($tpl); + + $this->app->log('Added bashrc script: '.$bashrc, LOGLEVEL_DEBUG); + + $tpl = new tpl(); + $tpl->newTemplate('motd.master'); + + $tpl->setVar('domain', $this->parent_domain['domain']); + + $motd = escapeshellcmd($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()); + + } + $this->_add_jailkit_programs(); + } + + function _add_jailkit_programs() + { + global $app; + + //copy over further programs and its libraries + $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); + } + } + } + +// $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); + } + + function _add_jailkit_user() + { + global $app; + + //add the user to the chroot + $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'); + + // 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->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'])); + + } + + function _get_home_dir($username) + { + return str_replace("[username]", escapeshellcmd($username), $this->jailkit_config["jailkit_chroot_home"]); + } + + //* Update the website root directory permissions depending on the security level + function _update_website_security_level() { + global $app, $conf; + + // load the server configuration options + $app->uses("getconf"); + $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); + + $web = $this->parent_domain['new']; + + //* If the security level is set to high + if($web_config['security_level'] == 20 && is_array($web)) { + $app->system->web_folder_protection($web["document_root"], false); + $app->system->chmod($web["document_root"], 0755); + $app->system->chown($web["document_root"], 'root'); + $app->system->chgrp($web["document_root"], 'root'); + $app->system->web_folder_protection($web["document_root"], true); + } + } + + //* 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/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 74c6fa364f77611c77096ef7b53570690e1c00c1..9c4568901deef3e73b8051929ca94247070e6fd2 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -226,6 +226,9 @@ class shelluser_base_plugin { $homedir_old = $data['old']['dir'].'/home/'.$data['old']['username']; } + $app->log("Homedir New: ".$homedir, LOGLEVEL_DEBUG); + $app->log("Homedir Old: ".$homedir_old, LOGLEVEL_DEBUG); + // Check if the user that we want to update exists, if not, we insert it if($app->system->is_user($data['old']['username'])) { //* Remove webfolder protection @@ -246,16 +249,27 @@ class shelluser_base_plugin { $app->log("Executed command: $command ",LOGLEVEL_DEBUG); */ //$groupinfo = $app->system->posix_getgrnam($data['new']['pgroup']); - if($homedir != $homedir_old && !is_dir($homedir)){ + if($homedir != $homedir_old){ $app->system->web_folder_protection($web['document_root'], false); - if(!is_dir($data['new']['dir'].'/home')){ + // 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')); + } + /*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'); + $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->web_folder_protection($web['document_root'], true); } else { if(!is_dir($homedir)){ diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index 69a041c037e4c2f96907ae2bd58b3ff8c09ee287..9a29a10a6fcc7da9c6cedaee82af41cc60070369 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -350,6 +350,11 @@ class shelluser_jailkit_plugin { //add the user to the chroot $jailkit_chroot_userhome = $this->_get_home_dir($this->data['new']['username']); + if(isset($this->data['old']['username'])) { + $jailkit_chroot_userhome_old = $this->_get_home_dir($this->data['old']['username']); + } else { + $jailkit_chroot_userhome_old = ''; + } $jailkit_chroot_puserhome = $this->_get_home_dir($this->data['new']['puser']); if(!is_dir($this->data['new']['dir'].'/etc')) mkdir($this->data['new']['dir'].'/etc', 0755); @@ -394,17 +399,23 @@ class shelluser_jailkit_plugin { if($this->data['new']['active'] != 'y') $shell = '/bin/false'; $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_userhome, '/usr/sbin/jk_chrootsh'); + $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)) mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), 0755, true); + 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)); + } else { + mkdir(escapeshellcmd($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']); $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), 0755, true); + 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']); diff --git a/server/plugins-available/website_symlink_plugin.inc.php b/server/plugins-available/website_symlink_plugin.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..a17732c5e4abcceb1ecdc96f73f98387d0e21c63 --- /dev/null +++ b/server/plugins-available/website_symlink_plugin.inc.php @@ -0,0 +1,80 @@ + ../../web + */ +class website_symlink_plugin { + + var $plugin_name = 'website_symlink_plugin'; + var $class_name = 'website_symlink_plugin'; + + public function onInstall() { + global $conf; + + // Enable the following code section to activate the plugin automatically at install time + /* + if ($conf['services']['web'] == true) { + return true; + } + */ + + return false; + } + + public function onLoad() { + global $app; + + $app->plugins->registerEvent('web_domain_insert', $this->plugin_name, 'createSymlinkForWebDomain'); + $app->plugins->registerEvent('web_domain_update', $this->plugin_name, 'createSymlinkForWebDomain'); + + $app->plugins->registerEvent('shell_user_insert', $this->plugin_name, 'createSymlinkForShellUser'); + $app->plugins->registerEvent('shell_user_update', $this->plugin_name, 'createSymlinkForShellUser'); + } + + public function createSymlinkForWebDomain($event_name, $data) { + $homeDirectories = glob(sprintf('%s/home', $data['new']['document_root']) . '/*', GLOB_ONLYDIR); + + foreach ($homeDirectories as $dir) { + $target = sprintf('%s/web', $data['new']['document_root']); + $link = sprintf('%s/website', $dir); + + $this->createSymlink($target, $link); + } + } + + public function createSymlinkForShellUser($event_name, $data) { + $target = sprintf('%s/web', $data['new']['dir']); + $link = sprintf('%s/home/%s/website', $data['new']['dir'], $data['new']['username']); + + $this->createSymlink($target, $link); + } + + private function createSymlink($target, $link) { + global $app; + + if (file_exists($link)) { + $app->log(sprintf('Not creating symlink because "%s" already exists', $link), LOGLEVEL_DEBUG); + + return; + } + + if ($app->system->create_relative_link($target, $link)) { + $app->log(sprintf('Created symlink from "%s" to "%s"', $link, $target), LOGLEVEL_DEBUG); + } else { + $app->log(sprintf('Failed to create symlink from "%s" to "%s"', $link, $target), LOGLEVEL_WARN); + } + } +} \ No newline at end of file diff --git a/server/plugins-available/xmpp_plugin.inc.php b/server/plugins-available/xmpp_plugin.inc.php index 128a88ebb47e76d9ce51dc1b05f578fc15a9ab2b..7803e632366088ff997df52038db62b88ee7c72d 100644 --- a/server/plugins-available/xmpp_plugin.inc.php +++ b/server/plugins-available/xmpp_plugin.inc.php @@ -33,7 +33,8 @@ class xmpp_plugin { var $plugin_name = 'xmpp_server_plugin'; var $class_name = 'xmpp_server_plugin'; - var $xmpp_config_dir = '/etc/metronome'; + var $daemon; + var $xmpp_config_dir; var $ssl_certificate_changed = false; var $ssl_certificate_deleted = false; @@ -57,8 +58,8 @@ class xmpp_plugin { */ function onLoad() { - global $app; - + global $app, $conf; + $app->uses("getconf"); /* Register for the events */ @@ -77,6 +78,11 @@ class xmpp_plugin { $app->plugins->registerEvent('xmpp_user_update', 'xmpp_plugin', 'userUpdate'); $app->plugins->registerEvent('xmpp_user_delete', 'xmpp_plugin', 'userDelete'); + // set some params + $xmpp_config = $app->getconf->get_server_config($conf['server_id'], 'xmpp'); + $daemon = $xmpp_config['xmpp_daemon']; + $this->daemon = $daemon; + $this->xmpp_config_dir = "/etc/${daemon}"; } function insert($event_name, $data) { @@ -93,13 +99,12 @@ class xmpp_plugin { // get the config $app->uses("getconf,system,tpl"); - $old_ini_data = $app->ini_parser->parse_ini_string($data['old']['config']); $xmpp_config = $app->getconf->get_server_config($conf['server_id'], 'xmpp'); // Global server config $tpl = new tpl(); - $tpl->newTemplate('metronome_conf_global.master'); + $tpl->newTemplate("xmpp_{$this->daemon}_conf_global.master"); $tpl->setVar('ipv6', $xmpp_config['xmpp_use_ipv6']=='y'?'true':'false'); $tpl->setVar('bosh_timeout', intval($xmpp_config['xmpp_bosh_max_inactivity'])); $tpl->setVar('port_http', intval($xmpp_config['xmpp_port_http'])); @@ -121,7 +126,7 @@ class xmpp_plugin { $app->system->file_put_contents($this->xmpp_config_dir.'/global.cfg.lua', $tpl->grab()); unset($tpl); - $app->services->restartServiceDelayed('metronome', 'restart'); + $app->services->restartServiceDelayed('xmpp', 'restart'); return; } @@ -129,6 +134,8 @@ class xmpp_plugin { global $app, $conf; $this->domainUpdate($event_name, $data); + // Need to restart the server + $app->services->restartServiceDelayed('xmpp', 'restart'); } @@ -144,10 +151,14 @@ class xmpp_plugin { // Create main host file $tpl = new tpl(); - $tpl->newTemplate('metronome_conf_host.master'); + $tpl->newTemplate("xmpp_{$this->daemon}_conf_host.master"); + $tpl->setVar('main_host', $conf['serverconfig']['server']['hostname']); $tpl->setVar('domain', $data['new']['domain']); $tpl->setVar('active', $data['new']['active'] == 'y' ? 'true' : 'false'); $tpl->setVar('public_registration', $data['new']['public_registration'] == 'y' ? 'true' : 'false'); + $tpl->setVar('registration_url', $data['new']['registration_url']); + $tpl->setVar('registration_message', $data['new']['registration_message']); + // Domain admins $admins = array(); foreach(explode(',',$data['new']['domain_admins']) AS $adm){ @@ -156,6 +167,8 @@ class xmpp_plugin { $tpl->setVar('domain_admins', "\t\t\"".implode("\",\n\t\t\"",$admins)."\"\n"); // Enable / Disable features + $tpl->setVar('use_status_host', $data['new']['use_status_host'] == 'y' ? 'true' : 'false'); + $tpl->setVar('use_webpresence', $data['new']['use_webpresence'] == 'y' ? 'true' : 'false'); if($data['new']['use_pubsub']=='y'){ $tpl->setVar('use_pubsub', 'true'); $status_comps[] = 'pubsub.'.$data['new']['domain']; @@ -182,11 +195,27 @@ class xmpp_plugin { }else{ $tpl->setVar('use_vjud', 'false'); } + if($data['new']['use_muc_host']=='y'){ + $tpl->setVar('use_http_upload', 'true'); + $status_comps[] = 'upload.'.$data['new']['domain']; + }else{ + $tpl->setVar('use_http_upload', 'false'); + } $tpl->setVar('use_muc', $data['new']['use_muc_host']=='y'?'true':'false'); if($data['new']['use_muc_host'] == 'y'){ $status_comps[] = 'muc.'.$data['new']['domain']; - $tpl->setVar('muc_restrict_room_creation', $data['new']['muc_restrict_room_creation']); + switch($data['new']['muc_restrict_room_creation']) { + case 'n': + $tpl->setVar('muc_restrict_room_creation', 'false'); + break; + case 'y': + $tpl->setVar('muc_restrict_room_creation', 'admin'); + break; + case 'm': + $tpl->setVar('muc_restrict_room_creation', 'local'); + break; + } $tpl->setVar('muc_name', strlen($data['new']['muc_name']) ? $data['new']['muc_name'] : $data['new']['domain'].' Chatrooms'); // Admins for MUC channels $admins = array(); @@ -210,18 +239,29 @@ class xmpp_plugin { $app->system->file_put_contents($this->xmpp_config_dir.'/hosts/'.$data['new']['domain'].'.cfg.lua', $tpl->grab()); unset($tpl); - // Create status host file - if($data['new']['use_status_host']=='y'){ - $tpl = new tpl; - $tpl->newTemplate('metronome_conf_status.master'); - $tpl->setVar('domain', $data['new']['domain']); - $tpl->setVar('status_hosts', "\t\t\"".implode("\",\n\t\t\"",$status_hosts)."\"\n"); - $tpl->setVar('status_comps', "\t\t\"".implode("\",\n\t\t\"",$status_comps)."\"\n"); - $app->system->file_put_contents($this->xmpp_config_dir.'/status/'.$data['new']['domain'].'.cfg.lua', $tpl->grab()); - unset($tpl); - } - - $app->services->restartServiceDelayed('metronome', 'reload'); + // Create http host file + //$tpl = new tpl; + //$tpl->newTemplate("xmpp_{$this->daemon}_conf_status.master"); + //$tpl->setVar('domain', $data['new']['domain']); + //$httpMods = 0; + //$tpl->setVar('use_webpresence', $data['new']['use_webpresence'] == 'y' ? 'true' : 'false'); + //if($data['new']['use_webpresence']=='y') { + // $httpMods++; + //} + //$tpl->setVar('use_status_host', $data['new']['use_status_host'] == 'y' ? 'true' : 'false'); + //if($data['new']['use_status_host']=='y'){ + // $httpMods++; + // $tpl->setVar('status_hosts', "\t\t\"".implode("\",\n\t\t\"",$status_hosts)."\"\n"); + // $tpl->setVar('status_comps', "\t\t\"".implode("\",\n\t\t\"",$status_comps)."\"\n"); + //} + //if($httpMods > 0){ + // $app->system->file_put_contents($this->xmpp_config_dir.'/status/'.$data['new']['domain'].'.cfg.lua', $tpl->grab()); + //} else { + // unlink($this->xmpp_config_dir.'/status/'.$data['new']['domain'].'.cfg.lua'); + //} + //unset($tpl); + + $app->services->restartServiceDelayed('xmpp', 'reload'); } function domainDelete($event_name, $data){ @@ -230,20 +270,30 @@ class xmpp_plugin { // get the config $app->uses("system"); $domain = $data['old']['domain']; - $folder = str_replace('-', '%2d', str_replace('.', '%2e', $str = urlencode($domain))); // Remove config files - $app->system->unlink("/etc/metronome/hosts/$domain.cfg.lua"); - $app->system->unlink("/etc/metronome/status/$domain.cfg.lua"); - $app->system->unlink("/etc/metronome/certs/$domain.cert"); - $app->system->unlink("/etc/metronome/certs/$domain.key"); - $app->system->unlink("/etc/metronome/certs/$domain.csr"); + $app->system->unlink("/etc/{$this->daemon}/hosts/$domain.cfg.lua"); + $app->system->unlink("/etc/{$this->daemon}/status/$domain.cfg.lua"); + if($this->daemon === 'prosody') + $app->system->unlink("/etc/{$this->daemon}/certs/$domain.crt"); + else + $app->system->unlink("/etc/{$this->daemon}/certs/$domain.cert"); + $app->system->unlink("/etc/{$this->daemon}/certs/$domain.key"); + $app->system->unlink("/etc/{$this->daemon}/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); + $folder = str_replace('-', '%2d', str_replace('.', '%2e', $str = urlencode($domain))); + + exec("rm -rf /var/lib/{$this->daemon}/{$folder}"); + exec("rm -rf /var/lib/{$this->daemon}/*%2e{$folder}"); + switch($this->daemon) { + case 'metronome': + break; + case 'prosody': + exec("php /usr/local/lib/prosody/auth/prosody-purge domain {$domain}"); + break; + } - $app->services->restartServiceDelayed('metronome', 'reload'); + $app->services->restartServiceDelayed('xmpp', 'restart'); } function userInsert($event_name, $data){ @@ -263,8 +313,17 @@ class xmpp_plugin { // Check domain for auth settings // Don't allow manual user deletion for mailaccount controlled domains - // Remove account from metronome - exec('metronomectl deluser '.$data['old']['jid']); + $jid_parts = explode('@', $data['old']['jid']); + + switch($this->daemon) { + case 'metronome': + // Remove account from metronome + exec("{$this->daemon}ctl deluser {$data['old']['jid']}"); + break; + case 'prosody': + exec("php /usr/local/lib/prosody/auth/prosody-purge user {$jid_parts[1]} {$jid_parts[0]}"); + break; + } } // Handle the creation of SSL certificates @@ -275,14 +334,18 @@ class xmpp_plugin { // load the server configuration options $app->uses('getconf'); - $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - $ssl_dir = '/etc/metronome/certs'; + $ssl_dir = "/etc/{$this->daemon}/certs"; $domain = $data['new']['domain']; $cnf_file = $ssl_dir.'/'.$domain.'.cnf'; $key_file = $ssl_dir.'/'.$domain.'.key'; $csr_file = $ssl_dir.'/'.$domain.'.csr'; - $crt_file = $ssl_dir.'/'.$domain.'.cert'; + if ($this->daemon === 'prosody') { + $crt_file = $ssl_dir.'/'.$domain.'.crt'; + } else { + $crt_file = $ssl_dir.'/'.$domain.'.cert'; + } + //* Create a SSL Certificate, but only if this is not a mirror server. if($data['new']['ssl_action'] == 'create' && $conf['mirror_server_id'] == 0) { @@ -294,14 +357,14 @@ class xmpp_plugin { if(file_exists($key_file)){ $app->system->rename($key_file, $key_file.'.bak'); $app->system->chmod($key_file.'.bak', 0400); - $app->system->chown($key_file.'.bak', 'metronome'); + $app->system->chown($key_file.'.bak', $this->daemon); } if(file_exists($csr_file)) $app->system->rename($csr_file, $csr_file.'.bak'); if(file_exists($crt_file)) $app->system->rename($crt_file, $crt_file.'.bak'); // Write new CNF file $tpl = new tpl(); - $tpl->newTemplate('metronome_conf_ssl.master'); + $tpl->newTemplate('xmpp_conf_ssl.master'); $tpl->setVar('domain', $domain); $tpl->setVar('ssl_country', $data['new']['ssl_country']); $tpl->setVar('ssl_locality', $data['new']['ssl_locality']); @@ -311,13 +374,17 @@ 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)"); + exec("(cd /etc/{$this->daemon}/certs && make $domain.key)"); + exec("(cd /etc/{$this->daemon}/certs && make $domain.csr)"); + if ($this->daemon === 'prosody') { + exec("(cd /etc/{$this->daemon}/certs && make $domain.crt)"); + } else { + exec("(cd /etc/{$this->daemon}/certs && make $domain.cert)"); + } $ssl_key = $app->system->file_get_contents($key_file); $app->system->chmod($key_file, 0400); - $app->system->chown($key_file, 'metronome'); + $app->system->chown($key_file, $this->daemon); $ssl_request = $app->system->file_get_contents($csr_file); $ssl_cert = $app->system->file_get_contents($crt_file); /* Update the DB of the (local) Server */ @@ -338,7 +405,7 @@ class xmpp_plugin { if(file_exists($key_file)){ $app->system->rename($key_file, $key_file.'.bak'); $app->system->chmod($key_file.'.bak', 0400); - $app->system->chown($key_file.'.bak', 'metronome'); + $app->system->chown($key_file.'.bak', $this->daemon); } if(file_exists($csr_file)) $app->system->rename($csr_file, $csr_file.'.bak'); if(file_exists($crt_file)) $app->system->rename($crt_file, $crt_file.'.bak'); @@ -353,7 +420,7 @@ class xmpp_plugin { if(trim($data["new"]["ssl_key"]) != '') { $app->system->file_put_contents($key_file, $data["new"]["ssl_key"]); $app->system->chmod($key_file, 0400); - $app->system->chown($key_file, 'metronome'); + $app->system->chown($key_file, $this->daemon); } else { $ssl_key = $app->system->file_get_contents($key_file); /* Update the DB of the (local) Server */ diff --git a/server/scripts/create_jailkit_chroot.sh b/server/scripts/create_jailkit_chroot.sh index cc39b6e4cf1767d9a93c4db5b657c46c06cce891..9ddfb3834809fdf14824c25d381c1f8d0b17aae4 100755 --- a/server/scripts/create_jailkit_chroot.sh +++ b/server/scripts/create_jailkit_chroot.sh @@ -44,3 +44,8 @@ if [ -e "/var/run/mysqld/mysqld.sock" ] then ln /var/run/mysqld/mysqld.sock $CHROOT_HOMEDIR/var/run/mysqld/mysqld.sock fi +# copy zone info +if [ ! -d "$CHROOT_HOMEDIR/usr/share/zoneinfo" ] +then + jk_cp -v -j $CHROOT_HOMEDIR/ /usr/share/zoneinfo +fi \ No newline at end of file diff --git a/server/scripts/vlogger b/server/scripts/vlogger index 5bc50f31833c2eb08e495c607c7a2cc473d25767..4e60254d0eea218602e2d8b80909137c0c957bdb 100755 --- a/server/scripts/vlogger +++ b/server/scripts/vlogger @@ -28,7 +28,12 @@ # 1.1 bugfix release # 1.2 support for mod_logio # 1.3 various contributed bugfixes -# 1.3ISPconfig1 This local version has been modified for ISPConfig. Namely: "Added better error handling to vlogger script in case the MySQL database connection is not available." +# 1.4 automatically creates two levels of subdirs. +# 1.4p1 implemented anonymization of ipv4 and ipv6 +# 1.4p2 implemented anonymization in error log part +# 1.4p3 implemented stronger anonymization +# 1.4p4 implemented re-opening on externally rotated error.log +# 1.4p5 backported old ISPConfig changes (improved DBI error handling, naming) # # # TODO: @@ -39,7 +44,7 @@ package vlogger; $ENV{PATH} = "/bin:/usr/bin"; -my $VERSION = "1.3"; +my $VERSION = "1.4p5"; # modified for ISPConfig =head1 NAME @@ -109,6 +114,12 @@ or "%m%d%Y-error.log". When using the -r option, the default becomes -d CONFIG Use the DBI usage tracker. +-p + Privacy mode (delete last octet of ipv4 or last 4 sections of ipv6) + +-P + Extended privacy mode (delete 2 octets ipv4 or 5 sections ipv6) + -h Displays help. @@ -148,10 +159,12 @@ use sigtrap qw(handler exitall HUP USR1 TERM INT PIPE); use Date::Format; use Getopt::Std; use IO::Handle; +use File::Path qw(make_path); +use File::Basename; # get command line options our %OPTS; -getopts( 'f:t:s:hu:g:aeivr:d:', \%OPTS ); +getopts( 'f:t:s:hu:g:aeinpPvr:d:', \%OPTS ); # print out version if ( $OPTS{'v'} ) { @@ -171,7 +184,7 @@ if ( $OPTS{'h'} || !$ARGV[0] ) { # log directory my $LOGDIR; if ( $ARGV[0] ) { - if ( !-d $ARGV[0] || -l $ARGV[0]) { + if ( !-d $ARGV[0] || -l $ARGV[0] ) { print STDERR "[vlogger] target directory $ARGV[0] does not exist or is a symlink - exiting.\n\n"; exit; @@ -253,13 +266,13 @@ if ( $OPTS{'d'} ) { } # test the connection - eval { - my $dbh = DBI->connect( $DBI_DSN, $DBI_USER, $DBI_PASS ) - or die "DBI Error: $!"; - $dbh->disconnect; - }; - if ($@) { - print "MySQL Connection problem\n"; + eval { + my $dbh = DBI->connect( $DBI_DSN, $DBI_USER, $DBI_PASS ) + or die "DBI Error: $!"; + $dbh->disconnect; + }; + if($@) { + print "MySQL Connection problem\n"; } # SIGALRM dumps the tracker hash @@ -317,7 +330,7 @@ if ( $OPTS{'s'} ) { # chroot to the logdir chdir($LOGDIR); -#chroot("."); we better do not chroot as DBI requires to load a module on the fly -> error! +#chroot("."); #we better do not chroot as DBI requires to load a module on the fly -> error! my %logs = (); my %tracker = (); @@ -367,6 +380,25 @@ if ( $OPTS{'e'} ) { $LASTWRITE = time(); } +# my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, +# $atime,$mtime,$ctime,$blksize,$blocks) +# = stat(time2str( $TEMPLATE, time() )); + my @fstat = ELOG->stat(); + my $nlinks = $fstat[3]; + if($nlinks < 1) { + close ELOG; + open ELOG, ">>" . time2str( $TEMPLATE, time() ) + or die ( "can't open $LOGDIR/" . time2str( $TEMPLATE, time() ) ); + } + + if ( $OPTS{'P'} ) { + $log_line =~ s/^(.*?\[client\s+\d+\.\d+)\.\d+\.\d+((?::\d+)?\]\s+.*)/$1.0.0$2/g; + $log_line =~ s/^(.*?\[client\s+[a-f0-9]*:[a-f0-9]*:[a-f0-9]*)(?::[a-f0-9]*){2,5}((?::\d+)?\]\s+.*)/$1::0$2/g; + } elsif ( $OPTS{'p'} ) { + $log_line =~ s/^(.*?\[client\s+\d+\.\d+\.\d+)\.\d+((?::\d+)?\]\s+.*)/$1.0$2/g; + $log_line =~ s/^(.*?\[client\s+[a-f0-9]*:[a-f0-9]*:[a-f0-9]*:[a-f0-9]*)(?::[a-f0-9]*){1,4}((?::\d+)?\]\s+.*)/$1::0$2/g; + } + # we dont need to do any other parsing at all, so write the line. print ELOG $log_line; } @@ -378,6 +410,15 @@ else { $0 = "vlogger (access log)"; while ( my $log_line = ) { + + if ( $OPTS{'P'} ) { + $log_line =~ s/^(\S*\s+\d+\.\d+)\.\d+\.\d+(\s+.*)/$1.0.0$2/g; + $log_line =~ s/^(\S*\s+[a-f0-9]*:[a-f0-9]*:[a-f0-9]*)(?::[a-f0-9]*){2,5}(\s+.*)/$1::0$2/g; + } elsif($OPTS{'p'}) { + $log_line =~ s/^(\S*\s+\d+\.\d+\.\d+)\.\d+(\s+.*)/$1.0$2/g; + $log_line =~ s/^(\S*\s+[a-f0-9]*:[a-f0-9]*:[a-f0-9]*:[a-f0-9]*)(?::[a-f0-9]*){1,4}(\s+.*)/$1::0$2/g; + } + # parse out the first word (the vhost) my @this_line = split ( /\s/, $log_line ); my ($vhost) = $this_line[0]; @@ -386,7 +427,7 @@ else { if ( $vhost =~ m#[/\\]# ) { $vhost = "default" } $vhost =~ /(.*)/o; $vhost = $1; - $vhost = 'default' unless $vhost; + $vhost = 'default' unless $vhost; if ( $OPTS{'i'} ) { $reqsize = $this_line[1] + $this_line[2]; @@ -425,20 +466,24 @@ else { delete( $logs{$key} ); } + my $filename = "${vhost}/" . time2str( $TEMPLATE, time() ); + my $filepath = dirname($filename); + # check if directory is there - unless ( -d "${vhost}" ) { - mkdir("${vhost}"); + unless ( -d $filepath ) { + print "mkdir: " . $filepath . "\n"; + make_path($filepath) + or die ( "can't mkdir $filepath" ); + } + + # Dont log to symlinks + if( -l "${vhost}/".time2str( $TEMPLATE, time() ) ) { + die("Log target is a symlink: $LOGDIR/${vhost}/".time2str( $TEMPLATE, time() )); } - - # Dont log to symlinks - if( -l "${vhost}/".time2str( $TEMPLATE, time() ) ) { - die("Log target is a symlink: $LOGDIR/${vhost}/".time2str( $TEMPLATE, time() )); - } # open the file using the template - open $vhost, ">>${vhost}/" . time2str( $TEMPLATE, time() ) - or die ( "can't open $LOGDIR/${vhost}/" - . time2str( $TEMPLATE, time() ) ); + open $vhost, ">>".$filename + or die ( "can't open $filename" ); # autoflush the handle unless -a if ( !$OPTS{'a'} ) { @@ -465,9 +510,9 @@ else { $log_line =~ s/^\S*\s+//o; } - if ( $reqsize =~ m/^\d*$/ && $reqsize > 0 ) { - $tracker{$vhost} += $reqsize; - } + if ( $reqsize =~ m/^\d+$/ && $reqsize > 0 ) { + $tracker{$vhost} += $reqsize; + } print $vhost $log_line; @@ -515,7 +560,7 @@ sub open_errorlog { # sub to update the database with the tracker data sub dump_tracker { eval { - if ( keys(%tracker) > 0 ) { + if ( keys(%tracker) > 0 ) { my $dbh = DBI->connect( $DBI_DSN, $DBI_USER, $DBI_PASS ) or warn "DBI Error: $!"; foreach my $key ( keys(%tracker) ) { @@ -541,7 +586,8 @@ sub dump_tracker { %tracker = (); } alarm $DBI_DUMP; - }; + }; + if ($@) { print "Unable to store vlogger data in database\n"; } @@ -562,6 +608,10 @@ sub usage { print " -s SYMLINK maintain a symlink to most recent file\n"; print " -r SIZE rotate when file reaches SIZE\n"; print " -d CONFIG use DBI usage tracker (see perldoc vlogger)\n"; + print " -p Privacy mode (delete last octet of ipv4 or\n"; + print " last 4 sections of ipv6)\n"; + print " -P Extended privacy mode (delete 2 octets ipv4\n"; + print " or last 5 sections of ipv6\n"; print " -i extract mod_logio instead of filesize\n"; print " -h display this help\n"; print " -v output version information\n\n"; diff --git a/server/server.php b/server/server.php index 689cb174901017229d480e1f3dc920375303507a..106d3edc654f4dd9974b76fca0f183d1dd2d56cd 100644 --- a/server/server.php +++ b/server/server.php @@ -61,7 +61,7 @@ $conf['server_id'] = intval($conf['server_id']); /* * Try to Load the server configuration from the master-db */ -if ($app->dbmaster->connect_error == NULL) { +if ($app->dbmaster->testConnection()) { $server_db_record = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = ?", $conf['server_id']); if(!is_array($server_db_record)) die('Unable to load the server configuration from database.'); @@ -152,7 +152,7 @@ $needStartCore = true; /* * Next we try to process the datalog */ -if ($app->db->connect_error == NULL && $app->dbmaster->connect_error == NULL) { +if ($app->db->testConnection() && $app->dbmaster->testConnection()) { // Check if there is anything to update if ($conf['mirror_server_id'] > 0) { @@ -187,7 +187,7 @@ if ($app->db->connect_error == NULL && $app->dbmaster->connect_error == NULL) { $needStartCore = false; } else { - if ($app->db->connect->connect_error == NULL) { + if (!$app->db->connect->testConnection()) { $app->log('Unable to connect to local server.' . $app->db->errorMessage, LOGLEVEL_WARN); } else { $app->log('Unable to connect to master server.' . $app->dbmaster->errorMessage, LOGLEVEL_WARN);
    {tmpl_var name='search_limit'}{tmpl_var name='search_limit'}
    +
    {tmpl_var name="last_month"} {tmpl_var name="this_year"} {tmpl_var name="last_year"}{tmpl_var name="quota"}{tmpl_if name="progressbar" op="!=" value="-1"}
    +
    {tmpl_var name="percentage"}%
    +
    {/tmpl_if}
    {tmpl_var name="sum_last_month"} {tmpl_var name="sum_this_year"} {tmpl_var name="sum_last_year"}